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).
5.1 KiB
ETAPA 4B — Esquema declarativo del formulario v3 + seed
1. Objetivo
Definir el formulario de cuidadores v3 como un esquema declarativo persistido:
extender el modelo de questions para soportar instanciación y nuevos operadores
de flujo, y cargar el instrumento completo (10 secciones) en el seed. La lógica del
flujo vive en estos datos, no en el frontend (ver ADR-005).
2. Contexto previo
- ADR-005 define la arquitectura: esquema declarativo, frontend renderer sin reglas.
instance_idya existe enanswers(Etapa 4A).- El esquema actual de
questionsya tieneconditional_rulesJSONB con operadoreseq/eq_anyy acciónshow, auto-target implícito. - El contenido exacto del instrumento v3 está validado en el mockup aprobado
(
wizard_formulario_mapeo_v3.html) y en el ExcelFormulario_Mapeo_Corregido.xlsx. - El dataset de barrios está en
geo_paraguay_full.json(va apublic/data/).
3. DECISIONES YA TOMADAS — no consultar de nuevo
- Se EXTIENDE el modelo existente, no se crea tabla de definición separada (ADR-005).
- Nuevos campos declarativos en
questions:instance_generator boolean DEFAULT false— marca la pregunta que genera instancias (4.1)instance_of text DEFAULT NULL— código del generador del que depende (4.2/4.3 → '4.1')
- Nuevos operadores en
conditional_rules: agregar acciónhidey operador para expresar el salto "Ninguna de las anteriores → salta a sección final". - Secciones con nombre y descripción (el "porqué"): representación a definir por Claude Code
según lo más limpio (tabla
sectionso registros con metadata) — proponer antes de ejecutar. - v3 arranca con seed LIMPIO, sin datos migrados.
- El contenido de preguntas es EXACTAMENTE el del mockup validado.
4. Tareas
4.1 Migración de esquema declarativo
Crear supabase/migrations/20260620000002_form_schema_v3.sql:
- Agregar
instance_generator boolean NOT NULL DEFAULT falseaquestions. - Agregar
instance_of textaquestions(nullable). - Documentar (comentario SQL) el vocabulario extendido de
conditional_rules: operadoreseq,eq_any,not_in; accionesshow,hide. - Idempotente (
IF NOT EXISTS).
4.2 Representación de secciones
Proponer e implementar cómo persistir las 10 secciones con su nombre y descripción ("Texto de ayuda" del Excel). Reportar la propuesta antes de ejecutar si implica cambio de esquema. Las descripciones de sección están en el BRIEF y el mockup.
4.3 Seed v3 del instrumento
Reescribir el seed del survey (o crear seed v3 separado) con las 10 secciones y todas las preguntas EXACTAMENTE como el mockup validado:
- Sección 1: Consentimiento (2 checkboxes: requerido + opcional)
- Sección 2: Datos generales (2.1-2.7)
- Sección 3: Prevalencia discapacidad propia (3.1-3.5; 3.1='No' oculta 3.2-3.5)
- Sección 4: Vinculación familiar (4.1 generador de instancias; 4.2 y 4.3 instance_of='4.1')
- Sección 5: Responsabilidad (5.1-5.4; ocultas si "solo niño sin discapacidad")
- Sección 6: Intensidad (6.1-6.4; idem)
- Sección 7: Impacto laboral (7.1-7.6; idem)
- Sección 8: Impacto económico (8.1-8.4)
- Sección 9: Conciencia organizacional (9.1-9.4)
- Sección 10: Comentarios (10.1)
- Flujo "Ninguna de las anteriores" en 4.1 → salta a Sección 10.
- Todas las opciones, hints ("Podés marcar más de una opción"), y flags is_sensitive exactamente como el mockup.
4.4 Dataset geográfico
Copiar geo_paraguay_full.json a public/data/geo_paraguay.json del repo.
4.5 Actualizar SEED_SPEC.md
Documentar el instrumento v3 completo como contrato (Principio 4 / AP.11).
5. Entregables (DoD)
- Migración de esquema declarativo creada (campos de instanciación).
- Propuesta de representación de secciones reportada (y aplicada si se aprueba).
- Seed v3 con las 10 secciones, contenido exacto del mockup.
instance_generatoryinstance_ofcorrectamente seteados en 4.1/4.2/4.3.- Flujo declarativo: 3.1='No' oculta 3.2-3.5; "Ninguno" en 4.1 salta a S10; "solo niño" oculta S5-S7.
geo_paraguay.jsonenpublic/data/.SEED_SPEC.mdactualizado.- NO ejecutado en producción (solo archivos).
6. Qué reportar
Verificado:
- Migración de esquema creada ✓
- Representación de secciones: [propuesta]
- Seed v3: N preguntas, 10 secciones ✓
- instance_generator/instance_of correctos ✓
- Reglas de flujo declarativas: [listar las 3 reglas principales]
- geo JSON en public/data ✓
- SEED_SPEC.md actualizado ✓
Asumido:
- [supuestos sobre representación de secciones y operadores]
NO ejecutado en producción.
7. Qué NO hacer
- ❌ No ejecutar en producción (lo aplica el director vía CLI del VPS).
- ❌ No poner lógica de flujo en el frontend (es la etapa 4D y será renderer).
- ❌ No migrar datos v2.
- ❌ No tocar v2.1.0-stable.
- ❌ No construir el motor genérico (Fase 2).
8. Versionado
Commit sugerido:
feat(schema): esquema declarativo + seed v3 del formulario [4B]
Extiende questions con instance_generator/instance_of.
Instrumento v3 completo (10 secciones) como datos declarativos.
Flujo del formulario en el esquema, no en presentación (ADR-005).