13aacf4d38
fix(deepseek): adaptive conseil_nclc based on score vs NCLC target
...
- 4 tiers: exceeded / reached / close / far from target
- Applied to both EE and EO correction prompts
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 08:07:05 +03:00
c35727410c
Revert "debug(eo): log raw DeepSeek response on parse failure"
...
This reverts commit 9420612abf .
2026-04-25 07:41:58 +03:00
c473e54ae8
fix(deepseek): handle single-quote JSON from DeepSeek responses
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 07:41:58 +03:00
9420612abf
debug(eo): log raw DeepSeek response on parse failure
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 07:35:45 +03:00
4fde66d930
fix(eo): sanitize DeepSeek JSON response before parsing
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 07:25:47 +03:00
0c6e4cfac1
fix(gemini): upgrade model from 2.0-flash to 2.5-flash (404 fix)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 07:16:51 +03:00
ff46cf61a5
fix(eo): normalize MIME type before validation (strip codec params)
...
- "audio/webm;codecs=opus" → "audio/webm" before isAcceptedAudioMime check
- Normalized MIME propagated to Gemini transcribeAudio
Typecheck: OK · Tests: 248/248 ✅
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 06:50:48 +03:00
8f8a900449
feat(eo): restore audioBase64 mode for Gemini batch transcription
...
- POST /corrections/eo accepts audioBase64 + mimeType (XOR with transcript)
- Gemini transcribeAudio called server-side before correction
- No audio storage (client downloads locally)
- /transcriptions/token kept for future Deepgram live use
Typecheck: OK · Tests: all green
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 05:59:53 +03:00
14880fe94c
fix(deepgram): revert to /v1/auth/grant for temporary JWT tokens
...
- /v1/projects/{id}/keys creates permanent API keys, not WebSocket-compatible JWT tokens
- /v1/auth/grant requires Member-scoped API key (now configured)
- Remove DEEPGRAM_PROJECT_ID dependency
- Update tests
Typecheck: OK · Tests: 241/241 ✅
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 05:49:45 +03:00
a62b4816a2
fix(deepgram): use correct /v1/projects/{project_id}/keys endpoint
...
- Replace non-existent /v1/auth/grant with /v1/projects/{project_id}/keys
- Add DEEPGRAM_PROJECT_ID env variable
- Update request body and response parsing
- Update tests
Typecheck: OK · Tests: 241/241 ✅
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 05:36:19 +03:00
7cac057062
feat(eo): align correction EO on 3.6a format + Deepgram token + T1 presentation generation
...
Sprint 4a:
- correctEO aligned on CorrectionRapport format (revelation, diagnostic, criteres, conseil_nclc, erreurs_codes)
- nclc_cible parameter (default 9, accepts 9|10)
- Fire-and-forget modele + exercices jobs (same pattern as EE)
- EO-specific DeepSeek prompt (oral transcript tolerance, 4 TCF criteria)
- Gemini transcribeAudio: 30s timeout + 1 retry
- POST /presentations/generate: 5-field questionnaire → DeepSeek generates oral presentation (~220-260 words, NCLC 7-8)
- Migration 006_sprint_4a_eo.sql (documentation only — no audio storage)
Sprint 4b:
- POST /transcriptions/token: Deepgram temporary API key (600s TTL)
- Removed audio storage pipeline (audioStorage.ts, XOR validation, 14MB limit)
- Backend receives transcript text only, no audio files
- TD-10/TD-11 resolved (Sprint 3.6c), TD-16/17/18 resolved (4b cleanup)
Typecheck: OK · Tests: 241/241 ✅
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 05:04:26 +03:00
f5954e6d72
docs(changelog): add health check keepalive entry
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 02:29:05 +03:00
fa06daace8
fix(health): add Supabase keepalive ping to GET / health check
...
UptimeRobot pings GET / every 5 minutes. Previously static response
only kept Node process alive but let Supabase connection pool go cold.
Now executes a lightweight HEAD query (profiles, limit 1) to maintain
DB connection warmth. Always returns 200 with db status field for
observability.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 02:07:27 +03:00
b5980ccce2
ci(semgrep): scan SAST --severity=ERROR (FTD-28)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 02:46:41 +03:00
8b0c2f795a
ci: GitHub Actions workflow — test + audit (FTD-27)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 02:35:51 +03:00
5f5737c5a5
ci(dependabot): config version updates weekly (FTD-29)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 02:31:05 +03:00
c48ae8d443
feat(patterns): GET /users/patterns — agrégation erreurs récurrentes + exercices long terme + indice de préparation (Sprint 3.6c)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 22:06:14 +03:00
a394ce8429
feat(simulations): GET /simulations — liste paginée des productions (Sprint 3.7)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 20:54:36 +03:00
14d8d73991
fix(corrections): race condition modele_status + logs diagnostiques
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 20:13:56 +03:00
63bc43ddcf
feat(corrections): Sprint 3.6a — nouveaux prompts + taxonomie erreurs + génération parallèle
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 17:27:29 +03:00
df7ef2cc31
fix(cors): ajouter PATCH/PUT/DELETE dans allowMethods
2026-04-21 04:52:41 +03:00
fcd8fe7017
feat(simulations): persistance session — autosave + sujet_id + getById tolère rapport=null (FTD-21)
2026-04-21 03:48:45 +03:00
fc76fac981
test(sujets): 5 tests POST /sujets/idees
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 03:07:13 +03:00
bd8ab4b72b
feat(sujets): POST /sujets/idees — suggestions DeepSeek (G5)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 03:05:07 +03:00
ecb478e10c
fix(simulations): déplacer incrément simulations_used après correction réussie (Option B)
2026-04-21 02:01:13 +03:00
1a5b79807e
test(sujets): 8 tests route GET /sujets
2026-04-21 01:03:49 +03:00
cc72487013
feat(sujets): GET /sujets?mode=&tache= avec auth + filtre actif
2026-04-21 00:59:18 +03:00
b6b8c76cc2
feat(simulations): retourner un sujet aléatoire actif avec la production créée
2026-04-20 06:01:02 +03:00
0680a6382f
feat(simulations): GET /simulations/:id — lecture rapport avec auth + REPORT_NOT_READY
2026-04-20 04:41:24 +03:00
6ca2412304
feat(corrections): enrichir réponse avec simulation_id
2026-04-20 04:31:57 +03:00
f67bd2dc95
feat(corrections): aligner schéma rapport DeepSeek — renommages + feedback_court
2026-04-20 04:28:06 +03:00
c65a2a0157
fix(cors): autoriser header X-Api-Version
2026-04-18 03:14:03 +03:00
9a119d0421
fix(cors): ajouter localhost:5174 aux origines autorisées
2026-04-18 03:07:05 +03:00
9f5a4a0599
fix(cors): ajouter localhost:5173 aux origines autorisées
2026-04-18 02:58:50 +03:00
c9912e883a
docs: Golden Dataset — validation manuelle T2 live Premium — 17 avril 2026
2026-04-17 04:57:54 +03:00
7479ac5a05
fix: T2 live — camelCase setup frame + logs enrichis — 124/124 tests
2026-04-17 04:44:54 +03:00
16617b5c54
fix: T2 live — modele gemini-2.5-flash-native-audio-latest
2026-04-17 04:26:54 +03:00
fb506a954f
debug: logs T2 live — diagnostic Gemini WS (open, setup, message, close, error)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-17 04:09:30 +03:00
20aeda86aa
fix: T2 live — envoi message erreur + setTimeout avant close WS
2026-04-17 03:49:20 +03:00
653fc3150e
feat: WS /t2/live — proxy Gemini Live API — 124/124 tests
2026-04-17 03:39:21 +03:00
f08be960b0
fix: imports ESM avec extensions .js — NodeNext compatible Render — 117/117 tests
2026-04-17 01:04:16 +03:00
dd2dfaa662
fix: build TypeScript — moduleResolution Bundler + casts API — 117/117 tests
2026-04-17 00:53:31 +03:00
5b82c6bd46
feat: Stripe checkout + webhook + upgrade prorata — 117/117 tests
2026-04-16 20:39:18 +03:00
f4f8c55ce7
feat: POST /corrections/eo — Gemini transcription + DeepSeek EO — 84/84 tests
2026-04-16 17:43:46 +03:00
77d5a8373e
feat: POST /corrections/ee — DeepSeek rapport complet — 73/73 tests
2026-04-16 17:14:45 +03:00
a6ee76d4a8
feat: POST /corrections/ee — DeepSeek + rapport TCF — 73/73 tests
2026-04-16 15:47:56 +03:00
d47dca1997
chore: retirer dossier .claude du depot + ajout au gitignore
2026-04-16 15:36:34 +03:00
d0499bd262
test: validation manuelle POST /simulations — 4/4 verts
2026-04-16 15:32:17 +03:00
b4097d7bde
docs: ajout TECH_DEBT.md — 12 entrées initiales
2026-04-16 15:13:59 +03:00
bf2c48b2c7
feat: POST /simulations — quota check + insert productions — 65/65 tests
2026-04-16 14:13:47 +03:00