Con las encuestas para 3 empresas
This commit is contained in:
@@ -26,15 +26,17 @@ export function ConsentScreen({ brandConfig, onAccept }: ConsentScreenProps) {
|
|||||||
</p>
|
</p>
|
||||||
<ol className="consent-list">
|
<ol className="consent-list">
|
||||||
<li>
|
<li>
|
||||||
<strong>Diagnóstico interno de {orgName}:</strong> tus respuestas ayudan a la empresa
|
<strong>Diagnóstico interno de {orgName}:</strong> Tus respuestas ayudan a la empresa,
|
||||||
a entender la realidad de las personas que cuidan a familiares con discapacidad o adultos
|
en alianza con Fundación Solidaridad, a entender la realidad de las personas que cuidan
|
||||||
mayores, para diseñar apoyos más adecuados. Solo se trabaja con{' '}
|
a familiares con discapacidad o adultos mayores, para diseñar apoyos más adecuados. Solo
|
||||||
|
se trabaja con{' '}
|
||||||
<strong>datos agregados</strong> — nunca accede a respuestas individuales.
|
<strong>datos agregados</strong> — nunca accede a respuestas individuales.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>Estudio país (opcional):</strong> tus respuestas anonimizadas contribuyen a un
|
<strong>Estudio país (opcional):</strong> Tus respuestas serán{' '}
|
||||||
mapeo nacional sobre la economía del cuidado en Paraguay. Los datos se procesan de
|
<strong>anónimas</strong> y contribuyen a un mapeo nacional sobre la economía del
|
||||||
forma irreversiblemente desvinculada de cualquier empresa o persona.
|
cuidado en Paraguay. Los datos se procesan de manera que no pueden asociarse a ninguna
|
||||||
|
empresa ni persona.
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
189
sprints/sprint-3-infra/ETAPA_3C_PROMPT.md
Normal file
189
sprints/sprint-3-infra/ETAPA_3C_PROMPT.md
Normal file
@@ -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.
|
||||||
@@ -56,6 +56,81 @@ UPDATE public.surveys
|
|||||||
SET brand_config = '{"org_name":"Empresa Demo","branch_name":"Oficina Central","branch_city":"Asunción"}'::jsonb
|
SET brand_config = '{"org_name":"Empresa Demo","branch_name":"Oficina Central","branch_city":"Asunción"}'::jsonb
|
||||||
WHERE id = '30000000-0000-0000-0000-000000000001';
|
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 ────────
|
-- ── Preguntas: DELETE + INSERT para idempotencia total ────────
|
||||||
DELETE FROM public.questions
|
DELETE FROM public.questions
|
||||||
WHERE survey_id = '30000000-0000-0000-0000-000000000001';
|
WHERE survey_id = '30000000-0000-0000-0000-000000000001';
|
||||||
|
|||||||
Reference in New Issue
Block a user