Files
motor-de-encuestas/sprints/sprint-3-infra/ETAPA_3C_PROMPT.md
2026-06-10 16:55:41 -03:00

189 lines
6.7 KiB
Markdown

# 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.