Base de données
PostgreSQL et Prisma : le schéma expliqué, en trois familles.
PostgreSQL, Prisma 7 (client généré dans packages/db/src/generated,
connexion par l'adaptateur pg). Schéma : packages/db/prisma/schema.prisma.
pnpm db:migrate # après modification du schéma (crée et applique une migration)
pnpm db:generate # régénère le client (Prisma 7 ne le fait plus à la migration)
pnpm db:deploy # applique les migrations en production
pnpm db:studioTrois familles
Identité et collaboration
User(mot de passe haché bcrypt,isAdmin,disabled),Account,Session,VerificationToken(Auth.js),ApiKey(jetons d'accès personnels, hachés).WorkspaceetWorkspaceMember;ProjectMember; enumRole: OWNER, ADMIN, DIRECTOR, WRITER, ART_DIRECTOR, EDITOR, VIEWER.Comment(fil, mentions, résolu),Notification,AuditLog.Revision: historique générique, un instantané JSON par version et par entité (entityType,entityId,version). Tient lieu de CharacterVersion, LocationVersion, ScriptVersion, AssetVersion.
Le film
Project: format (ratio, résolution, fps), langue, type (ProjectKind), stade (ProjectStage),rulesetmotion(JSON validés parprojectRulesSchemaetmotionRulesSchema), couverture.Concept(1–1),World(1–1,sectionsJSON),Script(1–1,fountaindocde l'éditeur),Story(1–1) etStoryBeat.
- La bible :
Character,Location,Prop(PropKind: accessoire, costume, véhicule, animal, décor, effet),Style(un actif),LightState(un par défaut). Chaque entité a uncodecourt unique dans le projet (CH1, L2, P3…) repris tel quel dans les prompts, et une référencerefAssetId. Les champs lus par le compilateur sont des colonnes ; la fiche narrative d'un personnage est dansprofile(JSON). - La structure :
Act,Sequence,Scene(dépouillementbreakdownet mise en scènedirectionen JSON, statut de production),SceneCharacter. - Le découpage :
Shot(code 12A calculé depuis le numéro de scène et l'ordre, vocabulaire caméra, durée,overridespar cible,frameAssetIdpour la case de storyboard),ShotCharacter,ShotProp,StoryboardetStoryboardFrame(planches).
La fabrication
Provider(clé chiffréeapiKeyEnc+ indice,configJSON, portée instance ou espace),Model(id chez le provider, capacité, modes, prix, notes de qualité et vitesse, formats),ModelRoute(routage par tâche).Generation(demande complète : prompt, négatif, paramètres, entrées, contexte de routage, statut, progression, erreur, coût, durée, id externe) etGenerationJob(une ligne par tentative dans la file).Asset(fichier dans S3 : type, source, dimensions, durée, référence et sa nature, tags, génération d'origine, chaîne de versionsparentId) etAssetLink(le « Character ID » : chaque asset est rattaché aux personnages, lieux, objets, scènes et plans qu'il montre).Usage: registre des coûts.Prompt(prompts figés),PromptTemplate.Timeline,TimelineTrack,TimelineClip(montage, phase 2).AssistantThread,AssistantMessage.
Relations clés
Workspace ─┬─ WorkspaceMember ── User
├─ Project ─┬─ Concept · Story(─ StoryBeat) · World · Script
│ ├─ Character · Location · Prop · Style · LightState
│ ├─ Act ─ Sequence ─ Scene ─┬─ SceneCharacter
│ │ └─ Shot ─┬─ ShotCharacter · ShotProp
│ │ └─ StoryboardFrame
│ ├─ Asset ── AssetLink ──▶ Character | Location | Prop | Scene | Shot
│ ├─ Generation ─┬─ GenerationJob
│ │ ├─ Asset (sorties)
│ │ └─ Usage
│ └─ Revision · Comment · Timeline
└─ Provider ─ Model ─ ModelRouteLa suppression d'un projet supprime tout ce qui lui appartient (cascade) ; la suppression d'un asset remet à vide les références qui le visaient.
Conventions
- Identifiants
cuid(). - JSON seulement pour ce qui n'est pas interrogé (profil, dépouillement,
réglages) et toujours validé par un schéma Zod de
@regie/core. - Les nombres de version (
version) s'incrémentent à chaque modification enregistrée ; l'instantané correspondant est dansRevision.