Etapas 4A→4I completadas. Motor de flujo puro, wizard renderer, instancias familiares, submit con validación server-side, dashboard tres miradas (Mirada Empresa funcional), autocomplete barrios/ciudad. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Changelog — Datos País sobre el Cuidado
Todas las versiones notables de este proyecto se documentan en este archivo.
El formato sigue Keep a Changelog y el proyecto adhiere a Versionado Semántico.
[3.0.0] — 2026-06-27
Reescritura del formulario a wizard declarativo pregunta-por-pantalla. Motor de flujo puro, instancias familiares, submit transaccional server-side y dashboard Tres Miradas con Mirada Empresa funcional.
Agregado
- Motor de flujo declarativo (
lib/form-engine.ts):resolveVisibility,resolveScreens,expandInstances— lógica de show/hide/instancias en TypeScript puro, sin estado UI. Operadorescontains,eq_sole,contains_any. - Wizard renderer (
components/wizard-form.tsx): pregunta-por-pantalla, progreso lineal, layout estable sin saltos de scroll. - Instancias familiares: columna
instance_idenanswers; preguntas 4.2/4.3 se expanden por cada vínculo seleccionado en 4.1 con IDsfamiliar_N. - Submit v3 transaccional: Server Action + RPC
rpc_submit_response(SECURITY DEFINER) — persiste consent_record + response + answers en una transacción atómica; revoca INSERT directo deanon. - Validación server-side (
lib/submit-validation.ts): 7 checks antes del RPC (consent, códigos legítimos, forma de valores, visibilidad coherente, instancias válidas, opciones en rango, requeridas presentes). - Dashboard Tres Miradas: Mirada Empresa (
/dashboard) con 13 widgets, RPCs STABLErpc_me_*con filtros de segmento y k-anonimato; Mirada País y Mirada Perfil (base implementada). - Autocomplete de barrios (
BarrioAutocompleteField): filtrageo_paraguay_full.jsonpor departamento + ciudad, dropdownposition: fixedcongetBoundingClientRect. - Ciudad select (
CiudadSelectField): filtra ciudades por departamento, limpia el valor al cambiar 2.1. - Instrumento v3: 10 secciones, 40 preguntas, 3 encuestas (encuesta Demo
30000000-…, InQuality, Fundación). - Tema claro marca Re — fondos, cards y paleta de texto revisada.
Cambiado
- Esquema de DB: tabla
questionsconinstance_generator,instance_of,conditional_rules(jsonb),codeúnico por encuesta. - RLS submit: DROP de policies
*_insertdirectas; único canal de escritura esrpc_submit_response. - Dashboard helper
getDashboardWidgetDataunificado con códigos v3 de pregunta.
Seguridad
- RPC SECURITY DEFINER para submit: cierra el
WITH CHECK(true)que dejaba el store analítico abierto a escritura directa desde el cliente (BRIEF dec. 15). - Validación de integridad del payload en el Server Action antes del RPC: el servidor es la única fuente de verdad sobre lo que se persiste.
Migraciones aplicadas (Sprint 4)
20260620000001—instance_idenanswers[4A]20260620000002— esquema declarativo v3 [4B]20260624000001— RPC submit transaccional [4G]20260625000001— RPCs dashboard Mirada Empresa [4H]20260625000002— RPCs prevalencia y segmentos [4H]20260626000001— fixcnten RPCsme_carrera/me_apoyos[4H]
[2.1.0] — 2026-06-16
Versión estable preservada en la rama v2.1.0-stable. Última versión del
formulario lineal antes del rediseño a wizard.
Agregado
- Dashboard multitenante con selector de empresa (Todos / InQuality / Fundación / Demo)
- Flag
p_all(UUID cero) para vista agregada de todos los surveys - Vista de control
/admin/responsescon tabla plana, filtro por empresa, colapsar/expandir por submission - Dos encuestas piloto: InQuality y Fundación Solidaridad (organizaciones separadas)
- Método formalizado:
method/PATTERNS.mdymethod/ANTI_PATTERNS.md(patrones C.8, AP.10, AP.11)
Cambiado
- Instrumento actualizado a v2.1 (feedback equipo médico): salto triple, nueva pregunta 6.6, eliminación de "Prefiero no decir", 2.4 eliminada, 2.1 a multiple_choice
- Next.js actualizado a 15.3.8 (pin exacto)
Seguridad
- Resuelto CVE-2025-66478 (+ advisory posterior CVE-2025-55183/55184/67779)
Infraestructura
- Migración completa a Supabase self-hosted en Dokploy
- Backups GFS locales con retención de 3 días + domingos 14 días
[2.0.0] — 2026-06 (anterior)
Primera versión en producción con Supabase self-hosted.
- Formulario lineal de 44 preguntas
- Dashboard con 11 widgets y k-anonimato (k≥5)
- Instrumento v2 (44 preguntas, 8 secciones)