Skip to content

[F4-07] Editar y regenerar partes de un proyecto #72

Open

Description

@JCCG-code

Fase: F4 · Tamaño: M · Depende de: #67 (F4-06), #65 (F4-10)
Decisiones: D-05 y D-08 en #1

Objetivo

Que el creador corrija lo que no le gusta pagando solo por lo que se rehace.

Alcance

  • PATCH /api/v1/projects/:id (solo en completed, failed o cancelled) para editar:
    • story.text → invalida ttsScript, voice, music, storyboard, imagePrompts, image[*] y assemble.
    • scenes[n].imagePrompt → invalida image[n] y assemble.
    • Voz elegida → invalida ttsScript, voice, music y assemble.
  • POST /api/v1/projects/:id/regenerate con { targets: ['voice' | 'music' | 'scene:n' | 'media'] } sin editar texto (p. ej. otra imagen para la escena 3). media regenera todos los ficheros desde el texto (proyectos purgados, [F4-12] Caducidad de ficheros a los 7 días #69).
  • La invalidación recorre el grafo de dependencias de [F4-02] Orquestador del pipeline: grafo de pasos y máquina de estados #57: los pasos afectados vuelven a pending y sus assets antiguos se marcan para purga cuando el nuevo esté listo.
  • Antes de ejecutar, la respuesta incluye el coste estimado de la regeneración ([F4-08] Estimación de coste antes de generar #63); la web lo muestra y pide confirmación.
  • Historial mínimo: se guarda la versión anterior del texto editado (revisions[], últimas 5).

Criterios de aceptación

  • Test con fake: editar el prompt de la escena 2 solo vuelve a llamar a image.generate una vez y vuelve a montar; ningún paso de texto ni de voz se repite (contador de llamadas).
  • Test: editar el texto de la historia regenera voz, escenas y montaje, pero no seed, direction ni visualTokens.
  • Test: regenerate { targets: ['music'] } solo rehace música y montaje.
  • Test: un proyecto purgado + regenerate { targets: ['media'] } vuelve a completed sin llamar a pasos de texto.
  • Test: editar un proyecto en running → 409.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions