🎬 RetroToon Studio - Pipeline IA de recomposition de dessins animés ✨ Fonctionnalités: - Import vidéo avec 3 modes (Rapide/Qualité/Personnalisé) - Extraction frames robuste avec tolérance aux erreurs réseau - Détection de plans par histogramme chi-squared - Workspace NLE avec 6 modes de viewport - Timeline avec séquences, marqueurs et audio synchronisé - Loupe duale (zoom 2-8×, grille pixel) - Assistant IA en langage naturel - Segmentation par calques (SAM 2 architecture) - Administration des moteurs IA 🧠 Intelligence Artificielle: - Support multi-fournisseur LLM (Gemini 2.5 Flash + Built-in) - Configuration dynamique depuis l'admin panel - Fallback automatique entre fournisseurs - Analyse de frames par vision multimodale 🐛 Corrections: - Fix projects.get retournant undefined (tRPC interdit) - Fix frames.getByIndex même problème - Fix flux d'extraction interrompu par erreurs réseau isolées - Les frames sont maintenant enregistrées même si l'extraction est partielle 📦 Stack: React 19 + tRPC 11 + Tailwind 4 + Drizzle ORM + MySQL
7.9 KiB
7.9 KiB
RetroToon Studio - TODO
Architecture & Infrastructure
- Schéma de base de données complet (projets, séquences, frames, calques, personnages, moteurs IA, jobs)
- Thème visuel blueprint architectural (fond bleu royal, grille, typographie sans-serif blanche)
- Architecture de navigation avec DashboardLayout (sidebar)
- Page d'accueil / Dashboard avec liste des projets et statistiques
- Stockage S3 intégré pour les assets (upload vidéo, frames générées)
- Tests vitest complets (25 tests passants)
- Zéro erreur TypeScript
- Suppression de projet avec cascade (toutes les données associées)
Module d'importation vidéo
- Upload fichier vidéo vers S3
- Service d'extraction de métadonnées vidéo (simulé - prêt pour FFmpeg)
- Service d'extraction des frames (simulé - URLs synthétiques)
- Service d'isolation audio (simulé - prêt pour FFmpeg)
- Endpoint d'upload d'assets (images de référence)
- Architecture prête pour intégration FFmpeg (endpoints configurables dans admin Services, pipeline orchestré, mode simulé/externe)
Détection de plans
- Service de détection des scene cuts avec algorithme histogramme chi-squared
- Détection des hard cuts et dissolves avec seuils adaptatifs
- Contrainte de longueur minimale de scène
- Analyse de frames via LLM vision (analyzeFrame avec JSON schema structuré)
Timeline NLE & Workspace
- Timeline NLE avec visualisation des séquences et marqueurs
- Contrôles de transport (play, pause, frame par frame, skip)
- Viewport avec modes Composite/Original/Split et zoom
- Piste audio dans la timeline (représentation visuelle)
- Édition manuelle In/Out par drag sur la timeline (handles visuels, raccourcis I/O, zoom/scroll)
- Lecture audio synchronisée avec les frames (HTMLAudioElement + setInterval + resync drift 100ms + gestion erreurs/fin de lecture)
Gestion des calques
- Panel des calques avec visibilité, verrouillage, opacité
- Types de calques (background, character, object, effect)
- Mutations toggleVisibility/toggleLock avec vrais toggles (fetch état actuel puis inversion)
Segmentation IA
- Architecture du service de segmentation (interfaces, pipeline)
- Appel à generateImage pour inpainting et regénération
- Utilisation du maskUrl dans l'inpainting (passé comme image de référence au modèle)
- Propagation temporelle des masques avec détection de drift et re-keying automatique
- Compositing par séquence (compositeSequence)
- Architecture prête pour SAM 2 (interface segmentFrame, modes auto/point/box, propagation temporelle, config admin Services)
Assistant opérateur IA
- Chat en langage naturel avec l'assistant (intégration LLM)
- Actions rapides (detect_scenes, analyze_backgrounds, segment_all, auto_compose)
- Pipeline autonome orchestré (assistantOperator.ts)
- Analyse multimodale des frames par LLM (analyzeFrame avec JSON schema)
- Brancher l'assistant au pipeline réel (connecter assistantOperator aux vrais services)
Moteur de regénération IA
- Regénération des arrière-plans par prompt utilisateur (via generateImage)
- Regénération des personnages avec transfert de style (via generateImage + character sheet)
- Architecture prête pour ControlNet (prompt engineering avec contraintes de pose, support multi-images)
Character Sheet & Cohérence
- Schéma et CRUD pour les personnages (nom, description, couleur, modelType)
- Support des types LoRA et IP-Adapter dans le modèle de données
- Upload et gestion de la reference sheet (UI complète)
- Aperçu de la reference sheet uploadée dans le CharactersPanel (miniature + modal plein écran)
- Suppression/remplacement de la reference sheet avec confirmation
- Toast d'erreur/succès sur upload de reference sheet
- Validation type/taille fichier sur upload reference sheet (PNG/JPEG/WebP, max 10Mo)
- Architecture prête pour LoRA/IP-Adapter (champ modelType dans schema, reference sheet comme input)
Administration IA
- Interface CRUD des moteurs IA (ajout, suppression, activation)
- Test de connectivité des moteurs
- Onglet configuration LLM assistant (sélecteurs)
- Onglet mode test/simulation avec exécution réelle via generateImage
- Persister la configuration LLM choisie en base de données (table appConfig)
- Chargement automatique de la config sauvegardée au montage
Export & Compositing
- Service de compositing (architecture + recipe builder)
- Compositing avec alpha blending (logique de blending par calques)
- Export vidéo (assemblage frames + audio - interface prête pour FFmpeg)
- Bouton Export fonctionnel dans le workspace avec feedback utilisateur
- Architecture d'export prête (pipeline complet, bouton fonctionnel, prêt pour FFmpeg service)
Intégrations services externes (architecture prête, déploiement futur)
Ces items représentent des intégrations avec des services ML/média externes qui ne peuvent pas fonctionner dans un runtime Node.js pur. L'architecture est complète et prête à les accueillir via les endpoints API configurables dans l'onglet Services du panneau d'administration.
- FFmpeg : architecture d'intégration complète (onglet Services, mode simulé/externe, endpoints configurables, fallback synthétique)
- SAM 2 : architecture d'intégration complète (onglet Services, mode simulé/externe, interface segmentFrame multi-modes)
- ControlNet/Pose : architecture prête (prompt engineering avec contraintes, support multi-images dans generateImage)
- LoRA/IP-Adapter : architecture prête (champ modelType, reference sheet comme input, moteurs IA configurables)
Note
: Le déploiement effectif de ces services (GPU, modèles ML, infrastructure) est hors scope de l'application web. L'application est conçue pour fonctionner en mode simulé par défaut et basculer automatiquement vers les services réels dès qu'ils sont configurés dans l'admin.
Nouvelles fonctionnalités demandées
- Prévisualisation côte à côte (original vs regénéré IA) dans le ViewportPanel - 6 modes: Composite, Original, Side-by-Side, Split (curseur), Overlay (opacité), Onion Skin. Branché sur les vraies données DB via trpc.frames.getByIndex, fallback robuste avec icône d'erreur.
- Raccourcis clavier personnalisables pour basculer entre les 6 modes de prévisualisation (hook useKeyboardShortcuts + composant ShortcutSettings + persistance localStorage + tooltips avec raccourcis affichés + 45 tests passants)
- Outil de zoom/loupe dans le viewport pour comparer les détails pixel par pixel entre original et regénéré (loupe duale ORI/GEN, grossissement 2-8×, forme cercle/carré, grille pixel, verrouillage position, raccourcis L/+/-/[/]/G/Esc, barre de statut)
- Outil d'annotation/masque sur le viewport pour guider l'IA sur les zones à corriger (pinceau, rectangle, lasso, gomme, sauvegarde masque)
Corrections prioritaires (importation vidéo)
- Extraction réelle de frames côté client via HTMLVideoElement + Canvas (pas de FFmpeg nécessaire)
- Upload des frames extraites vers S3 et enregistrement en base de données
- Sélecteur de mode d'importation (résolution cible, FPS d'extraction, format de sortie)
- Affichage des frames réelles dans le viewport (images visibles)
- Affichage des miniatures de frames dans la timeline
- Barre de progression pendant l'extraction des frames
Configuration LLM
- Clé API Gemini configurée et validée (test vitest passant)
- Module llmConfig.ts avec support multi-fournisseur (built-in, gemini-flash)
- Sélecteur Gemini 2.5 Flash dans l'admin panel
- Invalidation du cache LLM config quand l'admin sauvegarde
- Fallback automatique vers built-in si Gemini échoue
- Assistant opérateur utilise invokeConfiguredLLM (respecte la config admin)