4.9 KiB
4.9 KiB
Memoire Projet
Contexte
Ce projet est un POC de professeur virtuel pour enfants, avec:
- frontend React + Vite
- backend FastAPI
- PostgreSQL pour les donnees eleve
- Redis present dans la stack
- integration OpenAI pour reponses texte et transcription audio
Points Importants
- Le frontend appelle l'API via le prefixe
/api. - Le backend expose une route
POST /transcribepour la transcription audio. - La route
/transcribeutiliseUploadFile, doncpython-multipartest requis dans le backend. - Le backend a un socle d'authentification avec comptes
users, rolesstudent,teacher,maintenance. - Le compte admin/prof initial est seede depuis
.envviaADMIN_USERNAMEetADMIN_PASSWORD. - Le login pose un cookie HTTP-only
professeur_top_sessionet renvoie aussi un token bearer. - Le vrai
docker-compose.ymlde production n'est pas dans ce repo. Il est situe un niveau au-dessus sur le serveur. - La conf nginx reelle route:
/api/verstutor-backend:8000/verstutor-frontend:3000
Dictée Vocale
- L'ancien bouton de dictee marchait en mode manuel avec
MediaRecorder.start()puisstop(). - Le mode actuel est un mode mains libres:
- activation via un clic utilisateur
- enregistrement automatique
- detection du silence
- transcription automatique
- envoi automatique du message
- Firefox s'est montre capricieux avec la mesure temps reel via
AnalyserNode. - La solution retenue s'appuie sur un traitement plus direct du flux audio pour determiner le niveau sonore.
- L'ecoute se rearme automatiquement apres:
- la transcription/envoi du message eleve
- la fin de lecture vocale du professeur
Voix du Professeur
- L'ancien systeme de voix navigateur a ete remplace par une vraie TTS OpenAI.
- Le backend expose maintenant:
GET /tts/profilespour lister les profils de voixPOST /ttspour generer un MP3 a partir d'un texte et d'unprofile_id
- Les profils actuels sont:
rigolotepetillantedoucesobre
- Chaque profil TTS definit:
- une voix OpenAI
- une vitesse
- des instructions de style vocal
- Le frontend ne depend plus de
speechSynthesispour la voix sortante. - Le choix de voix est memorise dans
localStorageavec la cleprofesseur-top-tts-profile. - La lecture audio se fait via un blob MP3 retourne par le backend.
- Le mode micro auto doit continuer a se re-armer apres la fin de lecture du MP3.
Identite Produit
- Le personnage et le nom visibles dans le frontend ont ete renommes de
ProfAmiversProfesseur TOP. - Le nouvel avatar image est stocke dans:
frontend/src/assets/professeur-top.png
- Le composant avatar React utilise maintenant l'image raster au lieu du visage CSS/SVG precedent.
- Le backend a aussi ete aligne dans le prompt systeme et le message de debut de session avec le nom
Professeur TOP.
Notes de Session 2026-04-24 21:58:39 +02:00
- Repo clone dans
c:\DataS\OpenSquared\OpenSchool\ProfTop. safe.directoryGit ajoute globalement pour ce dossier a cause d'un mismatch d'ownership Windows.- Image utilisateur
face.pngintegree dans le frontend sousfrontend/src/assets/professeur-top.png. - Libelles assistant remplaces par
Professeur TOPdans l'UI. - README mis a jour pour refleter la TTS OpenAI au lieu de la voix navigateur.
- Le frontend n'a pas encore ete verifie par build local car
frontend/node_modulesest absent. - Lors d'un prochain demarrage, penser a installer les dependances frontend avant validation finale.
- La TTS OpenAI suppose une
OPENAI_API_KEYvalide cote backend.
Points de Vigilance
- Les erreurs WebSocket Vite/HMR sur
wss://prof.open-squared.tech/...sont du bruit de dev tant que le frontend tourne via Vite derriere nginx. - Ces erreurs ne sont pas la cause principale si
/api/*renvoie des502ou si le micro se comporte mal. - En cas de
502sur/api/*, verifier d'aborddocker logs tutor-backend. - Pour tester l'auth locale actuelle:
.envcontientADMIN_USERNAME=adminetADMIN_PASSWORD=admin; a changer avant tout usage partage.
Plan de Dev Acces Eleve / Admin
- Socle comptes et roles: table
users, hash password, seed admin depuis.env, login, session courante. - Separation UI:
LoginPage,StudentApp,AdminApp, composants partages. - Conversation persistante: endpoints de lecture messages, puis sessions et rattachement des messages/tentatives.
- UI eleve sans scroll: Professeur TOP en haut, log de seance a gauche, derniere instruction au centre, saisie/micro en bas.
- Dashboard prof/admin: creation eleves/comptes, rapports, historique seances, conversation complete, stats de reussite.
Fichiers Touchés Pendant Cette Session
frontend/src/App.jsxfrontend/src/styles.cssfrontend/src/assets/professeur-top.pngfrontend/vite.config.jsbackend/app/main.pybackend/app/schemas.pybackend/app/services.pybackend/requirements.txtREADME.mdMEMORY.md