189 lines
6.7 KiB
Markdown
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. |