Estructura del método + fundación de datos Sprint 1 (pre-ejecución)
This commit is contained in:
54
sprints/sprint-1/BRIEF.md
Normal file
54
sprints/sprint-1/BRIEF.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# BRIEF — Sprint 1: Fundación de datos
|
||||
|
||||
> Brief versionado. Arranca antes de pedirle código al agente (Patrón A.1). El detalle ejecutable de
|
||||
> cada etapa va en `ETAPA_X_PROMPT.md`.
|
||||
|
||||
---
|
||||
|
||||
## Objetivo (una frase)
|
||||
Tener el modelo de datos de la plataforma implementado en Supabase — esquema + RLS + seed de la
|
||||
encuesta de mapeo de cuidadores — como base verificable sobre la que después se montan formulario,
|
||||
dashboard y wizard.
|
||||
|
||||
## Por qué este sprint primero
|
||||
Todo lo demás (formulario, dashboard, wizard) escribe o lee de este modelo. Un modelo con datos
|
||||
sensibles mal diseñado no se migra gratis. Empezamos por el contrato de datos (ADR-001 + DATA_MODEL).
|
||||
|
||||
## Alcance (qué entra)
|
||||
1. Migraciones de Supabase para las tablas de `DATA_MODEL.md`.
|
||||
2. Policies de RLS según la "Intención de RLS" de `DATA_MODEL.md`.
|
||||
3. Constraint/trigger que rechaza `respondent_id` no nulo cuando `is_anonymous = true`.
|
||||
4. Función `agg_segment(...)` que suprime celdas con `count < k_threshold`.
|
||||
5. Tablas de consentimiento (`consent_versions`, `consent_records`) inmutables.
|
||||
6. Seed: la encuesta de mapeo de cuidadores (preguntas B1/C1/D1 con lógica condicional, H1 con
|
||||
límite, escalas, texto libre) cargada como `survey` + `questions` + reglas condicionales.
|
||||
7. Seed de 1 organización de prueba.
|
||||
|
||||
## Fuera de alcance (explícito)
|
||||
- Frontend del formulario (Sprint 2).
|
||||
- Dashboard / reportes (Sprint 3).
|
||||
- Wizard de creación de encuestas (post-validación del caso fijo).
|
||||
- Integración LLM (BACKLOG).
|
||||
- Modo B / `controller_role` dual (reservado en esquema, no operado).
|
||||
- `respondent_id` en uso (reservado, va NULL).
|
||||
- Decisión de residencia de datos (ADR-002 abierto; v1 puede correr en Cloud con datos de prueba).
|
||||
|
||||
## Decisiones ya tomadas (no renegociar — ver CLAUDE.md y ADR-001)
|
||||
- Encuestas anónimas a nivel respondente; se conserva `company_id` + cuasi-identificadores.
|
||||
- Dedup por `ip_hash`. Cuasi-identificadores en bucket (rango etario, no fecha exacta).
|
||||
- Modo A. Consentimiento granular versionado inmutable. Umbral k = 5.
|
||||
- El texto libre no se expone crudo a la capa analítica.
|
||||
|
||||
## Criterios de éxito (checklist)
|
||||
- [ ] `supabase db reset` / migraciones aplican limpio desde cero.
|
||||
- [ ] El esquema generado coincide con `DATA_MODEL.md` (todas las tablas y columnas).
|
||||
- [ ] Test de RLS: una organización NO puede leer filas crudas de otra (ni de la suya).
|
||||
- [ ] Test: `INSERT` con `respondent_id` no nulo en encuesta anónima → falla.
|
||||
- [ ] Test: `agg_segment` devuelve "n insuficiente" para un segmento con count < 5.
|
||||
- [ ] Test: `UPDATE`/`DELETE` sobre `consent_records` → falla (inmutabilidad).
|
||||
- [ ] Seed carga la encuesta de cuidadores con sus reglas condicionales íntegras.
|
||||
- [ ] El director revisa el esquema generado (no solo "tests verdes").
|
||||
|
||||
## Etapas del sprint
|
||||
- **Etapa 1** — Esquema + RLS + constraints + seed (este prompt: `ETAPA_1_PROMPT.md`).
|
||||
- (Etapa 2+ se definen tras validar la Etapa 1.)
|
||||
Reference in New Issue
Block a user