Skip to content

feat(manager): rewire coverage to CMS after import #524

@lumberman

Description

@lumberman

Background

apps/manager coverage still reads local job state instead of the Strapi CMS data that has now been imported from the old media API. As a result, /dashboard/coverage shows fake collections derived from job status rather than canonical collections/videos from CMS, and the coverage flow cannot queue work for existing imported assets.

Expected outcome

/dashboard/coverage reads canonical coverage data from Strapi CMS, renders collections using the existing Video.label + childGatewayIds model, loads language geo data from CMS, and can queue jobs for existing imported videos without changing /dashboard/jobs into a content browser.

Acceptance criteria

  • /dashboard/coverage renders collections from CMS even when there are no local jobs.
  • Coverage no longer groups jobs into fake collections like "Completed Jobs" or "Running Jobs".
  • Coverage statuses are derived from CMS subtitles, variants, and metadata fields.
  • GET /api/languages serves the geo payload expected by the language selector from CMS data.
  • Coverage can queue jobs for existing imported videos using muxAssetId.
  • URL-based ingest from the jobs dashboard continues to work unchanged.
  • /dashboard/jobs remains a queue/workflow view rather than a content browser.

Possible solution(s)

  1. Replace the coverage page's listJobs() dependency with typed CMS GraphQL queries through @forge/graphql.
  2. Restore the missing coverage domain modules from the original VideoForge app as a starting point, but map them to CMS-backed reads.
  3. Extend POST /api/jobs to accept existing-asset payloads inferred from request shape while keeping the current URL-ingest flow.

References

  • docs/plans/2026-03-24-001-feat-manager-coverage-rewire-after-cms-import-plan.md
  • apps/manager/src/app/dashboard/coverage/page.tsx
  • apps/manager/src/features/coverage/coverage-report-client.tsx
  • apps/manager/src/app/api/jobs/route.ts
  • videoforge/src/features/coverage/types.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions