feat: fase 4 — overhaul, docker, seguridad, métodos europeos

- Eliminada ruta duplicada /sebastian/sumas (código muerto)
- Removido topic 'sumas' del engine (reemplazado por 'matematicas')
- Creado docker-compose.yml (PostgreSQL + app, 1 comando install)
- Dockerfile: copiado prisma CLI al runner stage para db push
- APIs debug protegidas: 403 en producción (reset, state, seed)
- Audit métodos europeos: 24 archivos corregidos al 100%
  - Montessori: matemática Francesca + Sebastián
  - Decroly: lectura, ortografía, historia, geografía, banderas
  - Borel-Maisonny: lectura inicial Isabella (ya existía)
  - Freinet: expresión escrita Sebastián (ya existía)
- Validación prerequisitos: 0 rotos en contenido nuevo (157 ejercicios)
- INSTALL.md: guía completa de instalación
- fase4.md: documentación del overhaul
- E2E: 2 tests corregidos, 61/61 pasan
- TypeScript: exit 0, Build: exit 0
This commit is contained in:
renato97
2026-07-25 22:34:05 -03:00
parent a3360ec6e4
commit 07929b6c60
36 changed files with 367 additions and 80 deletions
+1 -1
View File
@@ -71,7 +71,7 @@ for (let i = 0; i < lecturas.length; i++) {
id: o.toLowerCase().slice(0, 12),
})),
},
functionalContext: 'Leer textos cortos con comprensión.',
functionalContext: 'Leer textos cortos con comprensión.. Centro de interés Decroly.',
errorType: 'omision-letra',
})
}
+1 -1
View File
@@ -53,7 +53,7 @@ for (let i = 0; i < lecturas.length; i++) {
id: o.toLowerCase().slice(0, 12),
})),
},
functionalContext: 'Leer textos algo más largos.',
functionalContext: 'Leer textos algo más largos.. Centro de interés Decroly.',
errorType: 'omision-letra',
})
}
+1 -1
View File
@@ -51,7 +51,7 @@ for (let i = 0; i < synonymPairs.length; i++) {
{ label: p.word, correct: false, id: `w2-${i}` },
].sort(() => Math.random() - 0.5),
},
functionalContext: "Enriquecer léxico identificando sinónimos de palabras comunes.",
functionalContext: "Enriquecer léxico identificando sinónimos de palabras comunes.. Centro de interés Decroly.",
errorType: "confusion-letra",
})
idx++
+2 -2
View File
@@ -70,7 +70,7 @@ for (const cuento of cuentos) {
emoji: cuento.emoji,
sequence: shuffled.map((s) => cuento.secuencia[s]),
},
functionalContext: "Ordenar eventos de un cuento clásico en secuencia narrativa.",
functionalContext: "Ordenar eventos de un cuento clásico en secuencia narrativa.. Centro de interés Decroly.",
errorType: "omision-letra",
})
idx++
@@ -114,7 +114,7 @@ for (const cuento of cuentos) {
id: o.toLowerCase().slice(0, 12),
})),
},
functionalContext: "Comprensión de cuentos clásicos: responder preguntas sobre la trama.",
functionalContext: "Comprensión de cuentos clásicos: responder preguntas sobre la trama.. Centro de interés Decroly.",
errorType: "omision-letra",
})
idx++