29 lines
1.0 KiB
Markdown
29 lines
1.0 KiB
Markdown
# 转码媒资 ID 精度与存量兜底修复
|
||
|
||
## 取证
|
||
|
||
- 示例分集 `2113150431755636737` 的 `video_asset_id` 为
|
||
`2113150398670966786`,与 `media_asset.id` 完全一致。
|
||
- JS `Number('2113150398670966786')` 序列化为 `2113150398670966800`,
|
||
超出安全整数后发生精度丢失,导致手动转码查询了错误 ID。
|
||
|
||
## 修复
|
||
|
||
1. 聚合响应的 episodeId/mediaAssetId/taskId 使用字符串。
|
||
2. 手动转码仍由后端 Long 接收精确路径 ID。
|
||
3. 媒资不存在时通过 content 模块的端口按候选 ID 查找分集:
|
||
- 分集 id;
|
||
- video_asset_id;
|
||
- transcode_task.id。
|
||
4. 找到分集后按 video_url/source_url/objectKey 反查媒资;
|
||
文件存在但媒资缺失时补登记并回填分集 video_asset_id。
|
||
5. 无可用视频时保持明确空态/错误语义。
|
||
|
||
## 验证
|
||
|
||
- 超 2^53 ID 字符串契约。
|
||
- 聚合无媒资空态。
|
||
- video_url 反查命中。
|
||
- 文件存在时补登记。
|
||
- `mvn -pl fruitshorts-module-media,fruitshorts-transcode-worker test`。
|