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
69 lines
6.0 KiB
TypeScript
69 lines
6.0 KiB
TypeScript
import type { Stage } from "../types"
|
|
|
|
const problems = [
|
|
{ q: "Compré 3 lápices a $15 cada uno y pagué con $100. ¿Cuánto vuelto recibí?", correct: "$55", wrong1: "$45", wrong2: "$85", emoji: "✏️" },
|
|
{ q: "Tenía 45 figuritas. Regalé 18. Mi hermano me dio 12 más. ¿Cuántas tengo ahora?", correct: "39", wrong1: "35", wrong2: "42", emoji: "🃏" },
|
|
{ q: "En una granja hay 24 vacas y el doble de gallinas. ¿Cuántos animales hay?", correct: "72", wrong1: "48", wrong2: "96", emoji: "🐄" },
|
|
{ q: "Una caja tiene 12 bombones. Compré 5 cajas. Repartí 18 bombones en la fiesta. ¿Cuántos me quedan?", correct: "42", wrong1: "38", wrong2: "48", emoji: "🍫" },
|
|
{ q: "Lucas ahorra $25 por semana. ¿Cuánto ahorra en 4 semanas? Si gasta $30 en un juguete, ¿cuánto le queda?", correct: "$70", wrong1: "$60", wrong2: "$80", emoji: "🏦" },
|
|
{ q: "En una biblioteca hay 5 estantes con 30 libros cada uno. Se prestaron 42 libros. ¿Cuántos quedan?", correct: "108", wrong1: "98", wrong2: "112", emoji: "📚" },
|
|
{ q: "Un autobús lleva 45 pasajeros. En la primera parada bajan 12 y suben 8. ¿Cuántos pasajeros hay ahora?", correct: "41", wrong1: "39", wrong2: "43", emoji: "🚌" },
|
|
{ q: "María tiene 8 años. Su mamá tiene el triple de años que ella. ¿Cuántos años tiene la mamá?", correct: "24", wrong1: "22", wrong2: "26", emoji: "👩👧" },
|
|
{ q: "Había 36 galletitas en un frasco. Comí 9. Después mamá puso 15 más. ¿Cuántas hay ahora?", correct: "42", wrong1: "38", wrong2: "45", emoji: "🍪" },
|
|
{ q: "Un equipo anotó 12 puntos en el primer tiempo y 18 en el segundo. El otro equipo anotó 21 en total. ¿Quién ganó?", correct: "El primero", wrong1: "El segundo", wrong2: "EMPATE", emoji: "🏀" },
|
|
{ q: "Compré 2 paquetes de figuritas a $8 cada uno y 3 caramelos a $2 cada uno. ¿Cuánto gasté?", correct: "$22", wrong1: "$20", wrong2: "$24", emoji: "🛍️" },
|
|
{ q: "Un rectángulo mide 8 cm de largo y 5 cm de ancho. ¿Cuál es su perímetro?", correct: "26 cm", wrong1: "24 cm", wrong2: "28 cm", emoji: "📐" },
|
|
{ q: "En un kiosco vendieron 35 helados el sábado y 28 el domingo. Cada helado cuesta $4. ¿Cuánto recaudaron?", correct: "$252", wrong1: "$240", wrong2: "$260", emoji: "🍦" },
|
|
{ q: "Tres amigos juntan su dinero: Juan $50, Ana $75 y Pedro $25. Quieren comprar un juego de $180. ¿Cuánto les falta?", correct: "$30", wrong1: "$20", wrong2: "$40", emoji: "🎮" },
|
|
{ q: "Un paquete de 6 facturas cuesta $18. ¿Cuánto cuesta cada factura? ¿Cuánto cuestan 10 facturas?", correct: "$30", wrong1: "$28", wrong2: "$32", emoji: "🥐" },
|
|
{ q: "Un avión viaja a 800 km/h. ¿Cuántos kilómetros recorre en 3 horas?", correct: "2400 km", wrong1: "2200 km", wrong2: "2600 km", emoji: "✈️" },
|
|
{ q: "En un cine hay 20 filas de 15 butacas cada una. Se vendieron 240 entradas. ¿Cuántas butacas quedaron libres?", correct: "60", wrong1: "50", wrong2: "70", emoji: "🎬" },
|
|
{ q: "Valentina tiene $500. Gasta $180 en un libro y $95 en una remera. ¿Cuánto le queda?", correct: "$225", wrong1: "$215", wrong2: "$235", emoji: "👚" },
|
|
{ q: "Un tanque tiene 250 litros de agua. Se usaron 75 litros para regar y 120 para limpiar. ¿Cuántos litros quedan?", correct: "55 L", wrong1: "45 L", wrong2: "65 L", emoji: "💧" },
|
|
{ q: "En una carrera, el primero llegó en 45 minutos. El segundo llegó 12 minutos después. ¿En qué tiempo llegó el segundo?", correct: "57 min", wrong1: "55 min", wrong2: "59 min", emoji: "🏃" },
|
|
{ q: "Un productor tiene 350 manzanas. Vende 125 el lunes y 98 el martes. ¿Cuántas le quedan?", correct: "127", wrong1: "117", wrong2: "137", emoji: "🍎" },
|
|
{ q: "Hay 4 bolsas con 15 pelotitas cada una. Se caen 8 pelotitas. ¿Cuántas quedan?", correct: "52", wrong1: "48", wrong2: "55", emoji: "⚾" },
|
|
{ q: "Una receta usa 2 huevos. Si hacés 5 recetas, ¿cuántos huevos necesitás? Si tenés 15, ¿cuántos sobran?", correct: "5", wrong1: "3", wrong2: "7", emoji: "🥚" },
|
|
{ q: "Un jardín tiene 28 flores blancas y 14 rojas. La mitad de las blancas se marchitaron. ¿Cuántas flores quedan?", correct: "28", wrong1: "21", wrong2: "35", emoji: "🌸" },
|
|
{ q: "Ahorré $8 por mes durante 9 meses. Gasté la cuarta parte en un regalo. ¿Cuánto gasté?", correct: "$18", wrong1: "$16", wrong2: "$20", emoji: "🎁" },
|
|
{ q: "En un estacionamiento hay 4 filas de 12 autos cada una. Salen 15 autos. ¿Cuántos quedan?", correct: "33", wrong1: "30", wrong2: "36", emoji: "🚗" },
|
|
{ q: "Un álbum tiene 200 espacios. Tengo 85 figuritas. Mi amigo me da 30 más. ¿Cuántas me faltan?", correct: "85", wrong1: "75", wrong2: "95", emoji: "📖" },
|
|
{ q: "Un saco de papas pesa 25 kg. Si vendo 3 sacos y sobran 12 kg para mi casa, ¿cuántos kg vendí?", correct: "63 kg", wrong1: "58 kg", wrong2: "68 kg", emoji: "🥔" },
|
|
{ q: "Hay 120 libros en una biblioteca. El 50% son de cuentos. ¿Cuántos cuentos hay?", correct: "60", wrong1: "50", wrong2: "70", emoji: "📚" },
|
|
{ q: "Un termómetro marca 15°C. Sube 8°C y luego baja 12°C. ¿Cuánto marca ahora?", correct: "11°C", wrong1: "10°C", wrong2: "12°C", emoji: "🌡️" },
|
|
]
|
|
|
|
const exercises: any[] = []
|
|
for (let i = 0; i < problems.length; i++) {
|
|
const e = problems[i]
|
|
exercises.push({
|
|
id: `seb10-prob-${i}`,
|
|
stage: 10,
|
|
skillCode: `problema-multistep-${i}`,
|
|
type: "problema",
|
|
prerequisites: i === 0 ? [] : [exercises[i - 1].id],
|
|
content: {
|
|
instruction: "Resolvé el problema:",
|
|
text: e.q,
|
|
audioText: e.q,
|
|
emoji: e.emoji,
|
|
options: [
|
|
{ label: e.correct, correct: true, id: `c-${i}` },
|
|
{ label: e.wrong1, correct: false, id: `w1-${i}` },
|
|
{ label: e.wrong2, correct: false, id: `w2-${i}` },
|
|
].sort(() => Math.random() - 0.5),
|
|
},
|
|
functionalContext: "Resolver problemas de varios pasos que requieren 2-3 operaciones combinadas.",
|
|
errorType: "discriminacion-auditiva",
|
|
})
|
|
}
|
|
|
|
const stage: Stage = {
|
|
id: 10,
|
|
name: "Problemas de varios pasos",
|
|
description: "Resolver problemas que requieren 2-3 operaciones combinadas en contexto cotidiano.",
|
|
exercises,
|
|
}
|
|
|
|
export default stage
|