06 — Plan de fases y backlog
Sin presión de fecha: cada fase termina con tests en verde (TDD), smoke visual, y demo utilizable. El orden respeta las dependencias del modelo de datos.
F0 — Fundaciones
- Monorepo (pnpm workspaces):
apps/core,apps/bff,apps/web,apps/mobile(después),packages/contracts(DTOs/zod compartidos). - Esqueleto NestJS core (vertical slice, Prisma, Testcontainers) + BFF + SPA Vite/React/MUI.
- Logger helper (pino, masking, correlationId/AsyncLocalStorage) — antes que cualquier feature.
- Auth completa: login, refresh (cookies web / JWT móvil), contraseña temporal + cambio obligatorio, roles/guards.
- pg-boss + tabla outbox + worker base. UUID v7. CI GitHub Actions + compose dev + deploy a staging Dokploy.
- Criterio de salida: login real en staging, pipeline verde, un job de cola de prueba procesándose.
F1 — Núcleo académico
- Configuración de colegio (régimen, timezone, escalas y umbrales configurables), año lectivo con estados, períodos/parciales, niveles/grados, paralelos, materias, asignación docente.
- Criterio: coordinación puede montar la estructura completa de un año lectivo real.
F2 — Personas y matrícula
- Alumnos, representantes (N:M), staff; generación de credenciales.
- Matrícula con estados (retiro/traslado), ficha ecuatoriana.
- Importación Excel de matrícula + histórico básico, con reporte de errores por fila.
- Criterio: los 500+ alumnos del colegio importados en staging desde su Excel real (anonimizado).
F3 — Asistencia
- Registro por inspección/docentes, justificaciones con adjunto, alertas por outbox.
- Criterio: toma de asistencia de un paralelo completo en <1 min; listados paginados con volumen real.
F4 — Evaluación
- Calificaciones por parcial, promedios, cualitativos; comportamiento A–E.
- Cierre de período con congelamiento + flujo de rectificación autorizada + audit log.
- Supletorios/remediales/gracia. Boletas PDF en cola.
- Criterio: ciclo completo de un período con boletas generadas para todos los alumnos sin degradar el sistema.
F5 — Conducta y seguimiento
- Observaciones con visibilidades (interna/representante/DECE), citaciones y acuerdos.
F6 — Pagos
- Rubros, obligaciones, registro manual, recibos, estado de cuenta consolidado por representante, Excel, API de integración con API keys.
F7 — Comunicados y horarios
- Comunicados con adjuntos + email transaccional (dominio verificado) + registro de entrega.
- Grilla manual de horarios con validación de choques.
F8 — Integración Moodle
- Mapeo uuid↔moodle_id, aprovisionamiento idempotente de usuarios/cursos/enrolments, lectura de gradebook con volcado confirmado por docente, enlaces profundos.
F9 — App Flutter (solo consulta)
- Flavors white-label, login + FCM, vistas: notas, asistencia, estado de cuenta, comunicados, horarios, enlaces Moodle. Cache local para mala conectividad.
F10 — Endurecimiento y puesta en producción
- Checklist LOPDP, auditoría de accesos, revisión EXPLAIN de todos los listados, restore drill, carga simulada (picos de notas), documentación de operación y manual de usuario por rol, capacitación al staff.
Riesgos principales
| Riesgo | Mitigación |
|---|---|
| Reglas ministeriales desactualizadas en nuestro modelo | Todo umbral/escala/período configurable; validar con el colegio en F1/F4 |
| Adopción del staff | Excel como puerta de entrada, staging para práctica, capacitación en F10 |
| Divergencia de forks | Convención de overrides + FORK_NOTES.md |
| Moodle ajeno (versiones, permisos) | Adapter aislado, idempotencia, mapeo persistido; degradar con gracia si Moodle no responde |
| Pérdida de datos | Outbox transaccional, backups con restore drill, snapshots de cierre permanentes |