Files
FruitServer/docs/plans/2026-10-22-transcode-binding-fix.md

39 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 转码分集绑定与运行态修复
## 已确认现场
admin-api/app-api/worker 均运行旧包;worker 未运行;`media_thumbnail` 表缺失;
新上传任务 drama_id/episode_id 为 0;旧 worker jar 缺 MediaThumbnail。
## 代码修复
1. 分集保存后按视频 URL 的 objectKey 查找 `media_asset`。
2. media 域新增绑定服务:
- 将 dramaId/episodeId 回填到对应 `transcode_task`;
- QUeued/RUNNING/SUCCESS 任务复用,不重复入队;
- FAILED/CANCELED 或不存在时新建任务;
- 已成功但 episodeId=0 的 rendition 同步回填。
3. `claimNext` 只认领 `episode_id > 0`,零绑定任务保留 QUEUED。
4. 缩略图登记使用 REQUIRES_NEW 独立事务;生成或登记失败只记 warn/error_msg,
主任务仍 SUCCESS。
5. 对 episode_id=0 且源文件不存在的明显测试垃圾标记 CANCELED,不删除。
## 迁移与运行
1. 确认 `media_thumbnail` 不存在后执行幂等 patch。
2. `mvn -DskipTests package` 全量重建。
3. 检查三个 jar 分别含:
- admin-api:MediaTranscodeProfile;
- app-api:PlayRespVO.thumbnailsUrl 对应新类;
- worker:MediaThumbnail / MediaThumbnailMapper。
4. 重启 8080/8081/worker,日志写 `logs/*.log`。
5. 冒烟 admin 配置、App 详情 thumbnailsUrl、worker 轮询。
6. 上传真实视频,创建绑定分集,等待 worker 消费,验证任务、四档 HLS、
media_thumbnail、VTT 与 sprite HTTP 200。
## 风险
- 旧 QUEUED 中无法绑定且源文件不存在的测试任务将被取消并记录 id。
- 真实视频端到端验证会写入运行数据库和媒资目录。
- 不修改 Web/Flutter,不操作真机。