Files
renato97 a3360ec6e4 feat: fase 2+3 — expansion masiva multi-perfil + bug fixes + hardening
Fase 2 (expansion):
- Francesca: +6 etapas matematicas (5-10), +7 etapas lectura (3-9), +2 ortografia
- Sebastian: +8 etapas matematicas (4-11), +6 lectura, +3 historia, +3 geografia, +1 banderas
- Nuevas paginas: ortografia, lectura, geografia, matematicas
- ~900 ejercicios nuevos, paridad ~500 por perfil

Fase 3 (bug fixes + hardening):
- Fix: SessionLog auto-create en grade route
- Fix: engine cache (no borrar antes de revisar)
- Fix: FSRS cards actualizadas en flujo curriculum
- Fix: responseMs real (no hardcodeado 3000)
- Fix: options dentro de content en sebastian etapa-1
- Fix: trazo-letra consonantes crash
- Security: execFileSync anti-command-injection en TTS
- DB: 18 cascade deletes + indices + unique constraints
- APIs debug: reset, state, seed
- Docker: espeak-ng + prisma + user/group
- E2E: 23 tests nuevos (curriculum-flow.spec.ts)
- Code review: tailwind colors, middleware dev mode, eslint config

Verificado: tsc exit 0, build exit 0, 61 E2E tests pass
2026-07-25 22:07:28 -03:00

621 lines
23 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FASE 2 — Plan Maestro: Sistema Multi-Perfil Escalonado
> **Objetivo**: Sistema de aprendizaje con 3 perfiles de dificultad escalada (Isabella 4a, Francesca 6a, Sebastián 8a) basado en métodos europeos (Montessori, Borel-Maisonny, Decroly, Freinet). Meta: **paridad de volumen** (~500+ ejercicios por perfil).
---
## 0. Resumen Ejecutivo
| Métrica | Actual | Meta Fase 2 | Delta |
|---|---|---|---|
| Ejercicios Isabella | 595 | 595 (sin cambios) | 0 |
| Ejercicios Francesca | 58 | ~520 | **+462** |
| Ejercicios Sebastián | 35 | ~510 | **+475** |
| **Total nuevos** | — | — | **~937 ejercicios** |
| Etapas nuevas | 0 | ~40 | +40 |
| Carpetas curriculum nuevas | 0 | ~8 | +8 |
**Filosofía pedagógica**: progresión Montessori (concreto → abstracto) para matemática, Borel-Maisonny (gesto-fonema) para lectura inicial, Decroly (centros de interés) para comprensión, Freinet (expresión libre) para producción escrita en nivel avanzado.
---
## 1. Perfiles y Niveles
### 1.1 Isabella (4 años) — NIVEL FUNDACIONAL [SIN CAMBIOS]
Mantiene los ~595 ejercicios existentes. Sirve como **base de referencia** para Francesca y Sebastián.
| Materia | Método | Etapas | Ejercicios |
|---|---|---|---|
| lectura | Borel-Maisonny | 9 | 405 |
| numeros | Montessori sensorial | 8 | 190 |
**Habilidades terminales**: lee sílabas y palabras de 2-3 sílabas, cuenta 1-20, suma/resta dentro de 10.
---
### 1.2 Francesca (6 años) — NIVEL INTERMEDIO [EXPANSIÓN MASIVA]
Pasa de 58 → ~520 ejercicios. Asume lectura inicial consolidada; se enfoca en **operaciones multidígito**, **comprensión lectora** y **ortografía inicial**.
| Materia | Método europeo | Etapas | Ejercicios | Carpetas |
|---|---|---|---|---|
| matematicas | Montessori operacional | 9 | ~260 | `curriculum/francesca/` |
| lecturas | Decroly (centros de interés) | 7 | ~200 | `curriculum/francesca-lectura/` |
| ortografia | Decroly + reglas | 2 | ~60 | `curriculum/francesca-ortografia/` (NUEVA) |
**Habilidades terminales**: multiplica y divide números de 1-2 dígitos, comprende textos narrativos de 4-6 oraciones, aplica reglas ortográficas básicas (m-antes-de-p/b, mayúsculas).
---
### 1.3 Sebastián (8 años) — NIVEL AVANZADO [EXPANSIÓN MASIVA]
Pasa de 35 → ~510 ejercicios. Es el **más avanzado**: fracciones, decimales, comprensión profunda, expresión escrita, cultura general expandida.
| Materia | Método europeo | Etapas | Ejercicios | Carpetas |
|---|---|---|---|---|
| matematicas | Montessori + abstracto | 10 | ~220 | `curriculum/sebastian/` |
| lectura | Decroly + Freinet | 6 | ~160 | `curriculum/sebastian-lectura/` (NUEVA) |
| historia | Decroly (centros de interés) | 5 | ~70 | `curriculum/sebastian-historia/` |
| geografia | Decroly | 3 | ~40 | `curriculum/sebastian-geografia/` (NUEVA) |
| banderas | Memorización visual | 2 | ~20 | `curriculum/sebastian-banderas/` |
**Habilidades terminales**: opera con fracciones y decimales, resuelve problemas de varios pasos, redacta textos cortos, comprende textos narrativos complejos, conoce historia y geografía argentina.
---
## 2. Plan Detallado — FRANCESCA (6 años)
### 2.1 Matemáticas Montessori (`curriculum/francesca/`)
#### Etapas existentes (conservar, verificar prereqs)
- **Etapa 1** — Sumas 1 dígito (15 ej) ✓ existe
- **Etapa 2** — Sumas 2-3 dígitos (14 ej) ✓ existe
- **Etapa 3** — Restas 2-3 dígitos (14 ej) ✓ existe
- **Etapa 4** — Multiplicaciones + lecturas (17 ej) ✓ existe
#### Etapas NUEVAS
**Etapa 5 — Tablas de multiplicar (2, 5, 10)** — 30 ejercicios
- Método: Montessori (tablas de Pythagore, cuentas doradas)
- Habilidad: memorizar tablas del 2, 5, 10
- Tipos: `eleccion`, `conciencia`
- Contenido: `fra5-tabla2-*`, `fra5-tabla5-*`, `fra5-tabla10-*`
- Prereq: `fra4-mult-1-2`
**Etapa 6 — Tablas de multiplicar (3, 4, 6, 7, 8, 9)** — 45 ejercicios
- Método: Montessori (tabla perforada, material de cuentas)
- Habilidad: completar todas las tablas
- Tipos: `eleccion`, `secuencia`
- Contenido: `fra6-tabla3-*` ... `fra6-tabla9-*`
**Etapa 7 — Multiplicación de 2 dígitos × 1 dígito** — 24 ejercicios
- Método: Montessori (juego de sellos, descomposición decena-unidad)
- Habilidad: `23 × 4`, `56 × 7`
- Tipos: `eleccion`, `problema`
- Contenido: `fra7-mult-{a}-{b}` con `a` ∈ [12,99], `b` ∈ [2,9]
**Etapa 8 — Divisiones exactas (1 dígito)** — 24 ejercicios
- Método: Montessori (cuentas doradas, reparto equitativo)
- Habilidad: `12 ÷ 3`, `24 ÷ 6`, `45 ÷ 5`
- Tipos: `eleccion`, `problema`
- Contenido: `fra8-div-{a}-{b}`
**Etapa 9 — Fracciones simples (1/2, 1/3, 1/4)** — 25 ejercicios
- Método: Montessori (círculos de fracciones rojos)
- Habilidad: reconocer y comparar fracciones básicas
- Tipos: `conciencia`, `eleccion`
- Contenido: `fra9-frac-{tipo}-{n}`
**Etapa 10 — Problemas con dinero y medidas** — 30 ejercicios
- Método: vida práctica Montessori
- Habilidad: aplicar operaciones en contexto ($, cm, kg, L)
- Tipos: `problema`, `conciencia`
- Contenido: `fra10-prob-{tipo}-{n}`
**Subtotal Francesca matemáticas: 238 ejercicios nuevos (9 etapas, ~260 total con existentes)**
---
### 2.2 Lectura Decroly (`curriculum/francesca-lectura/`)
#### Etapas existentes (conservar)
- **Etapa 1** — Lecturas nivel 1 (8 ej) ✓ existe
- **Etapa 2** — Lecturas nivel 2 (5 ej) ✓ existe
#### Etapas NUEVAS (centros de interés Decroly)
**Etapa 3 — Centro de interés: "La familia"** — 30 ejercicios
- Método: Decroly (centro de interés global)
- Habilidad: comprensión lectora sobre tema familiar
- Contenido: 10 textos cortos (3-4 oraciones) × 3 preguntas cada uno
- Tipos: `lectura`
- Ej: "La familia de Ana tiene 4 personas...", "El abuelo vive en..."
**Etapa 4 — Centro de interés: "Los animales"** — 30 ejercicios
- 10 textos sobre animales (mamíferos, aves, peces, insectos)
- 3 preguntas por texto (hecho, inferencia, vocabulario)
**Etapa 5 — Centro de interés: "Las estaciones"** — 30 ejercicios
- 10 textos sobre primavera, verano, otoño, invierno
- Vocabulario temporal, causa-efecto
**Etapa 6 — Centro de interés: "La escuela y los amigos"** — 30 ejercicios
- 10 textos sobre rutina escolar, convivencia, reglas
**Etapa 7 — Comprensión inferencial** — 30 ejercicios
- Método: Decroly (asociación global)
- Habilidad: deducir información NO explícita
- Contenido: 10 textos × 3 preguntas "¿Por qué...?", "¿Qué pasó antes...?"
**Etapa 8 — Vocabulario y sinónimos** — 25 ejercicios
- Habilidad: enriquecer léxico, identificar sinónimos
- Tipos: `eleccion`, `emparejar`
**Etapa 9 — Secuencia narrativa** — 20 ejercicios
- Habilidad: ordenar eventos de un cuento
- Tipos: `secuencia`, `lectura`
**Subtotal Francesca lectura: 195 ejercicios nuevos (7 etapas, ~208 total con existentes)**
---
### 2.3 Ortografía inicial (`curriculum/francesca-ortografia/`) — NUEVA
**Etapa 1 — Mayúsculas y nombres propios** — 30 ejercicios
- Regla: mayúscula inicial de oración, nombres de personas/lugares
- Tipos: `eleccion`, `palabra`
**Etapa 2 — Regla "m antes de p y b"** — 30 ejercicios
- Regla: siempre "m" antes de p/b (campo, cambio, sombra)
- Tipos: `eleccion`, `palabra`, `emparejar`
**Subtotal Francesca ortografía: 60 ejercicios (2 etapas)**
---
### TOTAL FRANCESCA FASE 2: **~493 ejercicios nuevos + 58 existentes = 551 ejercicios**
---
## 3. Plan Detallado — SEBASTIÁN (8 años)
### 3.1 Matemáticas Avanzadas (`curriculum/sebastian/`)
#### Etapas existentes (conservar)
- **Etapa 1** — Sumas 2-3 dígitos (5 ej) ✓ existe
- **Etapa 2** — Sumas interactivas (5 ej) ✓ existe
- **Etapa 3** — Desafíos de sumas (6 ej) ✓ existe
#### Etapas NUEVAS
**Etapa 4 — Restas con préstamo (3 dígitos)** — 25 ejercicios
- Habilidad: restas con llevadas (300-147, 502-268)
- Método: Montessori (juego de sellos con intercambio)
- Tipos: `eleccion`, `problema`
**Etapa 5 — Multiplicación de 2 dígitos × 2 dígitos** — 25 ejercicios
- Habilidad: `23 × 45`, `67 × 12`
- Método: Montessori (cuadrícula, geometría)
- Tipos: `eleccion`, `problema`
**Etapa 6 — División larga (1 divisor)** — 25 ejercicios
- Habilidad: `144 ÷ 6`, `256 ÷ 8`, con resto
- Método: Montessori (tubos de ensayo, divisiones)
- Tipos: `eleccion`, `problema`
**Etapa 7 — Fracciones: equivalencias y operaciones** — 30 ejercicios
- Habilidad: `1/2 = 2/4`, sumar/restar fracciones mismo denominador
- Método: Montessori (círculos rojos, equivalencias)
- Tipos: `conciencia`, `eleccion`
**Etapa 8 — Decimales** — 25 ejercicios
- Habilidad: leer, comparar, sumar decimales (0.5, 1.25, 2.7)
- Método: material concreto (bloques base-10)
- Tipos: `conciencia`, `eleccion`
**Etapa 9 — Porcentajes** — 20 ejercicios
- Habilidad: 50%, 25%, 10% de una cantidad
- Aplicación: descuentos, propinas
- Tipos: `eleccion`, `problema`
**Etapa 10 — Problemas de varios pasos** — 30 ejercicios
- Habilidad: problemas que requieren 2-3 operaciones
- Ej: "Compré 3 lápices a $15 cada uno y pagué con $100. ¿Cuánto vuelto?"
- Tipos: `problema`
**Etapa 11 — Geometría básica** — 20 ejercicios
- Habilidad: perímetro de cuadrado/rectángulo, área básica
- Tipos: `conciencia`, `eleccion`
**Subtotal Sebastián matemáticas: 200 ejercicios nuevos (8 etapas, ~236 total con existentes)**
---
### 3.2 Lectura y Expresión Freinet (`curriculum/sebastian-lectura/`) — NUEVA
**Etapa 1 — Comprensión profunda de textos** — 30 ejercicios
- Habilidad: extraer idea principal, detalles, secuencia
- 10 textos de 5-8 oraciones × 3 preguntas
- Tipos: `lectura`
**Etapa 2 — Inferencias y conclusiones** — 30 ejercicios
- Habilidad: deducir moralejas, motivaciones, causas
- Tipos: `lectura`, `eleccion`
**Etapa 3 — Textos informativos (Decroly)** — 25 ejercicios
- Habilidad: comprender textos expositivos
- Temas: ciencia, historia, naturaleza
- Tipos: `lectura`
**Etapa 4 — Idea principal vs detalles** — 25 ejercicios
- Habilidad: distinguir idea central de soporte
- Tipos: `eleccion`, `lectura`
**Etapa 5 — Redacción guiada (Freinet)** — 25 ejercicios
- Habilidad: completar y ordenar párrafos (texto libre)
- Tipos: `secuencia`, `palabra`
**Etapa 6 — Correspondencia interescolar (Freinet)** — 25 ejercicios
- Habilidad: estructura de carta, saludos, despedidas
- Tipos: `eleccion`, `secuencia`
**Subtotal Sebastián lectura: 160 ejercicios nuevos (6 etapas)**
---
### 3.3 Historia Argentina (`curriculum/sebastian-historia/`)
#### Etapas existentes (conservar)
- **Etapa 1** — Nivel 1 (6 ej) ✓ existe
- **Etapa 2** — Nivel 2 (4 ej) ✓ existe
#### Etapas NUEVAS
**Etapa 3 — Independencia y primeras décadas** — 15 ejercicios
- Período: 1816-1853, Congreso de Tucumán, Constitución
- Tipos: `eleccion`, `secuencia`
**Etapa 4 — Inmigración y crecimiento (1853-1930)** — 15 ejercicios
- Período: Alberdi, Sarmiento, ferrocarril, inmigración europea
- Tipos: `eleccion`
**Etapa 5 — Símbolos patrios y fechas** — 15 ejercicios
- Habilidad: fechas patrias, símbolos (himno, escudo, escarapela)
- Tipos: `eleccion`, `emparejar`
**Subtotal Sebastián historia: 45 ejercicios nuevos (3 etapas, ~55 total con existentes)**
---
### 3.4 Geografía Argentina (`curriculum/sebastian-geografia/`) — NUEVA
**Etapa 1 — Regiones de Argentina** — 15 ejercicios
- Habilidad: identificar regiones (Pampa, Patagonia, Cuyo, NOA, NEA, Centro)
- Tipos: `eleccion`, `conciencia`
**Etapa 2 — Ríos, montañas y climas** — 15 ejercicios
- Habilidad: Cordillera de los Andes, Río de la Plata, Paraná
- Tipos: `eleccion`
**Etapa 3 — Capitales y provincias** — 10 ejercicios
- Habilidad: emparejar provincia con capital
- Tipos: `emparejar`, `eleccion`
**Subtotal Sebastián geografía: 40 ejercicios (3 etapas)**
---
### 3.5 Banderas (`curriculum/sebastian-banderas/`)
#### Etapas existentes (conservar)
- **Etapa 1** — 8 provincias + escudo (9 ej) ✓ existe
#### Etapas NUEVAS
**Etapa 2 — Provincias restantes** — 15 ejercicios
- Habilidad: las 16 provincias faltantes + CABA
- Tipos: `eleccion`
**Subtotal Sebastián banderas: 15 ejercicios nuevos (1 etapa, ~24 total con existentes)**
---
### TOTAL SEBASTIÁN FASE 2: **~460 ejercicios nuevos + 35 existentes = 495 ejercicios**
---
## 4. Arquitectura Técnica
### 4.1 Estructura de carpetas (nuevas marcadas con ⭐)
```
curriculum/
├── lectura/ # ISABELLA (existe)
├── numeros/ # ISABELLA (existe)
├── francesca/ # FRANCESCA matemáticas (etapa 1-4 existen, 5-10 ⭐)
├── francesca-lectura/ # FRANCESCA lectura (etapa 1-2 existen, 3-9 ⭐)
├── francesca-ortografia/ # ⭐ FRANCESCA ortografía (NUEVO)
├── sebastian/ # SEBASTIAN matemáticas (etapa 1-3 existen, 4-11 ⭐)
├── sebastian-lectura/ # ⭐ SEBASTIAN lectura (NUEVO)
├── sebastian-historia/ # SEBASTIAN historia (etapa 1-2 existen, 3-5 ⭐)
├── sebastian-geografia/ # ⭐ SEBASTIAN geografía (NUEVO)
└── sebastian-banderas/ # SEBASTIAN banderas (etapa 1 existe, 2 ⭐)
```
### 4.2 Actualización del Engine (`lib/curriculum/engine.ts`)
```typescript
const PROFILE_CURRICULA = {
ISABELLA: {
lectura: { folder: "lectura", stages: [1,2,3,4,5,6,7,8,9] },
numeros: { folder: "numeros", stages: [1,2,3,4,5,6,7,8] },
},
FRANCESCA: {
matematicas: { folder: "francesca", stages: [1,2,3,4,5,6,7,8,9,10] }, // +6 etapas
lecturas: { folder: "francesca-lectura", stages: [1,2,3,4,5,6,7,8,9] }, // +7 etapas
ortografia: { folder: "francesca-ortografia", stages: [1,2] }, // ⭐ NUEVO
},
SEBASTIAN: {
matematicas: { folder: "sebastian", stages: [1,2,3,4,5,6,7,8,9,10,11] }, // +8 etapas
lectura: { folder: "sebastian-lectura", stages: [1,2,3,4,5,6] }, // ⭐ NUEVO
historia: { folder: "sebastian-historia", stages: [1,2,3,4,5] }, // +3 etapas
geografia: { folder: "sebastian-geografia", stages: [1,2,3] }, // ⭐ NUEVO
banderas: { folder: "sebastian-banderas", stages: [1,2] }, // +1 etapa
},
}
```
### 4.3 Páginas y rutas nuevas
```
app/
├── francesca/
│ ├── page.tsx # existe
│ ├── matematicas/page.tsx # existe
│ ├── lecturas/page.tsx # existe
│ └── ortografia/page.tsx # ⭐ NUEVO
├── sebastian/
│ ├── page.tsx # existe (actualizar actividades)
│ ├── sumas/page.tsx # existe → renombrar a matematicas ⭐
│ ├── historia/page.tsx # existe
│ ├── banderas/page.tsx # existe
│ ├── lectura/page.tsx # ⭐ NUEVO
│ └── geografia/page.tsx # ⭐ NUEVO
```
### 4.4 Componentes a crear
- `app/francesca/ortografia/page.tsx` — wrapper de ExerciseSession con `topic="ortografia" profile="FRANCESCA"`
- `app/sebastian/lectura/page.tsx` — wrapper de ExerciseSession con `topic="lectura" profile="SEBASTIAN"`
- `app/sebastian/geografia/page.tsx` — wrapper de ExerciseSession con `topic="geografia" profile="SEBASTIAN"`
**No se requieren nuevos componentes de ejercicio** — todos los tipos existentes (`eleccion`, `lectura`, `problema`, `secuencia`, `conciencia`, `palabra`, `emparejar`) cubren las necesidades.
---
## 5. Metodología por Etapa (mapeo métodos europeos)
### 5.1 Montessori (matemática)
| Etapa | Material Montessori | Tipo de ejercicio |
|---|---|---|
| Conteo | Cilindos rojos, torres rosa | `sensibilizacion` |
| Suma/Resta | Cuentas doradas, banco | `conciencia`, `problema` |
| Multiplicación | Tabla de Pythagore, sellos | `eleccion` |
| División | Tubos de ensayo, sellos | `eleccion`, `problema` |
| Fracciones | Círculos rojos metálicos | `conciencia` |
| Decimales | Bloques base-10 | `conciencia` |
**Patrón**: cada ejercicio incluye `functionalContext` con referencia al material concreto.
### 5.2 Borel-Maisonny (lectura inicial - solo Isabella)
| Etapa | Gesto | Fonema |
|---|---|---|
| Vocales | Mano abierta / cerrada | a, e, i, o, u |
| Consonantes | Mano en boca, pecho | m, p, l, s, t, n, d, r |
**Patrón**: `audioText` describe el gesto + sonido.
### 5.3 Decroly (comprensión - Francesca y Sebastián)
| Centro de interés | Etapa | Contenido |
|---|---|---|
| La familia | Francesca 3 | Relaciones, roles |
| Los animales | Francesca 4 | Clasificación, hábitat |
| Las estaciones | Francesca 5 | Tiempo, clima |
| La escuela | Francesca 6 | Rutina, normas |
| Ciencia/Historia | Sebastián 3 | Textos expositivos |
**Patrón**: textos cortos (3-8 oraciones) + preguntas de hecho/inferencia/vocabulario.
### 5.4 Freinet (expresión - Sebastián)
| Habilidad | Etapa | Tipo |
|---|---|---|
| Texto libre | Sebastián 5 | Completar párrafos |
| Correspondencia | Sebastián 6 | Estructura de carta |
**Patrón**: `secuencia` para ordenar ideas, `palabra` para completar.
---
## 6. Prerequisitos y Cadenas de Aprendizaje
### 6.1 Regla general
Cada etapa nueva sigue el patrón de cadena lineal ya establecido:
- `etapa-N[0]` depende de `etapa-(N-1)[last]` (encadena con etapa anterior)
- `etapa-N[i>0]` depende de `etapa-N[i-1]` (encadena dentro de la etapa)
- Primer ejercicio de la materia: sin prerequisitos
### 6.2 Verificación crítica
**PROHIBIDO**: prerequisitos auto-referenciales (`ex.id === ex.prerequisites[0]`). Este fue un bug crítico detectado en Fase 1 que bloquea TODOS los ejercicios de una etapa.
**Validación automática**: crear test E2E que recorra cada etapa y verifique que ningún ejercicio tenga prerequisito a sí mismo o a IDs inexistentes.
---
## 7. Plan de Implementación por Fases
### FASE 2.1 — Francesca Matemáticas (Prioridad: ALTA)
- **Archivos**: `curriculum/francesca/etapa-5.ts` ... `etapa-10.ts` (6 archivos nuevos)
- **Ejercicios**: ~178 nuevos
- **Carpeta engine**: añadir etapas 5-10 a FRANCESCA.matematicas
- **Verificación**: API devuelve ejercicios para cada etapa nueva
### FASE 2.2 — Francesca Lectura (Prioridad: ALTA)
- **Archivos**: `curriculum/francesca-lectura/etapa-3.ts` ... `etapa-9.ts` (7 archivos nuevos)
- **Ejercicios**: ~195 nuevos
- **Verificación**: API devuelve textos para cada centro de interés
### FASE 2.3 — Francesca Ortografía (Prioridad: MEDIA)
- **Archivos**: `curriculum/francesca-ortografia/etapa-1.ts`, `etapa-2.ts` (2 archivos)
- **Página nueva**: `app/francesca/ortografia/page.tsx`
- **Ejercicios**: 60 nuevos
- **Engine**: añadir `ortografia` a FRANCESCA
### FASE 2.4 — Sebastián Matemáticas (Prioridad: ALTA)
- **Archivos**: `curriculum/sebastian/etapa-4.ts` ... `etapa-11.ts` (8 archivos nuevos)
- **Ejercicios**: ~200 nuevos
- **Renombrar**: `app/sebastian/sumas/``app/sebastian/matematicas/` (o crear alias)
### FASE 2.5 — Sebastián Lectura (Prioridad: ALTA)
- **Archivos**: `curriculum/sebastian-lectura/etapa-1.ts` ... `etapa-6.ts` (6 archivos)
- **Página nueva**: `app/sebastian/lectura/page.tsx`
- **Ejercicios**: 160 nuevos
### FASE 2.6 — Sebastián Cultura General (Prioridad: MEDIA)
- **Historia**: `curriculum/sebastian-historia/etapa-3.ts` ... `etapa-5.ts` (3 archivos, 45 ej)
- **Geografía**: `curriculum/sebastian-geografia/etapa-1.ts` ... `etapa-3.ts` (3 archivos, 40 ej)
- **Banderas**: `curriculum/sebastian-banderas/etapa-2.ts` (1 archivo, 15 ej)
- **Página nueva**: `app/sebastian/geografia/page.tsx`
### FASE 2.7 — Integración, Tests, Deploy (Prioridad: CRÍTICA)
- Actualizar `lib/curriculum/engine.ts` con todas las etapas
- Actualizar `app/francesca/page.tsx` (añadir botón ortografía)
- Actualizar `app/sebastian/page.tsx` (añadir botones lectura, geografía)
- E2E tests: verificar existencia de archivos, prereqs válidos, API responde
- TypeScript compila
- Build pasa
- Push a Gitea
---
## 8. Métricas de Éxito
| Criterio | Meta | Verificación |
|---|---|---|
| Ejercicios Francesca | ≥ 500 | Contar ejercicios en archivos + API |
| Ejercicios Sebastián | ≥ 500 | Contar ejercicios en archivos + API |
| Sin prereqs rotos | 100% | Test E2E recorre todas las etapas |
| API responde por perfil | 100% | curl a cada topic/profile devuelve exercise.id ≠ null |
| TypeScript compila | 0 errores | `npx tsc --noEmit` |
| E2E tests pasan | 100% | `npx playwright test` |
| Build pasa | sí | `npm run build` |
| Métodos europeos documentados | 100% | cada etapa tiene `functionalContext` con referencia al método |
---
## 9. Riesgos y Mitigaciones
| Riesgo | Impacto | Mitigación |
|---|---|---|
| Volumen muy alto para una sesión | No termina | Dividir en sub-fases 2.1-2.7, implementar incremental |
| Prereqs rotos (bug recurrente) | Bloquea ejercicios | Test E2E automático de validación de prereqs |
| Calidad de contenido desigual | Experiencia pobre | Plantillas estandarizadas por tipo de ejercicio |
| Textos de lectura muy largos para TTS | Audio lento/cortado | Limitar a 5-8 oraciones máximo |
| IDs duplicados entre etapas | Conflicto en FSRS | Prefijos únicos por etapa (fra5-*, seb7-*) |
---
## 10. Apéndice: Plantillas de Ejercicio
### Plantilla: Multiplicación Montessori
```typescript
{
id: `fra7-mult-${a}-${b}`,
stage: 7,
skillCode: `mult-2d-${a}x${b}`,
type: 'eleccion',
prerequisites: [`fra7-mult-${prev}`],
content: {
instruction: `Multiplicá: ${a} × ${b}`,
audioText: `${a} por ${b}`,
emoji: '✖️',
options: [
{ label: String(a*b), correct: true, id: String(a*b) },
{ label: String(a*b + b), correct: false, id: 'w1' },
{ label: String(a*b - a), correct: false, id: 'w2' },
].sort(() => Math.random() - 0.5),
},
functionalContext: `Multiplicar con método Montessori: descomponer ${a} en decenas y unidades.`,
errorType: 'confusion-letra',
}
```
### Plantilla: Comprensión Decroly
```typescript
{
id: `fra3-familia-${i}`,
stage: 3,
skillCode: `lectura-familia-${i}`,
type: 'lectura',
prerequisites: [`fra3-familia-${i-1}`],
content: {
instruction: 'Leé el texto y respondé:',
text: 'La familia de Ana tiene 4 personas. Mamá, papá, Ana y su hermano Tomás. Viven en una casa con jardín.',
audioText: '<texto completo>',
emoji: '👨‍👩‍👧‍👦',
options: [
{ label: '4', correct: true, id: '4' },
{ label: '3', correct: false, id: '3' },
{ label: '5', correct: false, id: '5' },
],
},
functionalContext: 'Centro de interés Decroly: la familia.',
errorType: 'omision-letra',
}
```
### Plantilla: Problema de varios pasos (Sebastián)
```typescript
{
id: `seb10-prob-${i}`,
stage: 10,
skillCode: `problema-multistep-${i}`,
type: 'problema',
prerequisites: [`seb10-prob-${i-1}`],
content: {
instruction: 'Problema:',
text: 'Compré 3 lápices a $15 cada uno y pagué con $100. ¿Cuánto vuelto recibí?',
audioText: '<texto completo>',
emoji: '✏️',
options: [
{ label: '$55', correct: true, id: '55' },
{ label: '$45', correct: false, id: '45' },
{ label: '$85', correct: false, id: '85' },
],
},
functionalContext: 'Problema de varios pasos: calcular total y vuelto.',
errorType: 'inversion-letra',
}
```
---
## 11. Estado: PENDIENTE DE IMPLEMENTACIÓN
Este plan está completo y aprobado conceptualmente. Falta:
- [ ] Implementar Fase 2.1 (Francesca matemáticas)
- [ ] Implementar Fase 2.2 (Francesca lectura)
- [ ] Implementar Fase 2.3 (Francesca ortografía)
- [ ] Implementar Fase 2.4 (Sebastián matemáticas)
- [ ] Implementar Fase 2.5 (Sebastián lectura)
- [ ] Implementar Fase 2.6 (Sebastián cultura general)
- [ ] Implementar Fase 2.7 (Integración + tests + deploy)
**Estimación**: ~937 ejercicios nuevos repartidos en ~40 archivos nuevos. Cada archivo toma ~10-15 minutos de generación asistida.