From 96ae59c8897c50b179780b5e7f925ce04899dbf1 Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Tue, 15 Sep 2026 20:54:31 +0200 Subject: [PATCH] Plan Studio : lot 8b fait Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA --- v2/studio-plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/studio-plan.md b/v2/studio-plan.md index ecd3bf0..a8b73d4 100644 --- a/v2/studio-plan.md +++ b/v2/studio-plan.md @@ -1468,7 +1468,7 @@ Le lot « Bastogne » : plusieurs personnages qui racontent chacun leurs station coût de régénération par ligne, rien de régénéré avant validation. - Côté visiteur : portrait canon statique à côté du lecteur audio. -> **Découpage du 2026-09-15.** **8a — fait** : `NarratorPersonaId` (étape, point, article), `DefaultNarratorPersonaId` (parcours, carte, configuration), `Configuration.GuidePersonaId`, `NarratorResolver` (chaîne de §3.8, source renvoyée pour distinguer hérité / choisi, personnage archivé sauté), migration `AddNarrators`, DTO serveur et Dart. **8b** — pipeline TTS serveur (Gemini TTS, ingestion en `Resource` audio, empreinte du texte). **8c** — onglet « Narrateurs » (assignation de masse). **8d** — portrait canon côté visiteur, 3 fronts. +> **Découpage du 2026-09-15.** **8a — fait** : `NarratorPersonaId` (étape, point, article), `DefaultNarratorPersonaId` (parcours, carte, configuration), `Configuration.GuidePersonaId`, `NarratorResolver` (chaîne de §3.8, source renvoyée pour distinguer hérité / choisi, personnage archivé sauté), migration `AddNarrators`, DTO serveur et Dart. **8b — fait** (décisions de Thomas du 15/09 : bouton explicite, crédits Studio, MP3 via ffmpeg) : `NarrationService` + `api/Narration/{kind}/{id}` (état par langue : absent / à jour / à régénérer / déposé à la main) et `/generate` (réserve, job Hangfire, `Resource` audio `Generated`, ancienne narration supprimée, fichier déposé gardé). Gemini 2.5 Flash TTS ≈ 0,015 $/min = **1 crédit par minute entamée**, par langue. Empreinte texte + personnage + version de voix dans `AiProvenance`. `GeoPoint.AudioIds` ajouté. ⚠️ Jamais exécuté contre Gemini ni ffmpeg réels : pas de clé ni de ffmpeg en local. **8c** — onglet « Narrateurs » (assignation de masse). **8d** — portrait canon côté visiteur, 3 fronts. ### Lot 8bis — Casting visiteur *(petit, juste après le lot 8)*