Files
mercadodevida/work/artifacts/F-138/documenter.md
2026-08-22 10:22:25 +02:00

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 → 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.