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>
This commit is contained in:
58
CHANGELOG.md
58
CHANGELOG.md
@@ -7,17 +7,57 @@ y el proyecto adhiere a [Versionado Semántico](https://semver.org/lang/es/).
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## [No publicado] — Sprint 4: Formulario Wizard v3
|
## [3.0.0] — 2026-06-27
|
||||||
|
|
||||||
En desarrollo en `main`. Cambio mayor: reescritura del formulario a wizard
|
Reescritura del formulario a wizard declarativo pregunta-por-pantalla.
|
||||||
pregunta-por-pantalla con instancias de vínculo familiar.
|
Motor de flujo puro, instancias familiares, submit transaccional server-side
|
||||||
|
y dashboard Tres Miradas con Mirada Empresa funcional.
|
||||||
|
|
||||||
### Por agregar
|
### Agregado
|
||||||
- Wizard pregunta-por-pantalla para todo el formulario
|
- **Motor de flujo declarativo** (`lib/form-engine.ts`): `resolveVisibility`,
|
||||||
- Instrumento v3: 10 secciones, mini-wizard anidado para vínculos familiares
|
`resolveScreens`, `expandInstances` — lógica de show/hide/instancias en TypeScript
|
||||||
- Columna `instance_id` en `answers` para datos multi-instancia
|
puro, sin estado UI. Operadores `contains`, `eq_sole`, `contains_any`.
|
||||||
- Autocomplete de barrios desde dataset INE/DGEEC
|
- **Wizard renderer** (`components/wizard-form.tsx`): pregunta-por-pantalla,
|
||||||
- Subtítulos explicativos del "porqué" por sección
|
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)
|
||||||
|
- `20260620000001` — `instance_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]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user