diff --git a/MEMORY.md b/MEMORY.md index 9f3fd0d..993ffc5 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -34,6 +34,9 @@ Ce projet est un POC de professeur virtuel pour enfants, avec: - Cote eleve, le bouton principal bascule entre `Demarrer la seance` et `Fin de la seance`. - Cote eleve, la colonne gauche affiche les themes du jour: une card lecon avec pourcentage local, une card exercice avec statut. - Le bilan complet de progression reste reserve aux vues prof/admin. +- Les options TTS visibles doivent etre libellees `Voix Douce`, `Voix Rigolote`, etc.; la mention "Voix IA non humaine..." est portee par un tooltip. +- Le declenchement manuel de mini-test/exercice doit disparaitre de l'interface eleve; le programme doit etre determine par Professeur TOP. +- A prevoir cote admin: tableau par eleve et prompts/instructions personnalises pour guider Professeur TOP par eleve. - Le vrai `docker-compose.yml` de production n'est pas dans ce repo. Il est situe un niveau au-dessus sur le serveur. - La conf nginx reelle route: - `/api/` vers `tutor-backend:8000` diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index e0b60c5..e87ab18 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -105,6 +105,13 @@ function getSupportedRecordingMimeType() { return candidates.find((type) => MediaRecorder.isTypeSupported(type)) || '' } +function formatVoiceLabel(profile) { + if (!profile?.label) return '' + return profile.label.toLowerCase().startsWith('voix ') + ? profile.label + : `Voix ${profile.label}` +} + function LoginPage({ onLogin }) { const [credentials, setCredentials] = useState({ username: '', password: '' }) const [status, setStatus] = useState('') @@ -935,9 +942,6 @@ function TutorApp({ currentUser, onLogout }) { {exerciseLabel}
{assessment?.skill_label || lessonFocus?.label || 'Aucun exercice lance.'}
- )} @@ -1020,10 +1024,19 @@ function TutorApp({ currentUser, onLogout }) { {voiceProfiles.map((profile) => ( ))} + {selectedVoiceProfile && ( + + i + + )} diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 4cfe124..76e4c7c 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -69,6 +69,9 @@ button:disabled { opacity: 0.5; cursor: not-allowed; } .student-layout .sidebar > .stack.small-gap { display: none; } +.admin-layout .sidebar > button:nth-of-type(2) { + display: none; +} .today-panel { display: flex; flex-direction: column; @@ -155,10 +158,22 @@ button:disabled { opacity: 0.5; cursor: not-allowed; } } .composer { display: grid; - grid-template-columns: 1fr 220px 130px 130px; + grid-template-columns: 1fr 190px 36px 130px 130px; gap: 0.75rem; flex: 0 0 auto; } +.voice-tooltip { + display: grid; + place-items: center; + width: 36px; + height: 100%; + min-height: 46px; + border-radius: 12px; + background: #e2e8f0; + color: #14213d; + font-weight: 700; + cursor: help; +} .assessment { display: none; flex: 0 0 auto;