Commit graph

5 commits

Author SHA1 Message Date
72795e924e feat(t2-live): archi audio Voie A + Bugs 4/5/6 + indicateur de prise de parole (Sprint 6e)
- Voie A WAV : AudioContext unique au rate natif, tap AudioWorklet sur mixGain, uplink rate-aware 16k, alignement par horloge unique (fin offset/resample/concat). Anti-echo candidat. Cycle start=ws.onopen / stop=Terminer / cancel=aucun WAV.
- Bug 4 : 'Voir le rapport' route vers le rapport (navigatingAwayRef).
- Bug 5 : 'Annuler' (cancelDialogue) - arret sans evaluation, sans WAV, sans production.
- Bug 6 : 'Nouvelle simulation' route selon le type via champ tache propage (Report).
- Indicateur de prise de parole : state machine USER_SPEAKING/USER_SILENT (RMS + hysteresis).
- Cleanup : retrait instrumentation [BISECT] ; ref VAD renomme lastAiChunkTsRef.
- Removed : code mort mixTracksToInt16, resample16kTo24k + tests.
2026-06-29 14:31:38 +03:00
9bf95f5c05 fix(t2-live): exiger 30 mots de notes avant suggestions d'idées (parité EE)
handleIdees envoyait la consigne du sujet comme contenu_partiel, déclenchant
l'anti-blanc sans effort du candidat et provoquant un 400 sur les sujets à
consigne courte (< 30 mots). Envoie désormais les notes réelles du candidat
et désactive le bouton sous 30 mots (tooltip), aligné sur le comportement EE.
Le modal IdeesSuggestions reste le filet VALIDATION_ERROR.

Test: T2PreparationPage.test.tsx (bouton désactivé < 30 mots ; fetchIdees
reçoit les notes ≥ 30 mots).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-29 00:07:14 +03:00
b8eed80708 fix(useT2LiveSession): stabilize cleanup and connection
Some checks failed
CI / quality (push) Has been cancelled
fix: cancelTokenRef prevents double WS connections (StrictMode)
fix: closeAllRef ensures cleanup only runs on unmount
  259/259 frontend tests green
2026-04-27 02:26:13 +03:00
1d95166611 Sprint 6c — Frontend T2 Live UI + state machine + integration
feat(t2-live): state machine pure 9 states x 8 events (resolves FTD-09)
feat(t2-live): useT2LiveSession WS orchestrator + audio hooks + close codes
feat(t2-live): T2SujetsPage, T2PreparationPage (2min timer + notes + ideas),
  T2DialoguePage (3:30 dialogue + terminal screen with WAV download)
feat(t2-live): T2LiveContext provider for sujet sharing between pages
fix(TaskSelector): unlock EO_T2_LIVE card via hasAccess (resolves FTD-33)
chore: Tache type + labels + config extended with EO_T2_LIVE
test: 21 t2-machine tests — 259/259 green (+21)
2026-04-26 20:32:02 +03:00
7862f7c9f3 Sprint 6b — Frontend audio capture + playback hooks
feat(audio): pcm-capture-processor.js AudioWorklet (16kHz resample, Int16 LE)
feat(hooks): useAudioCapture (getUserMedia + worklet + onChunk base64)
feat(hooks): useAudioPlayback (24kHz sequential scheduling, gap-free)
feat(hooks): useAudioRecording (chronological buffer, resample 16→24k, WAV export)
feat(lib): audio-utils (base64, int16/float32, resample, WAV header)
test: 12 audio-utils + 7 useAudioRecording = 238/238 green (+19)
2026-04-26 20:12:36 +03:00