Sprint 4 completo (widgets Mirada Empresa, tema claro, 4F, 4I/release ya estaban hechos antes de esta sesión). Documenta el incidente de colisión de container_name en el VPS y su recuperación, y el cierre de TECH-DEBT-008 (auth de staff) en esta sesión. Próximos pasos quedan abiertos a decisión del director (dashboard País/Humana, sprint de compliance, o mantenimiento de dependencias).
147 lines
7.0 KiB
Markdown
147 lines
7.0 KiB
Markdown
# ESTADO DEL PROYECTO — Datos País sobre el Cuidado
|
|
## Documento de continuidad — 27 junio 2026
|
|
|
|
> Director (Product Owner): Marcos · Claude (Projects) = arquitecto/copiloto · Claude Code = implementación
|
|
> Metodología: Maria Mersan · Contacto Fundación: Valeria Arce
|
|
|
|
---
|
|
|
|
## 1. Versionado y ramas
|
|
- **Producción:** 3.0.0 (wizard + dashboard tres miradas) — tag `v3.0.0` pusheado, los 3 surveys
|
|
en `live`. Release v3 completado (etapa 4I).
|
|
- **Preservación:** `v2.1.0-stable` + tag `v2.1.0`
|
|
- SemVer + CHANGELOG + tags. ADRs en `docs/adr/`.
|
|
|
|
---
|
|
|
|
## 2. Sprint 4 — Wizard v3 — COMPLETO, release hecho
|
|
|
|
| Etapa | Estado |
|
|
|---|---|
|
|
| 4.0 Preservación v2 | ✅ |
|
|
| 4A instance_id | ✅ prod |
|
|
| 4B esquema declarativo + seed v3 | ✅ prod |
|
|
| 4C motor de flujo (lib/form-engine.ts, puro) | ✅ |
|
|
| 4D wizard renderer (layout estable) | ✅ |
|
|
| 4E instancias (emergente del motor) | ✅ |
|
|
| 4G submit + validación server-side (RPC transaccional) | ✅ verificado vs Postgres real |
|
|
| 4F autocomplete barrios (UX) | ✅ |
|
|
| Widgets Mirada Empresa (frontend) | ✅ |
|
|
| Tema claro dashboard (marca Re) | ✅ |
|
|
| 4I validación e2e + tag v3.0.0 + desplegar + reactivar surveys | ✅ |
|
|
| ETAPA_AUTH — login/middleware/sign-out para `/admin` y `/dashboard` | ✅ (27 jun) |
|
|
|
|
El formulario v3 funciona end-to-end: motor, wizard, instancias, submit con validación
|
|
server-side (RPC `rpc_submit_response`, único camino de escritura, verificado). Dashboard
|
|
Mirada Empresa con sus 13 widgets, consumiendo las RPCs `rpc_me_*` reales. `/admin/responses`
|
|
y `/dashboard` ahora requieren sesión autenticada (antes sin auth — cierra TECH-DEBT-008).
|
|
|
|
---
|
|
|
|
## 2.1 Incidente VPS (27 jun) — recuperado
|
|
|
|
Una segunda instancia de Dokploy desplegada desde el mismo repo (con `container_name` fijos en
|
|
docker-compose.yml) colisionó con la producción y vació el esquema `public` de `supabase-db`.
|
|
**Sin pérdida de datos reales** (solo seed demo). Se restauró: migraciones completas + seed +
|
|
surveys reactivados a `live` + usuario `platform_admin` creado. Verificado end-to-end: login,
|
|
sign-out, redirect sin sesión, formulario público (3 links `?s=<survey_id>`) — todo OK.
|
|
Detalle completo en memoria `project_vps_container_name_incident`. El director ya separó la
|
|
segunda instancia a un repo Gitea propio sin `container_name` fijos, para que no se repita.
|
|
|
|
---
|
|
|
|
## 3. Dashboard v3 — "tres miradas"
|
|
|
|
**Decisión:** NO migrar las RPCs v2 (referencian códigos inexistentes en v3). En su lugar,
|
|
dashboard nuevo de tres miradas, fundamentado en marcos reales (OIT 5R, CEPAL, PNCUPA Paraguay).
|
|
|
|
### Estado
|
|
- **Mirada Empresa:** ✅ RPCs + widgets de frontend completos y en producción. E1-E10 + estrella
|
|
"Talento en riesgo", k≥5 en segmentación. Tema claro aplicado.
|
|
- **Mirada País y Mirada Humana:** propuesta + mockup listos, implementación DIFERIDA a
|
|
sprint de dashboard post-deadline (sin cambios desde el último estado).
|
|
|
|
### Documentos (en docs/dashboard/)
|
|
- `PROPUESTA_DASHBOARD_v3.md` — las 3 miradas, ~30 métricas, marcos citados honestamente
|
|
- `dashboard_tres_miradas_mockup.html` — mockup funcional 3 pestañas
|
|
- `SPEC_MIRADA_EMPRESA.md` — contrato técnico de las 10 métricas + estrella
|
|
|
|
### Decisiones del dashboard
|
|
- CUIDADOR_ACTIVO incluye "hijo menor sin discapacidad" (criterio UNFPA, validado por Maria).
|
|
Definido en helper `_dash_es_cuidador`.
|
|
- Mirada Empresa NO expone datos sensibles (3.x, 4.2, 4.3). Solo 4.1 existencia, 6.x, 7.x, 9.x, 2.6, 2.7.
|
|
- Métrica por persona vs por instancia: presentar ambas rotuladas; k≥5 sobre count(DISTINCT response_id).
|
|
- 2 gaps de datos marcados [REQUIERE PREGUNTA]: horas cuidado no remunerado (País),
|
|
escolarización niñez (Humana). Para el sprint de dashboard.
|
|
|
|
---
|
|
|
|
## 4. Deuda técnica y seguridad
|
|
|
|
~~TECH-DEBT-008 (`/admin/responses` sin autenticación)~~ — **resuelto** por ETAPA_AUTH (27 jun).
|
|
|
|
| ID | Descripción | Prioridad |
|
|
|---|---|---|
|
|
| TECH-DEBT-006 | Backup remoto S3 | Antes de datos reales |
|
|
| TECH-DEBT-009 | Rotar secrets post-CVE | Antes de datos reales |
|
|
| TECH-DEBT-010 | E9 lee modalidad por JOIN a answers (2.7) en vez de qi_modalidad. Promover si se usa seguido | Baja |
|
|
| SEC-001 | Next.js — vuln "Cache Key Confusion" vigente en 15.3.8; última mayor es 16.2.9 (breaking) | Media |
|
|
| TECH-001 | `npm audit`: 4 vulns (1 moderate, 3 high) — `form-data`, `next`, `undici` | Pendiente revisión |
|
|
| SEC-002 | Sprint compliance (audit log, hashing, cifrado en reposo) | Sprint dedicado |
|
|
| SEC-003 | Agujero TRUNCATE evade ADR-003 | Antes de datos reales |
|
|
| SEC-004 | RPC validable por bypass REST (coherencia de flujo en Server Action) | Sprint futuro |
|
|
| BACKLOG-002 | Fase 2: motor genérico | Post-deadline |
|
|
|
|
*(SEC-001/TECH-001 verificados 27 jun vía `npm view next version` / `npm audit --json` —
|
|
los números en BACKLOG.md/TECH_DEBT.md estaban desactualizados, ej. citaban Next 15.3.3
|
|
y "2 vulnerabilidades" cuando ya corre 15.3.8 con 4.)*
|
|
|
|
---
|
|
|
|
## 5. Infraestructura
|
|
- Next.js 15.3.8 · Supabase self-hosted · Dokploy v0.29.4 · VPS inq-mart-2 (172.20.5.11)
|
|
- App: economia-cuidado.inqualityhq.com · API: db.inqualityhq.com
|
|
- Repos Gitea: git.inquality.com.py/marcos/motor-de-encuestas
|
|
- Para sembrar datos de prueba: `seed_prueba_50.sql` (en docs/dashboard/), 50 respuestas
|
|
deterministas vía RPC. Usa question_id (UUIDs), NO question_code. Incluye su limpieza.
|
|
|
|
---
|
|
|
|
## 6. Próximos pasos
|
|
|
|
**Go-live (widgets → 4F → 4I) está cerrado.** v3.0.0 en producción, surveys `live`, auth para
|
|
staff funcionando. No queda ninguna etapa de Sprint 4 pendiente — el roadmap pre-escrito se
|
|
agotó. El próximo paso requiere decisión del director entre:
|
|
|
|
1. **Sprint de dashboard (post-deadline):** Miradas País y Humana, preguntas faltantes
|
|
(bienestar, horas no remuneradas, escolarización), decisión qi_modalidad (TECH-DEBT-010).
|
|
2. **Sprint de compliance/seguridad (SEC-002):** audit log append-only, hashing de integridad,
|
|
cifrado en reposo — bloquea escalar a más empresas/datos reales.
|
|
3. **Mantenimiento de dependencias:** SEC-001 (Next.js) + TECH-001 (`npm audit`, 4 vulns).
|
|
4. Otro ítem de BACKLOG.md/TECH_DEBT.md no listado arriba.
|
|
|
|
Ninguno de estos se decide unilateralmente (Nivel 3 — tocan planificación/seguridad).
|
|
|
|
---
|
|
|
|
## 7. Contexto comercial
|
|
- 2 clientes inminentes en ~10-20 días (deadline v3). Mirada Empresa es la que le habla al cliente que paga.
|
|
- InQuality y Fundación Solidaridad en joint venture.
|
|
|
|
---
|
|
|
|
## 8. Prompt para nueva sesión
|
|
```
|
|
Sos el arquitecto/copiloto técnico de "Datos País sobre el Cuidado", motor de formularios
|
|
soberano (Paraguay). Yo soy el product owner. Sprint 4: wizard v3 (ADR-005, esquema declarativo).
|
|
|
|
Estado completo: docs/estado/ESTADO_PROYECTO_JUNIO_2026.md.
|
|
Formulario v3: COMPLETO y verificado (motor, wizard, submit con validación server-side).
|
|
Dashboard: rediseño de "tres miradas". Mirada Empresa = RPCs implementadas y verificadas
|
|
contra datos reales; faltan sus widgets. País/Humana diferidas a sprint posterior.
|
|
|
|
Pendiente go-live: widgets Mirada Empresa → 4F (barrios) → 4I (release).
|
|
Los 3 surveys en draft (v3 no desplegado aún).
|
|
|
|
Próximo paso: [COMPLETAR]
|
|
``` |