1.6 KiB
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→ autovarianteSKU-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 (
$1con el UUID de la variante). - Valores por defecto son constantes de código, no input de usuario.
- No hay nueva ruta ni query parameter.