Skip to content

[F2-13] Pasos del pipeline como funciones puras (historia → voz → música → imágenes → slideshow) #45

Open

Description

@JCCG-code

Fase: F2 · Tamaño: L · Depende de: #30 (F2-02), #31 (F2-04), #27 (F2-05), #36 (F2-09), #33 (F2-12)
Decisiones: D-04, D-06 y D-20 en #1

Objetivo

Convertir los helpers actuales en pasos reutilizables que reciben todo por parámetro, para que los ejecute el worker (F4) y, mientras tanto, la API antigua.

Alcance

  • apps/server/src/core/pipeline/steps/, un archivo por paso:
    seed → direction → story → package (título, tono, voz sugerida de @@voice_palette, pistas musicales) → ttsScript (se omite si el modelo TTS no admite indicaciones de estilo) → voice → music (proveedor o biblioteca, [F2-12] Biblioteca de música sin derechos como respaldo #33) → visualTokens → storyboard (N escenas cuya suma encaja con la duración de la voz) → imagePrompts → image[n] → assemble (slideshow, [F2-04] Montaje slideshow: imágenes con Ken Burns + voz + música → MP4 9:16 #31).
  • Firma común: (input, ctx: { providers, storage, workDir, signal, onProgress, log, language }) => output.
  • Los pasos no tocan Mongo (eso lo hará el orquestador en F4).
  • Las salidas binarias se guardan con storage.put y el paso devuelve la clave, no una URL.
  • Corrige de paso: path vs publicUrl en imágenes, !output.length > 0, fs.unlink sin await.
  • Los controladores antiguos llaman a estos pasos con el proveedor Google y la clave de entorno, como puente temporal (solo accesibles con el token de [F3-08] Proteger los endpoints antiguos con token hasta su retirada #42).

Criterios de aceptación

  • Test por paso con el proveedor fake.
  • Test: encadenar todos los pasos con fake en es y en en produce un MP4 9:16 en almacenamiento local con duración ≥ la de la voz.
  • Test: sin proveedor de música, music usa la biblioteca y el MP4 tiene música.
  • apps/server/src/helpers/ ya no existe o solo reexporta desde core.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions