El modelo de datos del catálogo, la separación entre obra, edición, asset y fuente, y dónde vive cada tabla.
Implementado en parte. El modelo base (obra, edición, asset, índice de medios, fuente) existe en
@styx/domainy encatalog-svcysources-svc. El discriminante entre medios finitos y directo (dec-0107) y las representaciones canónicas completas siguen en curso: su estado está en el gate detrack/domain-media.
Styx separa lo que es una obra de lo que es un fichero concreto, y de dónde viene ese fichero. La decisión r08 fija el recorrido:
Work ──< Edition ──< MediaAsset ──< SourceBinding
qué es qué versión el medio lógico dónde están sus bytes| Nivel | Qué es | Dónde vive |
|---|---|---|
Work | La unidad creativa: «Blade Runner 2049». Clases: película, serie, episodio, concierto, extra, colección | catalog-svc, tabla works |
Edition | Una versión de la obra (original, montaje del director, extendida, remasterizada, estreno en salas, personalizada), con etiquetas | catalog-svc, tabla editions |
MediaAsset | El medio lógico de una edición: ruta, tamaño, huella rápida y contenedor | catalog-svc, tabla media_assets |
SourceBinding | Un enlace del asset a una fuente concreta con su puntuación y disponibilidad | sources-svc, tabla sources |
Una obra puede tener varias ediciones, y una edición varios assets con enlaces a fuentes distintas (disco local, HTTP, S3, WebDAV, SFTP, torrent, Jellyfin, Xtream o compuestas). El selector de fuentes puntúa las disponibles y elige; una puntuación de cero deja a la fuente inelegible.
media_indexes guarda, por asset y versión de índice, los hechos que el motor de medios extrajo:
contenedor, duración, tasa de bits, pistas, capacidades y, si los hay, los fotogramas clave. Está
versionado, así que un índice nuevo no destruye el anterior. Los hechos los produce el motor del
daemon (qry.media.probe), nunca un proceso externo (ver motor de medios).
Además del recorrido anterior, @styx/domain modela:
CanonicalRepresentation: una representación preferida de un asset con su ciclo de vida
(candidata, activa, retenida, expulsada, experimental), su códec, HDR y requisitos de decodificación.
Es el sitio donde se aplicará la política canónica de códecs (AV2 como frontera, AV1 como
respaldo y HEVC Main10 por compatibilidad) sin convertir el códec en una categoría estructural.
Objetivo, sin código: el tipo existe, pero ningún paquete implementa esa política (ver
motor de medios).AcquisitionArtifact: un artefacto concreto recibido de un proveedor, identificado o sin
identificar. No es una composición lógica de pistas; esa función es del MediaAsset.Un fichero subido recibe identificadores deterministas derivados de su SHA-256, de modo que dar de
alta el mismo contenido dos veces es idempotente. catalog-svc resuelve la raíz de ingesta con su
propia configuración (nunca con una ruta que llega en el mensaje) y da de alta obra, edición, asset
e índice en una única transacción. La tabla ingest_usage lleva el libro de bytes que cada actor
guarda en cada raíz, que playback-svc suma antes de abrir una sesión de subida.
WorkSchema, EditionSchema…), con los
identificadores como tipos con marca para que un WorkId no se confunda con un AssetId.identity y la futura capa de
cuentas; el catálogo no lo guarda.