Files
edueasy/curriculum/sebastian/etapa-11.ts
T
renato97 07929b6c60 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
2026-07-25 22:34:05 -03:00

96 lines
3.1 KiB
TypeScript
Raw 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.
import type { Stage } from "../types"
const exercises: any[] = []
// Perímetro de cuadrado y rectángulo
const perims = [
{ fig: "cuadrado", lado: 5, peri: 20 },
{ fig: "cuadrado", lado: 8, peri: 32 },
{ fig: "cuadrado", lado: 12, peri: 48 },
{ fig: "rectángulo", a: 6, b: 4, peri: 20 },
{ fig: "rectángulo", a: 8, b: 3, peri: 22 },
{ fig: "rectángulo", a: 10, b: 5, peri: 30 },
{ fig: "rectángulo", a: 7, b: 7, peri: 28 },
{ fig: "cuadrado", lado: 15, peri: 60 },
{ fig: "rectángulo", a: 9, b: 6, peri: 30 },
{ fig: "cuadrado", lado: 20, peri: 80 },
]
let idx = 0
for (const p of perims) {
const q = p.fig === "cuadrado"
? `Un cuadrado tiene lados de ${p.lado} cm. ¿Cuál es su perímetro?`
: `Un rectángulo mide ${p.a} cm × ${p.b} cm. ¿Cuál es su perímetro?`
exercises.push({
id: `seb11-geo-perim-${idx}`,
stage: 11,
skillCode: `perimetro-${idx}`,
type: "eleccion",
prerequisites: idx === 0 ? [] : [exercises[idx - 1].id],
content: {
instruction: q,
text: q,
audioText: q,
emoji: "📐",
options: [
{ label: `${p.peri} cm`, correct: true, id: `c-${idx}` },
{ label: `${p.peri + 5} cm`, correct: false, id: `w1-${idx}` },
{ label: `${p.peri - 5} cm`, correct: false, id: `w2-${idx}` },
].sort(() => Math.random() - 0.5),
},
functionalContext: "Calcular perímetros de cuadrados y rectángulos en problemas geométricos.. Método Montessori.",
errorType: "confusion-letra",
})
idx++
}
// Área básica
const areas = [
{ fig: "cuadrado", lado: 4, area: 16 },
{ fig: "rectángulo", a: 6, b: 3, area: 18 },
{ fig: "cuadrado", lado: 7, area: 49 },
{ fig: "rectángulo", a: 8, b: 5, area: 40 },
{ fig: "cuadrado", lado: 10, area: 100 },
{ fig: "rectángulo", a: 9, b: 4, area: 36 },
{ fig: "cuadrado", lado: 6, area: 36 },
{ fig: "rectángulo", a: 12, b: 5, area: 60 },
{ fig: "cuadrado", lado: 9, area: 81 },
{ fig: "rectángulo", a: 7, b: 5, area: 35 },
]
for (const a of areas) {
const q = a.fig === "cuadrado"
? `Un cuadrado tiene lados de ${a.lado} cm. ¿Cuál es su área?`
: `Un rectángulo mide ${a.a} cm × ${a.b} cm. ¿Cuál es su área?`
exercises.push({
id: `seb11-geo-area-${idx}`,
stage: 11,
skillCode: `area-${idx}`,
type: "eleccion",
prerequisites: [exercises[idx - 1].id],
content: {
instruction: q,
text: q,
audioText: q,
emoji: "📏",
options: [
{ label: `${a.area} cm²`, correct: true, id: `c-${idx}` },
{ label: `${a.area + 5} cm²`, correct: false, id: `w1-${idx}` },
{ label: `${a.area - 5} cm²`, correct: false, id: `w2-${idx}` },
].sort(() => Math.random() - 0.5),
},
functionalContext: "Calcular áreas de cuadrados y rectángulos en problemas geométricos básicos.. Método Montessori.",
errorType: "confusion-letra",
})
idx++
}
const stage: Stage = {
id: 11,
name: "Geometría básica",
description: "Calcular perímetros de cuadrados y rectángulos, y áreas básicas.",
exercises,
}
export default stage