Commit graph

50 commits

Author SHA1 Message Date
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
2fba6f2003 test: validation manuelle auth middleware — 3/3 verts 2026-04-16 13:52:08 +03:00
f71498668f feat: middleware plan + route GET /plans/status — 59/59 tests verts 2026-04-16 12:42:43 +03:00
f4849571c4 feat: ajout 6 fichiers de tests automatisés — 39/39 verts 2026-04-16 06:46:43 +03:00
708517edef feat: initialisation projet Hono.js + TypeScript + Vitest 2026-04-16 06:37:25 +03:00
b06970c9ae docs: ajout documentation de référence 2026-04-16 05:50:55 +03:00
Hermann_Kitio
1cb432401d Actualiser README.md 2026-04-16 04:35:42 +02:00
Hermann_Kitio
a7b31af5b8 Initial commit 2026-04-16 04:19:06 +02:00