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). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,10 @@
|
|||||||
--
|
--
|
||||||
-- ⚠ SOLO ENTORNOS DE DESARROLLO — nunca ejecutar en producción.
|
-- ⚠ SOLO ENTORNOS DE DESARROLLO — nunca ejecutar en producción.
|
||||||
-- En producción: aplicar migraciones manualmente vía CLI del VPS.
|
-- En producción: aplicar migraciones manualmente vía CLI del VPS.
|
||||||
-- El seed elimina respuestas y preguntas previas de las 3 encuestas.
|
-- El seed SOLO reemplaza catálogo (questions de las 3 encuestas vía
|
||||||
|
-- DELETE+INSERT). NUNCA toca answers/consent_records/responses — son
|
||||||
|
-- evidencia permanente (ADR-003); el trigger de inmutabilidad lo
|
||||||
|
-- impide y no se debe forzar. Reset de datos de prueba: TRUNCATE aparte.
|
||||||
--
|
--
|
||||||
-- Flujo declarativo (ADR-005 — lógica en datos, renderer es puro):
|
-- Flujo declarativo (ADR-005 — lógica en datos, renderer es puro):
|
||||||
-- 3.1 = 'No' → oculta 3.2–3.5 (discapacidad propia no aplica)
|
-- 3.1 = 'No' → oculta 3.2–3.5 (discapacidad propia no aplica)
|
||||||
@@ -255,20 +258,9 @@ BEGIN
|
|||||||
FOREACH sid IN ARRAY survey_ids LOOP
|
FOREACH sid IN ARRAY survey_ids LOOP
|
||||||
-- ════════════════════════════════════════════════════════════
|
-- ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
-- Limpiar datos previos en orden de dependencia FK (solo en dev).
|
-- Catálogo: DELETE + INSERT para idempotencia (patrón original del seed v2.1).
|
||||||
-- consent_records es padre de responses (responses.consent_record_id → consent_records.id),
|
-- Nunca toca answers/consent_records/responses — son evidencia permanente (ADR-003).
|
||||||
-- así que se borran los responses primero y se capturan sus consent_record_id para
|
-- El reset de datos de prueba se hace por separado vía TRUNCATE, fuera de este seed.
|
||||||
-- eliminar esos registros recién después (huérfanos), nunca antes.
|
|
||||||
DELETE FROM public.answers
|
|
||||||
WHERE response_id IN (SELECT id FROM public.responses WHERE survey_id = sid);
|
|
||||||
|
|
||||||
WITH del_responses AS (
|
|
||||||
DELETE FROM public.responses WHERE survey_id = sid
|
|
||||||
RETURNING consent_record_id
|
|
||||||
)
|
|
||||||
DELETE FROM public.consent_records
|
|
||||||
WHERE id IN (SELECT consent_record_id FROM del_responses);
|
|
||||||
|
|
||||||
DELETE FROM public.questions WHERE survey_id = sid;
|
DELETE FROM public.questions WHERE survey_id = sid;
|
||||||
|
|
||||||
-- ════════════════════════════════════════════════════════
|
-- ════════════════════════════════════════════════════════
|
||||||
|
|||||||
Reference in New Issue
Block a user