From 92a7923a26a3c6a313aeda8b870707df2d57cf0c Mon Sep 17 00:00:00 2001
From: markosbenitez
Date: Wed, 10 Jun 2026 16:55:41 -0300
Subject: [PATCH] Con las encuestas para 3 empresas
---
components/consent-screen.tsx | 14 +-
sprints/sprint-3-infra/ETAPA_3C_PROMPT.md | 189 ++++++++++++++++++++++
supabase/seed.sql | 75 +++++++++
3 files changed, 272 insertions(+), 6 deletions(-)
create mode 100644 sprints/sprint-3-infra/ETAPA_3C_PROMPT.md
diff --git a/components/consent-screen.tsx b/components/consent-screen.tsx
index daace19..af367f5 100644
--- a/components/consent-screen.tsx
+++ b/components/consent-screen.tsx
@@ -26,15 +26,17 @@ export function ConsentScreen({ brandConfig, onAccept }: ConsentScreenProps) {
-
- Diagnóstico interno de {orgName}: tus respuestas ayudan a la empresa
- a entender la realidad de las personas que cuidan a familiares con discapacidad o adultos
- mayores, para diseñar apoyos más adecuados. Solo se trabaja con{' '}
+ Diagnóstico interno de {orgName}: Tus respuestas ayudan a la empresa,
+ en alianza con Fundación Solidaridad, a entender la realidad de las personas que cuidan
+ a familiares con discapacidad o adultos mayores, para diseñar apoyos más adecuados. Solo
+ se trabaja con{' '}
datos agregados — nunca accede a respuestas individuales.
-
- Estudio país (opcional): tus respuestas anonimizadas contribuyen a un
- mapeo nacional sobre la economía del cuidado en Paraguay. Los datos se procesan de
- forma irreversiblemente desvinculada de cualquier empresa o persona.
+ Estudio país (opcional): Tus respuestas serán{' '}
+ anónimas y contribuyen a un mapeo nacional sobre la economía del
+ cuidado en Paraguay. Los datos se procesan de manera que no pueden asociarse a ninguna
+ empresa ni persona.
diff --git a/sprints/sprint-3-infra/ETAPA_3C_PROMPT.md b/sprints/sprint-3-infra/ETAPA_3C_PROMPT.md
new file mode 100644
index 0000000..9c59ebd
--- /dev/null
+++ b/sprints/sprint-3-infra/ETAPA_3C_PROMPT.md
@@ -0,0 +1,189 @@
+# ETAPA 3C — Texto de consentimiento + dos nuevas encuestas piloto
+
+## 1. Objetivo
+Dos cambios independientes:
+1. Actualizar el texto de la pantalla de consentimiento para usar el nombre de empresa
+ dinámico desde la DB y el nuevo wording aprobado.
+2. Insertar en el seed dos nuevas organizaciones y dos nuevos surveys (InQuality y
+ Fundación Solidaridad) como encuestas de espacio de pruebas reales.
+
+---
+
+## 2. Contexto previo
+- El nombre de empresa se lee de `surveys.brand_config.org_name` (JSONB), no de
+ `organizations.name`. El formulario ya tiene acceso a ese valor via `brand_config`.
+- El survey actual (`30000000-...-0001`) tiene `brand_config.org_name = "InQuality"`.
+- El componente que muestra la pantalla de consentimiento es `ConsentScreen`,
+ llamado desde `survey-form.tsx` con `brandConfig={survey.brand_config}`.
+- Las dos nuevas encuestas son para uso real en espacio de pruebas — los encuestados
+ serán notificados cuando la plataforma madure.
+
+---
+
+## 3. DECISIONES YA TOMADAS — no consultar de nuevo
+- Organizaciones separadas para cada encuesta — cada una con su propio `org_id`.
+- Los surveys nuevos tienen `status='live'` para que sean accesibles por UUID.
+- El survey demo existente (`30000000-...-0001`) NO se toca — sigue funcionando.
+- Los nuevos UUIDs siguen el patrón del seed: `10000000-...-0002` para org InQuality
+ real, `10000000-...-0003` para Fundación Solidaridad, y surveys `30000000-...-0002`
+ y `30000000-...-0003` respectivamente.
+- `brand_config.org_name` es el campo que alimenta el texto dinámico del consentimiento.
+
+---
+
+## 4. Cambio 1 — Texto del consentimiento
+
+### 4.1 Texto actual (aproximado)
+```
+Diagnóstico interno de [org_name]: tus respuestas ayudan a la empresa a entender
+la realidad de las personas que cuidan a familiares con discapacidad o adultos
+mayores, para diseñar apoyos más adecuados. Solo se trabaja con datos agregados
+— nunca accede a respuestas individuales.
+
+Estudio país (opcional): tus respuestas anonimizadas contribuyen a un mapeo nacional
+sobre la economía del cuidado en Paraguay. Los datos se procesan de forma
+irreversiblemente desvinculada de cualquier empresa o persona.
+```
+
+### 4.2 Texto nuevo
+```
+Diagnóstico interno de [ORG_NAME]: Tus respuestas ayudan a la empresa, en alianza
+con Fundación Solidaridad, a entender la realidad de las personas que cuidan a
+familiares con discapacidad o adultos mayores, para diseñar apoyos más adecuados.
+Solo se trabaja con datos agregados — nunca accede a respuestas individuales.
+
+Estudio país (opcional): Tus respuestas serán anónimas y contribuyen a un mapeo
+nacional sobre la economía del cuidado en Paraguay. Los datos se procesan de manera
+que no pueden asociarse a ninguna empresa ni persona.
+```
+
+`[ORG_NAME]` = `brand_config.org_name` — ya disponible en el componente.
+Las palabras en negrita son: el nombre de la empresa, "datos agregados",
+"anónimas". Mantener el mismo patrón de negritas que el texto actual.
+
+### 4.3 Archivo a modificar
+Buscar en `ConsentScreen` o donde esté el JSX que renderiza estos dos párrafos.
+Solo cambiar el texto — no la estructura ni el estilo.
+
+---
+
+## 5. Cambio 2 — Dos nuevas organizaciones y surveys en seed.sql
+
+### 5.1 Organización InQuality
+```sql
+INSERT INTO public.organizations (id, name, sector, size_bucket)
+VALUES (
+ '10000000-0000-0000-0000-000000000002',
+ 'InQuality',
+ 'Consultoría/Tecnología',
+ '1-50'
+) ON CONFLICT (id) DO UPDATE SET
+ name = EXCLUDED.name,
+ sector = EXCLUDED.sector,
+ size_bucket = EXCLUDED.size_bucket;
+```
+
+### 5.2 Organización Fundación Solidaridad
+```sql
+INSERT INTO public.organizations (id, name, sector, size_bucket)
+VALUES (
+ '10000000-0000-0000-0000-000000000003',
+ 'Fundación Solidaridad',
+ 'Sociedad Civil/ONG',
+ '1-50'
+) ON CONFLICT (id) DO UPDATE SET
+ name = EXCLUDED.name,
+ sector = EXCLUDED.sector,
+ size_bucket = EXCLUDED.size_bucket;
+```
+
+### 5.3 Survey InQuality
+```sql
+INSERT INTO public.surveys (
+ id, org_id, title, status, is_anonymous,
+ data_sensitivity, security_class, controller_role,
+ consent_version_id, brand_config, k_threshold
+) VALUES (
+ '30000000-0000-0000-0000-000000000002',
+ '10000000-0000-0000-0000-000000000002',
+ 'Mapeo de Cuidadores — 2026',
+ 'live',
+ true,
+ 'sensible',
+ 'confidencial',
+ 'A',
+ '20000000-0000-0000-0000-000000000001',
+ '{"org_name": "InQuality", "branch_name": "Equipo InQuality", "branch_city": "Asunción"}',
+ 5
+) ON CONFLICT (id) DO UPDATE SET
+ brand_config = EXCLUDED.brand_config,
+ status = EXCLUDED.status;
+```
+
+### 5.4 Survey Fundación Solidaridad
+```sql
+INSERT INTO public.surveys (
+ id, org_id, title, status, is_anonymous,
+ data_sensitivity, security_class, controller_role,
+ consent_version_id, brand_config, k_threshold
+) VALUES (
+ '30000000-0000-0000-0000-000000000003',
+ '10000000-0000-0000-0000-000000000003',
+ 'Mapeo de Cuidadores — 2026',
+ 'live',
+ true,
+ 'sensible',
+ 'confidencial',
+ 'A',
+ '20000000-0000-0000-0000-000000000001',
+ '{"org_name": "Fundación Solidaridad", "branch_name": "Equipo Fundación", "branch_city": "Asunción"}',
+ 5
+) ON CONFLICT (id) DO UPDATE SET
+ brand_config = EXCLUDED.brand_config,
+ status = EXCLUDED.status;
+```
+
+### 5.5 Notas sobre el seed
+- Usar `ON CONFLICT (id) DO UPDATE` para que el seed sea idempotente.
+- El `consent_version_id` referencia el consentimiento existente
+ (`20000000-0000-0000-0000-000000000001`) — mismo texto para ambas.
+- Las URLs resultantes serán:
+ - InQuality: `?s=30000000-0000-0000-0000-000000000002`
+ - Fundación Solidaridad: `?s=30000000-0000-0000-0000-000000000003`
+
+---
+
+## 6. Entregables (DoD)
+
+- [ ] Texto del consentimiento actualizado en el componente con el nuevo wording.
+- [ ] `[ORG_NAME]` dinámico desde `brand_config.org_name`.
+- [ ] Negritas correctas: nombre de empresa, "datos agregados", "anónimas".
+- [ ] Dos nuevas organizaciones en `seed.sql` con `ON CONFLICT`.
+- [ ] Dos nuevos surveys en `seed.sql` con `ON CONFLICT`.
+- [ ] Build exitoso.
+- [ ] `git diff --name-only HEAD` en scope.
+
+## 7. Qué reportar
+```
+Verificado:
+- Texto de consentimiento actualizado ✓
+- org_name dinámico ✓ (valor en demo: "InQuality" o "Empresa Demo")
+- Seed actualizado con 2 orgs + 2 surveys ✓
+- ON CONFLICT en todos los nuevos INSERTs ✓
+- Build exitoso ✓
+- Diff en scope ✓
+
+URLs de los nuevos surveys:
+- InQuality: ?s=30000000-0000-0000-0000-000000000002
+- Fundación Solidaridad: ?s=30000000-0000-0000-0000-000000000003
+
+Asumido:
+- [decisiones de implementación]
+```
+
+## 8. Qué NO hacer
+- ❌ No tocar el survey demo existente (30000000-...-0001).
+- ❌ No cambiar la estructura de `brand_config` — solo el texto del componente.
+- ❌ No re-seedear la DB de producción — solo actualizar seed.sql.
+- ❌ No cambiar estilos ni layout del ConsentScreen.
+- ❌ No tocar dashboard ni RPCs.
\ No newline at end of file
diff --git a/supabase/seed.sql b/supabase/seed.sql
index b3f3c29..0f7d6da 100644
--- a/supabase/seed.sql
+++ b/supabase/seed.sql
@@ -56,6 +56,81 @@ UPDATE public.surveys
SET brand_config = '{"org_name":"Empresa Demo","branch_name":"Oficina Central","branch_city":"Asunción"}'::jsonb
WHERE id = '30000000-0000-0000-0000-000000000001';
+-- ══════════════════════════════════════════════════════════════
+-- Etapa 3C — Encuestas piloto (espacio de pruebas real)
+-- org InQuality: 10000000-0000-0000-0000-000000000002
+-- org Fundación Solidaridad: 10000000-0000-0000-0000-000000000003
+-- survey InQuality: 30000000-0000-0000-0000-000000000002
+-- survey Fundación Solidaridad: 30000000-0000-0000-0000-000000000003
+-- No tocan el survey demo (30000000-...-0001).
+-- ══════════════════════════════════════════════════════════════
+
+-- ── Organización InQuality ────────────────────────────────────
+INSERT INTO public.organizations (id, name, sector, size_bucket)
+VALUES (
+ '10000000-0000-0000-0000-000000000002',
+ 'InQuality',
+ 'Consultoría/Tecnología',
+ '1-50'
+) ON CONFLICT (id) DO UPDATE SET
+ name = EXCLUDED.name,
+ sector = EXCLUDED.sector,
+ size_bucket = EXCLUDED.size_bucket;
+
+-- ── Organización Fundación Solidaridad ────────────────────────
+INSERT INTO public.organizations (id, name, sector, size_bucket)
+VALUES (
+ '10000000-0000-0000-0000-000000000003',
+ 'Fundación Solidaridad',
+ 'Sociedad Civil/ONG',
+ '1-50'
+) ON CONFLICT (id) DO UPDATE SET
+ name = EXCLUDED.name,
+ sector = EXCLUDED.sector,
+ size_bucket = EXCLUDED.size_bucket;
+
+-- ── Survey InQuality ───────────────────────────────────────────
+INSERT INTO public.surveys (
+ id, org_id, title, status, is_anonymous,
+ data_sensitivity, security_class, controller_role,
+ consent_version_id, brand_config, k_threshold
+) VALUES (
+ '30000000-0000-0000-0000-000000000002',
+ '10000000-0000-0000-0000-000000000002',
+ 'Mapeo de Cuidadores — 2026',
+ 'live',
+ true,
+ 'sensible',
+ 'confidencial',
+ 'A',
+ '20000000-0000-0000-0000-000000000001',
+ '{"org_name": "InQuality", "branch_name": "Equipo InQuality", "branch_city": "Asunción"}',
+ 5
+) ON CONFLICT (id) DO UPDATE SET
+ brand_config = EXCLUDED.brand_config,
+ status = EXCLUDED.status;
+
+-- ── Survey Fundación Solidaridad ──────────────────────────────
+INSERT INTO public.surveys (
+ id, org_id, title, status, is_anonymous,
+ data_sensitivity, security_class, controller_role,
+ consent_version_id, brand_config, k_threshold
+) VALUES (
+ '30000000-0000-0000-0000-000000000003',
+ '10000000-0000-0000-0000-000000000003',
+ 'Mapeo de Cuidadores — 2026',
+ 'live',
+ true,
+ 'sensible',
+ 'confidencial',
+ 'A',
+ '20000000-0000-0000-0000-000000000001',
+ '{"org_name": "Fundación Solidaridad", "branch_name": "Equipo Fundación", "branch_city": "Asunción"}',
+ 5
+) ON CONFLICT (id) DO UPDATE SET
+ brand_config = EXCLUDED.brand_config,
+ status = EXCLUDED.status;
+
-- ── Preguntas: DELETE + INSERT para idempotencia total ────────
DELETE FROM public.questions
WHERE survey_id = '30000000-0000-0000-0000-000000000001';