feat: Puente Mayúscula-Minúscula + TTS SpeechSynthesis + E2E fixes
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import type { Stage } from '../types'
|
||||
|
||||
const palabras3silabas = [
|
||||
{ palabra: 'MALETA', silabas: ['MA', 'LE', 'TA'], emoji: '🧳' },
|
||||
{ palabra: 'PALETA', silabas: ['PA', 'LE', 'TA'], emoji: '🎨' },
|
||||
{ palabra: 'SALIDA', silabas: ['SA', 'LI', 'DA'], emoji: '🚪' },
|
||||
{ palabra: 'TELÉFONO', silabas: ['TE', 'LÉ', 'FO', 'NO'], emoji: '📞' },
|
||||
{ palabra: 'MARIPOSA', silabas: ['MA', 'RI', 'PO', 'SA'], emoji: '🦋' },
|
||||
{ palabra: 'MUSICA', silabas: ['MU', 'SI', 'CA'], emoji: '🎵' },
|
||||
{ palabra: 'PLATO', silabas: ['PLA', 'TO'], emoji: '🍽️' },
|
||||
{ palabra: 'TRISTE', silabas: ['TRIS', 'TE'], emoji: '😢' },
|
||||
{ palabra: 'PLUMA', silabas: ['PLU', 'MA'], emoji: '🪶' },
|
||||
{ palabra: 'PANTALLA', silabas: ['PAN', 'TA', 'LLA'], emoji: '📺' },
|
||||
{ palabra: 'PRIMAVERA', silabas: ['PRI', 'MA', 'VE', 'RA'], emoji: '🌸' },
|
||||
{ palabra: 'MELÓN', silabas: ['ME', 'LÓN'], emoji: '🍈' },
|
||||
{ palabra: 'SILLA', silabas: ['SI', 'LLA'], emoji: '🪑' },
|
||||
{ palabra: 'TORTUGA', silabas: ['TOR', 'TU', 'GA'], emoji: '🐢' },
|
||||
{ palabra: 'DORMIR', silabas: ['DOR', 'MIR'], emoji: '😴' },
|
||||
{ palabra: 'RATÓN', silabas: ['RA', 'TÓN'], emoji: '🐭' },
|
||||
{ palabra: 'NARIZ', silabas: ['NA', 'RIZ'], emoji: '👃' },
|
||||
{ palabra: 'LÁPIZ', silabas: ['LÁ', 'PIZ'], emoji: '✏️' },
|
||||
{ palabra: 'DINOSAURIO', silabas: ['DI', 'NO', 'SAU', 'RIO'], emoji: '🦕' },
|
||||
{ palabra: 'ELEFANTE', silabas: ['E', 'LE', 'FAN', 'TE'], emoji: '🐘' },
|
||||
]
|
||||
|
||||
const exercises: any[] = []
|
||||
|
||||
for (const { palabra, silabas, emoji } of palabras3silabas) {
|
||||
const lowerPalabra = palabra.toLowerCase().replace(/[^a-záéíóú]/g, '')
|
||||
|
||||
// Read the word
|
||||
exercises.push({
|
||||
id: `lec7-${lowerPalabra}-leer`,
|
||||
stage: 7,
|
||||
skillCode: `palabra-${lowerPalabra}`,
|
||||
type: 'eleccion',
|
||||
prerequisites: ['lec6-palabra-mapa-leer'],
|
||||
content: {
|
||||
instruction: `Leé esta palabra: ${palabra}`,
|
||||
text: palabra,
|
||||
audioText: `${palabra}`,
|
||||
emoji,
|
||||
options: [
|
||||
{ label: palabra, correct: true, id: lowerPalabra },
|
||||
...palabras3silabas
|
||||
.filter(p => p.palabra !== palabra)
|
||||
.slice(0, 2)
|
||||
.map(p => ({ label: p.palabra, correct: false, id: p.palabra.toLowerCase().replace(/[^a-záéíóú]/g, '') })),
|
||||
],
|
||||
},
|
||||
functionalContext: `Leer la palabra ${palabra}.`,
|
||||
errorType: 'silaba-dificil',
|
||||
})
|
||||
|
||||
// Count syllables
|
||||
exercises.push({
|
||||
id: `lec7-${lowerPalabra}-silabas`,
|
||||
stage: 7,
|
||||
skillCode: `palabra-${lowerPalabra}`,
|
||||
type: 'conciencia',
|
||||
prerequisites: [`lec7-${lowerPalabra}-leer`],
|
||||
content: {
|
||||
instruction: `¿Cuántas sílabas tiene ${palabra}?`,
|
||||
text: palabra,
|
||||
audioText: `¿Cuántas sílabas?`,
|
||||
options: [
|
||||
{ label: `${'👏'.repeat(silabas.length)} ${silabas.length}`, correct: true, id: `${silabas.length}` },
|
||||
{ label: `${'👏'.repeat(Math.max(1, silabas.length - 1))} ${silabas.length - 1}`, correct: false, id: `${silabas.length - 1}` },
|
||||
{ label: `${'👏'.repeat(silabas.length + 1)} ${silabas.length + 1}`, correct: false, id: `${silabas.length + 1}` },
|
||||
],
|
||||
emoji,
|
||||
},
|
||||
functionalContext: `Contar sílabas en ${palabra}.`,
|
||||
errorType: 'discriminacion-auditiva',
|
||||
})
|
||||
|
||||
// Match image
|
||||
exercises.push({
|
||||
id: `lec7-${lowerPalabra}-imagen`,
|
||||
stage: 7,
|
||||
skillCode: `palabra-${lowerPalabra}`,
|
||||
type: 'palabra',
|
||||
prerequisites: [`lec7-${lowerPalabra}-silabas`],
|
||||
content: {
|
||||
instruction: `¿Qué palabra es?`,
|
||||
imageEmoji: emoji,
|
||||
audioText: `¿Cuál es?`,
|
||||
options: [
|
||||
...palabras3silabas
|
||||
.filter(p => p.palabra !== palabra)
|
||||
.slice(0, 2)
|
||||
.map(p => ({ label: p.palabra, correct: false, id: p.palabra.toLowerCase().replace(/[^a-záéíóú]/g, '') })),
|
||||
{ label: palabra, correct: true, id: lowerPalabra },
|
||||
{ label: 'Escuchar 👂', correct: false, id: 'escuchar' },
|
||||
],
|
||||
},
|
||||
functionalContext: `Asociar la palabra ${palabra} con su imagen.`,
|
||||
errorType: 'confusion-letra',
|
||||
})
|
||||
}
|
||||
|
||||
const stage: Stage = {
|
||||
id: 7,
|
||||
name: 'Palabras de 3+ sílabas',
|
||||
description: 'Leer y comprender palabras de 3 o más sílabas con sílabas compuestas.',
|
||||
exercises,
|
||||
}
|
||||
|
||||
export default stage
|
||||
Reference in New Issue
Block a user