Files
motor-de-encuestas/CHANGELOG.md
markosbenitez fcf93ea3ea chore(release): CHANGELOG v3.0.0 — wizard declarativo + dashboard tres miradas
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>
2026-06-26 22:21:08 -03:00

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. Operadores contains, 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_id en answers; preguntas 4.2/4.3 se expanden por cada vínculo seleccionado en 4.1 con IDs familiar_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 de anon.
  • 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 STABLE rpc_me_* con filtros de segmento y k-anonimato; Mirada País y Mirada Perfil (base implementada).
  • Autocomplete de barrios (BarrioAutocompleteField): filtra geo_paraguay_full.json por departamento + ciudad, dropdown position: fixed con getBoundingClientRect.
  • 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 questions con instance_generator, instance_of, conditional_rules (jsonb), code único por encuesta.
  • RLS submit: DROP de policies *_insert directas; único canal de escritura es rpc_submit_response.
  • Dashboard helper getDashboardWidgetData unificado 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)

  • 20260620000001instance_id en answers [4A]
  • 20260620000002 — esquema declarativo v3 [4B]
  • 20260624000001 — RPC submit transaccional [4G]
  • 20260625000001 — RPCs dashboard Mirada Empresa [4H]
  • 20260625000002 — RPCs prevalencia y segmentos [4H]
  • 20260626000001 — fix cnt en RPCs me_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/responses con tabla plana, filtro por empresa, colapsar/expandir por submission
  • Dos encuestas piloto: InQuality y Fundación Solidaridad (organizaciones separadas)
  • Método formalizado: method/PATTERNS.md y method/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)