Files
motor-de-encuestas/sprints/sprint-1/ETAPA_1D_PROMPT.md
2026-06-04 14:30:28 -03:00

75 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ETAPA 1D — Actualización del instrumento a v2 (44 preguntas)
> Implementa la revisión del instrumento hecha por la colega del equipo.
> Leé: `CLAUDE.md`, `DATA_MODEL.md`, `SEED_SPEC.md` (v2) y este prompt.
## 1. Objetivo
Actualizar el seed y la app para que reflejen el instrumento v2 de 44 preguntas según `SEED_SPEC.md`.
Dos partes: (A) base de datos en Supabase Cloud, (B) widget `text_short` en el formulario Next.js.
## 2. Contexto previo
La Etapa 1C cerró la fundación de datos con 34 preguntas. Esta etapa la actualiza a 44 por decisión
del equipo. El esquema de tablas NO cambia — solo cambia el contenido del seed. Las columnas `qi_city`
y `qi_country` se agregan en un sprint futuro (no en esta etapa).
## 3. Decisiones ya tomadas
- 44 preguntas con códigos únicos según `SEED_SPEC.md`. Códigos corregidos: 6.4 y 6.5 (las
que en el HTML original eran 6.2 y 6.3 duplicados).
- A1/A2/A3 son tipo `text_short` (texto libre corto), sin opciones. Se guardan en `answers`.
- Pregunta 6.2 = `multiple_choice max_select=3` (NO ranking todavía).
- Pregunta 3.4 (salary) = `is_sensitive=true`. Ninguna vista de org_admin la expone.
- Condicionales: cond-disc-propia (1.1=Sí → 1.21.5), cond-familiar (1.6=Sí → 1.71.12),
cond-adulto-mayor (1.13=Sí → 1.141.16). Reglas en la pregunta dependiente.
- Secciones A, 2, 3, 4, 5, 6, 7 son top-level (siempre visibles).
- RE-INDEX es solo una nota en los textos de `SEED_SPEC.md`; NO agrega columna al esquema.
## 4. Tareas
### 4A — Base de datos
1. Reescribir `supabase/seed.sql` con las 44 preguntas de `SEED_SPEC.md`: tipos, opciones,
`max_select` (6.2=3), `is_sensitive` (marcar las indicadas ✅), `conditional_rules` en
dependientes, `required=false` para todas (el equipo decidió capturar todas las respuestas
para validar el concepto, la obligatoriedad real se define luego).
2. Aplicar a Cloud: `supabase db push --include-seed` o equivalente.
3. Verificar: `SELECT count(*) FROM questions` = **44**; códigos únicos sin duplicados;
pregunta `3.4` con `is_sensitive=true`; los 3 bloques condicionales tienen las reglas correctas.
### 4B — App (formulario Next.js)
4. En `components/widgets/`, crear `text-short-field.tsx`: un `<input type="text">` accesible
(label asociado, aria-required, aria-invalid) con el mismo estilo visual que los otros widgets.
5. En `components/question-renderer.tsx`: registrar `text_short` y renderizarlo con el nuevo widget.
6. Verificar que A1/A2/A3 se renderizan como campos de texto, y que el formulario sigue
funcionando end-to-end (cargar las 44 preguntas desde Supabase, condicionales B/C/D, envío
al resumen).
## 5. Definition of Done
- [ ] `SELECT count(*) FROM questions` = 44 contra Cloud.
- [ ] Códigos únicos: `SELECT code, count(*) FROM questions GROUP BY code HAVING count(*) > 1` = vacío.
- [ ] `3.4` tiene `is_sensitive=true`.
- [ ] Pregunta `A1` con `type='text_short'` y `options=null`.
- [ ] `npm run build` limpio.
- [ ] El formulario en `http://localhost:3000` muestra A1/A2/A3 como campos de texto.
- [ ] B1=Sí despliega 1.21.5; C1=Sí despliega 1.71.12; D1=Sí despliega 1.141.16.
- [ ] `git diff --name-only HEAD` solo con `supabase/seed.sql` + archivos de la app.
## 6. Validaciones automatizadas mandatorias
- Conteo de preguntas: 44 ✓
- Sin códigos duplicados (query arriba) ✓
- `is_sensitive` en exactamente las preguntas marcadas en SEED_SPEC.md ✓
- Al menos una conditional_rule en cada una de las 16 preguntas dependientes ✓
- `npm run build` sin errores ✓
- Si CUALQUIERA falla: NO declarar lista. Reportar y esperar.
## 7. Qué reportar
- Conteo de preguntas y confirmación de código únicos.
- Confirmación de que A1/A2 se renderizan correctamente en el formulario.
- Salida de `git diff --name-only HEAD`.
- Hallazgos, asumidos, decisiones por iniciativa (con nivel).
## 8. Qué NO hacer
- NO agregar columnas `qi_city`/`qi_country` al esquema (es Sprint 3).
- NO implementar widget de ranking (está en backlog).
- NO tocar migraciones 001007.
- NO cambiar la lógica de RLS ni los policies.
- NO exponer `3.4` en ninguna vista o función que sea accesible a org_admin.
- Ante conflicto restricción vs build limpio: **detenerse y reportar**.