Al responder "No" en las tres, el formulario salta a 6.4 (no muestra secciones 2-5 ni 6.1-6.3) La pregunta 6.6 aparece antes del cierre Las preguntas multiple_choice muestran el hint "Podés marcar más de una opción"
90 lines
4.7 KiB
Markdown
90 lines
4.7 KiB
Markdown
# OBSERVATIONS.md — Observaciones y breaking changes
|
||
|
||
> Registro de cambios al instrumento que rompen compatibilidad con datos existentes
|
||
> o que requieren atención del director antes/después de re-seedear. No bloquean el
|
||
> trabajo del agente — se documentan para que el director decida qué hacer con los
|
||
> datos ya capturados.
|
||
|
||
---
|
||
|
||
## Etapa 3I2 — Revisión del instrumento v2.1 (feedback equipo médico)
|
||
|
||
### 1. Eliminación de "Prefiero no decir" (Cambio 1)
|
||
Afecta: A5, A6, 1.1, 1.5, 1.6, 1.13, 2.5, 3.1, 3.4.
|
||
|
||
Si existen respuestas guardadas con el valor `"Prefiero no decir"` en alguna de estas
|
||
preguntas, esos valores quedan **huérfanos**: ya no aparecen como opción en el
|
||
formulario ni en `seed.sql`, pero permanecen en `responses.answers` tal cual fueron
|
||
guardados. No se borran ni se migran automáticamente.
|
||
|
||
**Impacto en triggers (1.1, 1.6, 1.13):** estas preguntas ahora tienen solo 2 opciones
|
||
(Sí/No). La lógica condicional (incluyendo el nuevo salto-triple, Cambio 4a) solo
|
||
reacciona a `"Sí"`. Una respuesta histórica `"Prefiero no decir"` en un trigger se
|
||
trataría como "no Sí" a efectos de la lógica condicional si se re-evaluara, pero no
|
||
hay re-evaluación retroactiva de respuestas ya enviadas.
|
||
|
||
### 2. 2.1 cambia de `single_choice` a `multiple_choice` (Cambio 5)
|
||
Respuestas existentes para 2.1 están guardadas como un string único (`"Yo soy el/la
|
||
principal"`, etc.). El formulario nuevo espera un array de strings para preguntas
|
||
`multiple_choice`. Las respuestas históricas de 2.1 quedan en formato de string,
|
||
inconsistente con el nuevo esquema esperado para esa pregunta.
|
||
|
||
Ver `TECH_DEBT.md` → TECH-DEBT-006 (deuda de ranking pendiente sobre esta misma
|
||
pregunta).
|
||
|
||
### 3. Eliminación de la pregunta 2.4 (Cambio 6)
|
||
"¿Contás con apoyo de otras personas para el cuidado?" se elimina del seed por ser
|
||
similar/redundante con 2.1 (feedback del equipo médico).
|
||
|
||
El `DELETE FROM public.questions WHERE survey_id = ...` al inicio de `seed.sql` borra
|
||
la fila de la pregunta 2.4 (id `40000000-0000-0000-0000-000000000027`). Si existen
|
||
filas en `responses` cuyo `answers` referencian `question_id` = 2.4 (por
|
||
`question_id`, no por código embebido en JSON — depende del esquema de `responses`),
|
||
esas referencias quedan apuntando a un `question_id` que ya no existe en `questions`
|
||
tras el re-seed.
|
||
|
||
**No re-seedear la base de producción sin que el director confirme que no hay
|
||
respuestas reales que dependan de 2.4**, o decidir conservar la fila de 2.4 marcada
|
||
como `archived`/inactiva en lugar de borrarla (cambio de diseño — Nivel 3, no
|
||
ejecutado en esta etapa).
|
||
|
||
### 4. Cambio de texto en opción de 3.3 (Cambio 8)
|
||
"Es difícil sostenerlo con mis ingresos" → "No puedo sostenerlo con mis ingresos".
|
||
|
||
Respuestas existentes que eligieron la opción anterior quedan guardadas con el texto
|
||
literal `"Es difícil sostenerlo con mis ingresos"`, que ya no coincide con ninguna
|
||
opción del seed actual. Cualquier agregación por valor exacto de opción debe
|
||
contemplar ambos strings como equivalentes para no perder esos datos en reportes.
|
||
|
||
### 5. División de la primera franja salarial en 3.4 (Cambio 9)
|
||
"Sueldo mínimo – Gs. 5.000.000" se reemplaza por dos opciones nuevas: "Sueldo mínimo"
|
||
y "Gs. 3.000.000 a 5.000.000".
|
||
|
||
Respuestas existentes con el valor `"Sueldo mínimo – Gs. 5.000.000"` quedan con ese
|
||
valor, que ya no existe como opción. No hay forma automática de reasignar esas
|
||
respuestas a una de las dos franjas nuevas (la franja exacta del respondente no se
|
||
puede inferir del valor agregado anterior).
|
||
|
||
### 6. Cambio de texto en última opción de 6.1 (Cambio 10)
|
||
"No, nunca se ha hablado del tema" → "No, no se puede hablar del tema".
|
||
|
||
Respuestas existentes con el valor anterior quedan con ese texto literal, que ya no
|
||
coincide con ninguna opción del seed actual.
|
||
|
||
---
|
||
|
||
## Resumen para el director
|
||
|
||
- Ningún cambio de esta etapa borra datos directamente, salvo el `DELETE` estándar de
|
||
`questions` por `survey_id` (mecanismo de idempotencia ya existente en `seed.sql`,
|
||
no nuevo de esta etapa) — pero ese `DELETE` ahora también elimina la fila de 2.4.
|
||
- Los cambios 1, 8, 9 y 10 dejan **valores de texto huérfanos** en respuestas
|
||
históricas (ya no matchean ninguna opción vigente). No afecta el funcionamiento del
|
||
formulario hacia adelante, pero sí cualquier reporte/agregación que dependa de
|
||
matchear el string exacto de la opción.
|
||
- El cambio 5 (2.1) deja respuestas históricas en un formato (string) distinto al que
|
||
el formulario nuevo produce (array). Si se construye un reporte sobre 2.1, debe
|
||
manejar ambos formatos o normalizarse en una migración de datos aparte.
|
||
- **No se ejecutó ningún re-seed sobre la base real** — esto aplica solo cuando el
|
||
director apruebe re-seedear con `seed.sql` v2.1.
|