Saltar a contenido

ADR-013 — Dominio Campaña / Sorteo

  • Status: accepted (D13 del BRIEF; "única vigente" como invariante en CONSTITUTION)
  • Context: El PDF usa "sorteo" para la campaña entera y para cada evento semanal. Términos sobrecargados generan bugs de alcance (¿"único vigente" aplica a qué?).
  • Alternatives: entidad única "Sorteo" con hijos implícitos; jerarquía explícita (elegida).
  • Decision: Campaña contiene N Sorteos (Sorteo Semana 1..N + Sorteo de cierre). El invariante "único vigente" es sobre Campaña, garantizado a nivel base de datos. Glosario canónico en CONTEXT.md.
  • Consequences: Textos de landing, vigencia, reglas y clave viven en Campaña; fechas, premios asignados y acta viven en cada Sorteo.

Implementation Plan

  • Constraint parcial: única fila campania con estado = 'vigente' (unique index sobre estado filtrado, o columna de exclusión equivalente).
  • La generación de sorteos por regla ("semanal, lunes 10:00") produce filas editables + el cierre.

Verification

  • [ ] Test: segunda campaña a vigente con una ya vigente → rechazada por la DB.
  • [ ] Test: la regla de programación genera 5 semanales + cierre editables.