# F-138 — Documentation (API contract)

## Resumen del cambio de comportamiento
**No hay nuevas rutas ni parámetros públicos.** F-138 corrige una brecha de integridad de datos: al crear una variante de producto, **ahora se inserta inmediatamente una fila en `pricing_variant_prices` con valores por defecto** (`net_unit_amount_cents=0`, `vat_rate='general'`, `currency='EUR'` por defecto de DDL).

## Impacto en la API
- `POST /products` → autovariante `SKU-MV-{id}`: la variante ya creada pasa a tener fila de precio (antes 404 hasta asociar precio).
- `GET /products/:id/variants` (lazy, admin): si crea la variante default, también se sembrará su precio.
- `POST /products/:id/variants`: la variante creada pasa a tener fila de precio.
- `GET /pricing/variants/:variantId`: deja de devolver 404 inmediatamente después de crear una variante (antes devolvía 404 hasta que un admin asociara un precio).

## Idempotencia
El sembrado usa `INSERT ... ON CONFLICT (variant_id) DO NOTHING`, por lo que es re-sembrable sin efecto ni errores (AC2). Mantiene la invariante: **toda variante creada tiene al menos una fila de precio**.

## Best-effort
El sembrado es best-effort dentro de `CreateProductVariant.execute`: si falla (p.ej. error transitorio de BD), la creación de la variante primaria **no** se revierte ni falla. El `variant_id` es UNIQUE/PK por definición de la tabla, por lo que el seed no introduce duplicados.

## Seguridad
- SQL parameterizado (`$1` con el UUID de la variante).
- Valores por defecto son constantes de código, no input de usuario.
- No hay nueva ruta ni query parameter.
