Files
motor-de-encuestas/sprints/sprint-4/BRIEF.md
markosbenitez 5987502664 feat(schema): esquema declarativo + seed v3 del formulario [4B]
Extiende questions con instance_generator/instance_of/hint.
Instrumento v3 completo (10 secciones, 50 preguntas) como datos declarativos.
Operadores de flujo para multiple_choice: contains, eq_sole.
Flujo del formulario en el esquema, no en presentación (ADR-005).
Seed solo reemplaza catálogo; no toca evidencia de consentimiento (ADR-003).
2026-06-22 21:05:11 -03:00

4.2 KiB

BRIEF — Sprint 4: Formulario Wizard v3

Versión objetivo: 3.0.0 · Rama de trabajo: main · Preservación: v2.1.0-stable


Objetivo en una frase

Reescribir el formulario de encuesta como un wizard pregunta-por-pantalla con mini-wizard anidado para vínculos familiares, sobre un nuevo instrumento de 10 secciones, habilitando análisis de datos multi-instancia.


Alcance (qué entra)

  • Nuevo modelo de datos: columna instance_id en answers, nueva constraint única
  • Nuevo instrumento v3 (10 secciones, ~38 preguntas base + preguntas por instancia)
  • Motor de wizard: grafo de pantallas, navegación, estado, instancias dinámicas
  • Componente de pantalla única (una pregunta por pantalla)
  • Mini-wizard anidado para vínculos familiares (pregunta 4.1 → instancias)
  • Autocomplete de barrios desde dataset INE/DGEEC (geo_paraguay.json)
  • Subtítulos del "porqué" por sección
  • Submit actualizado para enviar instance_id por answer
  • Barra de progreso dinámica
  • RPCs nuevas para preguntas de vínculo con instancias
  • Seed v3 limpio (sin migración de datos v2)

Fuera de alcance (explícito)

  • Migración de datos v2.1 → v3 (se decide más adelante, cuando v3 esté estable)
  • Tocar la rama v2.1.0-stable
  • RE Index (sprint posterior)
  • Informe descargable (sprint posterior)
  • Autenticación de /admin/responses (TECH-DEBT-008)
  • Backup remoto S3 (TECH-DEBT-006)

Decisiones ya tomadas (no renegociar)

  1. v3 se desarrolla en main. v2 queda preservado en v2.1.0-stable + tag v2.1.0.
  2. v3 arranca con seed limpio — sin datos migrados.
  3. instance_id text DEFAULT 'default' en answers. Constraint: UNIQUE (response_id, question_id, instance_id).
  4. Wizard pregunta-por-pantalla para TODO el formulario tras el consentimiento.
  5. Mini-wizard de familiares: una pregunta por pantalla, con badge de contexto "Familiar X de N".
  6. Numeración desde Sección 1 (no "Sección A").
  7. Barrio: autocomplete para ciudades con datos INE, texto libre para el resto.
  8. Texto de consentimiento: el del Excel del instrumento v3 (Sección 1).
  9. Versionado SemVer + CHANGELOG + tags de Git en cada versión estable.
  10. 2-3 familiares es el caso típico; soportar N sin límite duro.

Criterios de éxito (checklist)

  • El formulario funciona end-to-end como wizard, una pregunta por pantalla
  • El mini-wizard de familiares genera instancias correctamente (verificable en DB)
  • Los datos se guardan con instance_id correcto por familiar
  • El dashboard sigue funcionando (las preguntas no-instancia usan instance_id='default')
  • Las nuevas RPCs agregan datos de vínculo por instancia
  • El autocomplete de barrios funciona para las ciudades principales
  • La validación visual del wizard coincide con el mockup aprobado
  • v2.1.0-stable permanece intacta y restaurable

Etapas del Sprint 4

Etapa Nombre Entregable Dependencia
4.0 Preservación v2 Tag v2.1.0, rama stable, dump, CHANGELOG
4A Modelo de datos Migración instance_id + constraint 4.0
4B Seed v3 Instrumento v3 completo en seed.sql + geo JSON 4A
4C Motor del wizard Grafo de pantallas, estado, navegación (lógica) 4B
4D Componente de pantalla UI una-pregunta-por-pantalla + secciones 4C
4E Mini-wizard instancias Vínculos 4.1 + pantallas por familiar 4D
4F Autocomplete barrios Campo barrio con dataset INE 4D
4G Submit con instance_id Guardado correcto multi-instancia 4E
4H RPCs de vínculo Agregados de datos por instancia en dashboard 4G
4I Validación e2e + tag v3.0.0 QA visual completo + release todas

Orden de ejecución

4.0 → 4A → 4B → 4C → 4D → (4E ∥ 4F) → 4G → 4H → 4I

Las etapas 4E y 4F pueden ir en paralelo si hay capacidad; si no, 4E primero (es la más crítica), 4F después.


Notas de versionado por etapa

  • Cada etapa cierra con un commit versionado descriptivo.
  • Las versiones 3.0.0-alpha.N se pueden usar para hitos intermedios si se despliega a un entorno de prueba.
  • El tag v3.0.0 se crea solo en la etapa 4I, cuando todo está validado.