39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
# 转码产物查询接口
|
||
|
||
## 目标
|
||
|
||
- 媒体维度查询 rendition 与帧图产物。
|
||
- 分集维度聚合转码任务、rendition、帧图状态。
|
||
- `/admin/dashboard/transcode` 改为明确 VO,OpenAPI 不再出现匿名 Object。
|
||
|
||
## 设计
|
||
|
||
1. `MediaTranscodeOutputService` 统一读取媒体、任务、rendition 与 thumbnail。
|
||
2. rendition 按高度、视频码率、质量倒序,id 正序保证稳定。
|
||
3. thumbnail 优先读取 `thumbnails.vtt`,解析 cue 后分页;无记录返回 `EMPTY`,
|
||
记录失败返回 `FAILED`,不把缺产物当服务错误。
|
||
4. 分集聚合对不存在、无视频、无媒资、无任务返回明确 status 和空列表。
|
||
5. dashboard 使用强类型 queue/failed task VO,保留现有字段语义并补 total。
|
||
|
||
## 接口
|
||
|
||
- `GET /admin/media/{id}/renditions`
|
||
- `GET /admin/media/{id}/thumbnails?pageIndex=1&pageSize=100`
|
||
- `GET /admin/episodes/{id}/transcode`
|
||
- `GET /admin/dashboard/transcode`(响应类型由 Map 收敛为 VO)
|
||
|
||
缩略图响应内嵌 `PageResult<MediaThumbnailFrameVO>`,同时返回 sprite/VTT 元数据;
|
||
空产物 status 为 `EMPTY`,无绑定分集为 `NO_EPISODE`,损坏 VTT 为 `INVALID`。
|
||
|
||
## TDD
|
||
|
||
- 先提交媒体有/无产物、不存在、VTT 解析与分页边界测试。
|
||
- 再提交接口、VO、聚合服务和 dashboard 类型收敛实现。
|
||
- 门禁:`mvn -pl fruitshorts-module-media test`。
|
||
|
||
## 红线
|
||
|
||
- 不改 `/app` 契约、specs、ReelShortWeb、Flutter。
|
||
- 不改 P1 入队与手动重转逻辑。
|
||
- 不启停服务,不操作真机。
|