# 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 /transcribe` pour la transcription audio. - La route `/transcribe` utilise `UploadFile`, donc `python-multipart` est requis dans le backend. - 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` - `/` vers `tutor-frontend:3000` ## Dictée Vocale - L'ancien bouton de dictee marchait en mode manuel avec `MediaRecorder.start()` puis `stop()`. - 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 - Le frontend charge les voix du navigateur via `speechSynthesis.getVoices()`. - Une liste de voix est proposee dans l'interface. - Les voix francaises sont priorisees dans le tri. ## 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 des `502` ou si le micro se comporte mal. - En cas de `502` sur `/api/*`, verifier d'abord `docker logs tutor-backend`. ## Fichiers Touchés Pendant Cette Session - `frontend/src/App.jsx` - `frontend/vite.config.js` - `backend/app/main.py` - `backend/app/services.py` - `backend/requirements.txt`