Skip to content

[F2-01] Contratos compartidos con zod (packages/shared) #25

Open

Description

@JCCG-code

Fase: F2 · Tamaño: M · Depende de: #22 (F1-02)

Objetivo

Que server y web compartan los mismos contratos de datos y que la salida de los modelos de IA se valide siempre con el mismo esquema, sea cual sea el proveedor.

Alcance

  • packages/shared/src/schemas/pipeline.ts: convertir a zod todos los responseSchema con Type.* que necesita la v1: story seeds, creative direction, story, final package, TTS script, visual tokens, storyboard de escenas (sin campos de vídeo) y prompts de imagen.
  • Enums: StepName, StepStatus, ProjectStatus, Capability, Language (códigos BCP-47 soportados).
  • DTOs de API: ProjectDTO, CreateProjectInput (ambientación ≤ 200 caracteres, idioma, duración objetivo 30–90 s), EstimateDTO, CredentialDTO, ProviderCatalogDTO.
  • Tipos de evento SSE: snapshot, step, scene, asset, project.
  • Helper toJsonSchema(zodSchema) para que los adaptadores pidan salida estructurada.

Criterios de aceptación

  • Cada responseSchema de los helpers usados en la v1 tiene su equivalente zod (lista de comprobación en el PR, uno por uno).
  • Test: el fixture gemini-story-seeds.json valida contra el esquema de story seeds.
  • Test: CreateProjectInput rechaza duración 20 y 120 y acepta 30 y 90.
  • pnpm --filter shared typecheck test pasa y apps/server puede importar @jccg/shared.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions