Files
edueasy/curriculum/francesca-lectura/etapa-4.ts
T
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

132 lines
6.4 KiB
TypeScript

import type { Stage } from "../types"
const lecturas = [
{
text: "Los perros son mamíferos. Tienen cuatro patas y pelo. Les gusta jugar y salir a pasear. Son mascotas muy cariñosas.",
preguntas: [
{ q: "¿Cuántas patas tienen los perros?", op: ["Cuatro", "Dos", "Seis"], correcta: "Cuatro" },
{ q: "¿Qué les gusta hacer a los perros?", op: ["Jugar y pasear", "Nadar", "Volar"], correcta: "Jugar y pasear" },
{ q: "¿Cómo son los perros como mascotas?", op: ["Cariñosos", "Peligrosos", "Tímidos"], correcta: "Cariñosos" },
],
emoji: "🐕",
},
{
text: "Los gatos son ágiles y sigilosos. Tienen ojos que ven en la oscuridad. Les gusta cazar ratones y dormir al sol.",
preguntas: [
{ q: "¿Qué tienen los gatos en sus ojos?", op: ["Ven en la oscuridad", "Son azules", "Son grandes"], correcta: "Ven en la oscuridad" },
{ q: "¿Qué les gusta cazar?", op: ["Ratones", "Pájaros", "Peces"], correcta: "Ratones" },
{ q: "¿Dónde les gusta dormir?", op: ["Al sol", "En el agua", "En los árboles"], correcta: "Al sol" },
],
emoji: "🐱",
},
{
text: "Las aves tienen alas y plumas. La mayoría puede volar. Ponen huevos y construyen nidos en los árboles.",
preguntas: [
{ q: "¿Qué tienen las aves para volar?", op: ["Alas y plumas", "Aletas", "Patas largas"], correcta: "Alas y plumas" },
{ q: "¿Qué ponen las aves?", op: ["Huevos", "Leche", "Flores"], correcta: "Huevos" },
{ q: "¿Dónde construyen sus nidos?", op: ["En los árboles", "En el agua", "En las cuevas"], correcta: "En los árboles" },
],
emoji: "🐦",
},
{
text: "Los peces viven en el agua. Tienen escamas y aletas para nadar. Respiran por branquias. Hay peces de muchos colores.",
preguntas: [
{ q: "¿Cómo respiran los peces?", op: ["Por branquias", "Por pulmones", "Por la piel"], correcta: "Por branquias" },
{ q: "¿Qué tienen los peces para nadar?", op: ["Aletas", "Patas", "Alas"], correcta: "Aletas" },
{ q: "¿Dónde viven los peces?", op: ["En el agua", "En la tierra", "En el aire"], correcta: "En el agua" },
],
emoji: "🐟",
},
{
text: "Las mariposas son insectos. Tienen seis patas y dos alas de colores. Salen de una oruga después de hacer un capullo.",
preguntas: [
{ q: "¿Cuántas patas tienen las mariposas?", op: ["Seis", "Cuatro", "Ocho"], correcta: "Seis" },
{ q: "¿De qué sale la mariposa?", op: ["De una oruga", "De un huevo", "Del agua"], correcta: "De una oruga" },
{ q: "¿Qué hacen antes de ser mariposa?", op: ["Un capullo", "Un nido", "Un agujero"], correcta: "Un capullo" },
],
emoji: "🦋",
},
{
text: "Los elefantes son los animales más grandes de la tierra. Tienen trompa larga y orejas grandes. Pueden pesar hasta 6.000 kilos.",
preguntas: [
{ q: "¿Cuál es el animal más grande de la tierra?", op: ["El elefante", "La jirafa", "El oso"], correcta: "El elefante" },
{ q: "¿Cuánto puede pesar un elefante?", op: ["6.000 kilos", "1.000 kilos", "10.000 kilos"], correcta: "6.000 kilos" },
{ q: "¿Qué tienen los elefantes en la cabeza?", op: ["Orejas grandes", "Cuernos", "Melena"], correcta: "Orejas grandes" },
],
emoji: "🐘",
},
{
text: "Los delfines son mamíferos marinos. Son muy inteligentes y juguetones. Saltan fuera del agua y se comunican con silbidos.",
preguntas: [
{ q: "¿Cómo se comunican los delfines?", op: ["Con silbidos", "Con ladridos", "Con rugidos"], correcta: "Con silbidos" },
{ q: "¿Qué hacen los delfines fuera del agua?", op: ["Saltan", "Vuelan", "Caminan"], correcta: "Saltan" },
{ q: "¿Cómo son los delfines?", op: ["Inteligentes y juguetones", "Perezosos y dormilones", "Agresivos y solitarios"], correcta: "Inteligentes y juguetones" },
],
emoji: "🐬",
},
{
text: "Las abejas hacen miel. Viven en colmenas y trabajan en equipo. Vuelan de flor en flor recogiendo néctar.",
preguntas: [
{ q: "¿Dónde viven las abejas?", op: ["En colmenas", "En nidos", "En cuevas"], correcta: "En colmenas" },
{ q: "¿Qué hacen las abejas?", op: ["Miel", "Leche", "Pan"], correcta: "Miel" },
{ q: "¿Qué recogen de las flores?", op: ["Néctar", "Polvo", "Agua"], correcta: "Néctar" },
],
emoji: "🐝",
},
{
text: "Los leones son felinos salvajes. Viven en África. El macho tiene una melena grande. Son conocidos como los reyes de la selva.",
preguntas: [
{ q: "¿Dónde viven los leones?", op: ["En África", "En Asia", "En Europa"], correcta: "En África" },
{ q: "¿Qué tiene el león macho?", op: ["Una melena grande", "Cuernos", "Rayas"], correcta: "Una melena grande" },
{ q: "¿Cómo son conocidos los leones?", op: ["Reyes de la selva", "Reyes del mar", "Reyes del cielo"], correcta: "Reyes de la selva" },
],
emoji: "🦁",
},
{
text: "Los pingüinos viven en el Polo Sur. No vuelan pero nadan muy bien. Tienen plumaje negro y blanco. Cuidan sus huevos en el hielo.",
preguntas: [
{ q: "¿Dónde viven los pingüinos?", op: ["En el Polo Sur", "En el Polo Norte", "En la selva"], correcta: "En el Polo Sur" },
{ q: "¿Qué hacen muy bien los pingüinos?", op: ["Nadan", "Vuelan", "Corren"], correcta: "Nadan" },
{ q: "¿De qué color son los pingüinos?", op: ["Negro y blanco", "Marrón y blanco", "Gris y blanco"], correcta: "Negro y blanco" },
],
emoji: "🐧",
},
]
const exercises: any[] = []
let idx = 0
for (const l of lecturas) {
for (const p of l.preguntas) {
exercises.push({
id: `fra4-animales-${idx}`,
stage: 4,
skillCode: `lectura-animales-${idx}`,
type: "lectura",
prerequisites: idx === 0 ? [`fra3-familia-29`] : [`fra4-animales-${idx - 1}`],
content: {
instruction: p.q,
text: l.text,
audioText: l.text,
emoji: l.emoji,
options: p.op.map((o) => ({
label: o,
correct: o === p.correcta,
id: o.toLowerCase().slice(0, 12),
})),
},
functionalContext: "Centro de interés Decroly: los animales. Clasificación y características de mamíferos, aves, peces e insectos.",
errorType: "omision-letra",
})
idx++
}
}
const stage: Stage = {
id: 4,
name: 'Centro de interés: "Los animales"',
description: "Textos sobre animales con preguntas de comprensión (método Decroly).",
exercises,
}
export default stage