feat(data): agregar instance_id a answers para multi-instancia [4A]
Habilita respuestas múltiples por pregunta (mini-wizard de vínculos). Nueva constraint UNIQUE(response_id, question_id, instance_id). Aplicada en producción. Parte del Sprint 4 hacia v3.0.0.
This commit is contained in:
@@ -106,9 +106,20 @@ id uuid pk
|
||||
response_id uuid fk -> responses(id)
|
||||
question_id uuid fk -> questions(id)
|
||||
value jsonb not null -- texto: "x" | matriz: {"rows":{...}} | ranking: [3,1,2] | etc.
|
||||
instance_id text not null default 'default'
|
||||
-- 'default' → preguntas normales (la gran mayoría)
|
||||
-- 'familiar_1', 'familiar_2', ... → instancias del mini-wizard de vínculos (4A, Sprint 4)
|
||||
UNIQUE (response_id, question_id, instance_id) -- constraint: answers_response_question_instance_key
|
||||
```
|
||||
> El texto libre (`text_long`) **no** se expone al store analítico crudo: la capa de reportes lee
|
||||
> categorías derivadas, no `value` crudo de preguntas abiertas (regla no negociable #4).
|
||||
>
|
||||
> **Patrón `instance_id` (v3.0.0):** la pregunta 4.1 ("¿Tenés familiar con discapacidad/adulto
|
||||
> mayor a cargo?") dispara el mini-wizard. Por cada familiar declarado se genera un conjunto de
|
||||
> respuestas para las preguntas 4.2, 4.3, etc., cada una con su propio `instance_id`. Las RPCs
|
||||
> de dashboard que agregan datos de vínculo operan sobre filas donde `instance_id != 'default'`.
|
||||
> Las RPCs existentes de v2 no se modifican: siguen usando `instance_id = 'default'` implícitamente
|
||||
> (las preguntas de vínculo no estaban en el instrumento v2).
|
||||
|
||||
### `consent_versions` — textos de consentimiento versionados
|
||||
```sql
|
||||
|
||||
Reference in New Issue
Block a user