-- ============================================================
-- Seed: Etapa 1 — Encuesta de Mapeo de Cuidadores
--
-- Carga:
--   1. 1 organización de prueba
--   2. 1 consent_version v1 (scopes: operativo + macro_n1)
--   3. 1 encuesta "Mapeo de Cuidadores" (anónima, sensible, confidencial, Modo A)
--   4. 9 preguntas con códigos del mockup:
--      B1 (yes_no), B2, B4, B5 — situación de cuidado (B5 is_sensitive=true)
--      C1 (yes_no)              — impacto laboral
--      D1 (yes_no)              — apoyo recibido
--      G4 (single_choice)       — frecuencia de estrés [condicional a C1=yes]
--      H1 (multiple_choice, max_select=3) — apoyo preferido
--      H3 (text_long)           — comentarios libres
--   5. conditional_rules: B1 → show B2/B4/B5; C1 → show G4
--
-- UUIDs fijos para reproducibilidad y referencia desde tests.
-- Nota: el mockup original no estaba disponible; los textos de pregunta
-- son diseñados según el contexto "mapeo de cuidadores". Ver ETAPA_1_PROMPT.md.
-- ============================================================

-- UUIDs de referencia:
--   org:          10000000-0000-0000-0000-000000000001
--   consent_v1:   20000000-0000-0000-0000-000000000001
--   survey:       30000000-0000-0000-0000-000000000001
--   q_B1..q_H3:   4000...0001 al 4000...0009

-- ============================================================
-- 1. Organización de prueba
-- ============================================================
INSERT INTO public.organizations (id, name, sector, size_bucket)
VALUES (
    '10000000-0000-0000-0000-000000000001',
    'Empresa Demo S.A.',
    'Servicios',
    '100-500'
)
ON CONFLICT (id) DO NOTHING;

-- ============================================================
-- 2. Versión de consentimiento v1
-- Scopes ofrecidos: operativo (dashboard empresa) + macro_n1 (estudio país anonimizado)
-- NO incluye macro_n3 (atribuible) — decisión de v1 (ADR-001)
-- ============================================================
INSERT INTO public.consent_versions (id, version, body, scopes)
VALUES (
    '20000000-0000-0000-0000-000000000001',
    'v1',
    'Esta encuesta es completamente anónima: no registramos tu nombre, número de documento '
    'ni ningún dato que permita identificarte personalmente. '
    'Tus respuestas se usarán con dos propósitos: '
    '(1) Ayudar a tu empresa a comprender la situación de cuidado de sus colaboradores y '
    'diseñar apoyos más adecuados (uso operativo, solo agregados). '
    '(2) Contribuir a un estudio de alcance nacional sobre la "economía del cuidado" en Paraguay, '
    'utilizando únicamente datos anonimizados e irreversiblemente desvinculados de cualquier empresa '
    '(Nivel 1 anonimizado). '
    'Una vez enviada tu respuesta, al ser anónima, no es posible retirarla ni modificarla. '
    'Podés elegir qué propósitos autorizás marcando las casillas a continuación.',
    '["operativo", "macro_n1"]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- ============================================================
-- 3. Encuesta: Mapeo de Cuidadores
-- Anónima + Sensible (contiene datos de salud/discapacidad) + Confidencial
-- Modo A: nosotros como responsables del tratamiento
-- k_threshold=5: ninguna celda expuesta con n<5
-- ============================================================
INSERT INTO public.surveys (
    id, org_id, title, status,
    is_anonymous, data_sensitivity, security_class, controller_role,
    consent_version_id, k_threshold
)
VALUES (
    '30000000-0000-0000-0000-000000000001',
    '10000000-0000-0000-0000-000000000001',
    'Mapeo de Cuidadores — Edición 2026',
    'draft',
    true,           -- anónima (regla no negociable #2: respondent_id siempre NULL)
    'sensible',     -- contiene preguntas de salud/discapacidad (B5)
    'confidencial', -- acceso restringido a la empresa y analistas internos
    'A',            -- Modo A: InQ es responsable del tratamiento (v1 solo Modo A)
    '20000000-0000-0000-0000-000000000001',
    5               -- umbral k-anonimato por defecto
)
ON CONFLICT (id) DO NOTHING;

-- ============================================================
-- 4. Preguntas de la encuesta
-- Orden: position define el flujo de presentación
-- conditional_rules en el formato: [{ if_question, op, value, action, target }]
--   if_question = code de la pregunta trigger
--   target      = code de la pregunta afectada
-- ============================================================

-- B1: Pregunta disparadora — ¿Tenés persona a cargo?
-- Si es "yes" → se despliegan B2, B4, B5
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, conditional_rules
)
VALUES (
    '40000000-0000-0000-0000-000000000001',
    '30000000-0000-0000-0000-000000000001',
    'B1',
    'yes_no',
    '¿Tenés a cargo a una o más personas con discapacidad permanente o adultos mayores '
    '(60 años o más) que requieran cuidados especiales de forma regular?',
    1,
    false,
    true,
    '[
        {"if_question": "B1", "op": "eq", "value": "yes", "action": "show", "target": "B2"},
        {"if_question": "B1", "op": "eq", "value": "yes", "action": "show", "target": "B4"},
        {"if_question": "B1", "op": "eq", "value": "yes", "action": "show", "target": "B5"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- B2: ¿Cuántas personas a cargo? (condicional a B1=yes)
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, options
)
VALUES (
    '40000000-0000-0000-0000-000000000002',
    '30000000-0000-0000-0000-000000000001',
    'B2',
    'single_choice',
    '¿Cuántas personas a tu cargo requieren cuidado especial?',
    2,
    false,
    false,
    '[
        {"value": "1",   "label": "1 persona"},
        {"value": "2",   "label": "2 personas"},
        {"value": "3+",  "label": "3 o más personas"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- B4: Relación con la persona a cargo (condicional a B1=yes)
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, options
)
VALUES (
    '40000000-0000-0000-0000-000000000003',
    '30000000-0000-0000-0000-000000000001',
    'B4',
    'single_choice',
    '¿Cuál es tu relación con la principal persona que cuidás?',
    3,
    false,
    false,
    '[
        {"value": "hijo_a",    "label": "Hijo/a"},
        {"value": "padre_madre", "label": "Padre, madre o suegro/a"},
        {"value": "conyuge",   "label": "Cónyuge o pareja"},
        {"value": "hermano_a", "label": "Hermano/a"},
        {"value": "otro_familiar", "label": "Otro familiar"},
        {"value": "otra",      "label": "Otra relación"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- B5: Tipo de discapacidad/condición (condicional a B1=yes)
-- is_sensitive=true: contiene datos de salud (categoría especial Ley 7593/2025)
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, options
)
VALUES (
    '40000000-0000-0000-0000-000000000004',
    '30000000-0000-0000-0000-000000000001',
    'B5',
    'multiple_choice',
    '¿Qué tipo de discapacidad o condición tiene la persona que cuidás? '
    '(Podés marcar más de una opción)',
    4,
    true,   -- SENSIBLE: dato de salud/discapacidad (Ley 7593, categoría especial)
    false,
    '[
        {"value": "fisica",       "label": "Física o motriz"},
        {"value": "visual",       "label": "Visual"},
        {"value": "auditiva",     "label": "Auditiva"},
        {"value": "mental",       "label": "Mental o psicosocial"},
        {"value": "intelectual",  "label": "Intelectual o cognitiva"},
        {"value": "am_sin_cert",  "label": "Adulto mayor sin discapacidad certificada"},
        {"value": "otra",         "label": "Otra condición"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- C1: Impacto laboral
-- Si es "yes" → se despliega G4
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, conditional_rules
)
VALUES (
    '40000000-0000-0000-0000-000000000005',
    '30000000-0000-0000-0000-000000000001',
    'C1',
    'yes_no',
    '¿Sentís que tu rol de cuidador/a afecta tu asistencia, puntualidad o rendimiento '
    'en el trabajo?',
    5,
    false,
    true,
    '[
        {"if_question": "C1", "op": "eq", "value": "yes", "action": "show", "target": "G4"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- D1: Apoyo recibido de la empresa
-- Declarada como trigger de sub-preguntas; sub-preguntas se agregan en iteración posterior
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, conditional_rules
)
VALUES (
    '40000000-0000-0000-0000-000000000006',
    '30000000-0000-0000-0000-000000000001',
    'D1',
    'yes_no',
    '¿Tu empresa te ofrece actualmente algún apoyo o beneficio pensado para personas que '
    'cuidan a familiares con discapacidad o adultos mayores?',
    6,
    false,
    true,
    '[]'::jsonb  -- sub-preguntas a agregar en iteración posterior (mockup pendiente)
)
ON CONFLICT (id) DO NOTHING;

-- G4: Frecuencia de estrés (condicional a C1=yes)
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, options
)
VALUES (
    '40000000-0000-0000-0000-000000000007',
    '30000000-0000-0000-0000-000000000001',
    'G4',
    'single_choice',
    '¿Con qué frecuencia la situación de cuidado te genera preocupación o estrés '
    'durante tu jornada laboral?',
    7,
    false,
    false,
    '[
        {"value": "nunca",         "label": "Nunca"},
        {"value": "raramente",     "label": "Raramente (1-2 veces por mes)"},
        {"value": "a_veces",       "label": "A veces (1-2 veces por semana)"},
        {"value": "frecuentemente","label": "Frecuentemente (casi todos los días)"},
        {"value": "siempre",       "label": "Siempre (todos los días)"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- H1: Apoyo preferido (max_select=3)
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required, max_select, options
)
VALUES (
    '40000000-0000-0000-0000-000000000008',
    '30000000-0000-0000-0000-000000000001',
    'H1',
    'multiple_choice',
    '¿Qué tipos de apoyo de parte de la empresa valorarías más? '
    'Elegí hasta 3 opciones.',
    8,
    false,
    false,
    3,  -- max_select=3 (mockup H1)
    '[
        {"value": "horario_flex",   "label": "Horarios flexibles o trabajo híbrido"},
        {"value": "teletrabajo",    "label": "Teletrabajo permanente"},
        {"value": "licencias",      "label": "Licencias especiales para situaciones de cuidado"},
        {"value": "apoyo_eco",      "label": "Apoyo económico o subsidio"},
        {"value": "orientacion",    "label": "Orientación o asesoramiento profesional"},
        {"value": "grupos_apoyo",   "label": "Grupos de apoyo entre pares"},
        {"value": "recursos_ext",   "label": "Conexión con servicios o recursos externos"},
        {"value": "otro",           "label": "Otro (especificar en comentarios)"}
    ]'::jsonb
)
ON CONFLICT (id) DO NOTHING;

-- H3: Texto libre — NO expuesto en el store analítico crudo (regla #4 CLAUDE.md)
INSERT INTO public.questions (
    id, survey_id, code, type, prompt, position,
    is_sensitive, required
)
VALUES (
    '40000000-0000-0000-0000-000000000009',
    '30000000-0000-0000-0000-000000000001',
    'H3',
    'text_long',
    'Si querés compartir algo más sobre tu situación o tenés sugerencias para la empresa, '
    'podés hacerlo acá. (Opcional — tu respuesta es anónima)',
    9,
    false,
    false
)
ON CONFLICT (id) DO NOTHING;
