Bug Cards
This commit is contained in:
@@ -184,6 +184,8 @@ def build_lesson_reply(db: Session, student_id: int, user_message: str, lesson_c
|
||||
"Si un nombre n'est pas affiché ou autorisé dans ce contexte, tu n'en parles pas. "
|
||||
"Ne propose jamais 'un autre nombre' si le contexte ne donne pas cet autre nombre. "
|
||||
"Si l'élève veut continuer mais que la card courante est terminée, mets `advance_lesson_step` à true. "
|
||||
"Quand `advance_lesson_step` vaut true, ta réponse doit seulement dire: "
|
||||
"`Très bien, on passe à la suite.` Ne répète pas le nombre de la card terminée. "
|
||||
"N'utilise pas l'historique des séances précédentes pour choisir le thème de ta réponse. "
|
||||
"Ta réponse visible doit être très courte: maximum 24 mots, 1 phrase d'explication "
|
||||
"puis éventuellement 1 question courte. Évite les phrases longues avec plusieurs propositions. "
|
||||
|
||||
@@ -730,15 +730,40 @@ function TutorApp({ currentUser, onLogout }) {
|
||||
}
|
||||
|
||||
function goToNextLessonStep() {
|
||||
const nextStep = getNextLessonStep()
|
||||
if (!nextStep) return
|
||||
setActiveAssetIndex(nextStep.assetIndex)
|
||||
setActiveSectionIndex(nextStep.sectionIndex)
|
||||
}
|
||||
|
||||
function getNextLessonStep() {
|
||||
const sectionCount = activeSections.length || 1
|
||||
if (activeSectionIndex < sectionCount - 1) {
|
||||
setActiveSectionIndex((index) => index + 1)
|
||||
return
|
||||
return {
|
||||
assetIndex: activeAssetIndex,
|
||||
sectionIndex: activeSectionIndex + 1,
|
||||
asset: activeAsset,
|
||||
section: activeSections[activeSectionIndex + 1],
|
||||
}
|
||||
}
|
||||
if (activeAssetIndex < lessonAssets.length - 1) {
|
||||
setActiveAssetIndex((index) => index + 1)
|
||||
setActiveSectionIndex(0)
|
||||
const nextAsset = lessonAssets[activeAssetIndex + 1]
|
||||
return {
|
||||
assetIndex: activeAssetIndex + 1,
|
||||
sectionIndex: 0,
|
||||
asset: nextAsset,
|
||||
section: nextAsset?.sections?.[0] || null,
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
function buildNextCardInstruction(nextStep) {
|
||||
const title = nextStep?.section?.title || nextStep?.asset?.title || 'la suite'
|
||||
if (title.toLowerCase().startsWith('exemple')) {
|
||||
return `Très bien, on passe à ${title}. Lis seulement le nombre affiché.`
|
||||
}
|
||||
return `Très bien, on passe à ${title}. Regarde cette card.`
|
||||
}
|
||||
|
||||
function getSectionKey(asset, section) {
|
||||
@@ -926,15 +951,25 @@ function TutorApp({ currentUser, onLogout }) {
|
||||
...getLessonContextPayload(),
|
||||
}),
|
||||
})
|
||||
appendMessage('assistant', data.reply)
|
||||
setCurrentInstruction(data.reply)
|
||||
if (data.advance_lesson_step) {
|
||||
rememberActiveCard({ score: 100, validated: true })
|
||||
goToNextLessonStep()
|
||||
const nextStep = getNextLessonStep()
|
||||
const transitionReply = nextStep
|
||||
? buildNextCardInstruction(nextStep)
|
||||
: 'Très bien, cette fiche est terminée.'
|
||||
if (nextStep) {
|
||||
setActiveAssetIndex(nextStep.assetIndex)
|
||||
setActiveSectionIndex(nextStep.sectionIndex)
|
||||
}
|
||||
appendMessage('assistant', transitionReply)
|
||||
setCurrentInstruction(transitionReply)
|
||||
speak(transitionReply)
|
||||
} else {
|
||||
rememberActiveCard({ score: 40, validated: false })
|
||||
appendMessage('assistant', data.reply)
|
||||
setCurrentInstruction(data.reply)
|
||||
speak(data.reply)
|
||||
}
|
||||
speak(data.reply)
|
||||
}
|
||||
|
||||
async function transcribeRecording(audioBlob, mimeType, { autoSend = false } = {}) {
|
||||
|
||||
Reference in New Issue
Block a user