Files
cmsp/internal
QiuSWandClaude Opus 5 16e4f0faf8 fix: 视频记录不再提前清空,启动重置残留的 running 状态 (#18)
真机使用时发现 55066525387 的子目录里有视频文件,界面上「目录」却不可点。
查明是取视频跑到一半程序被重启,videos 表里该商品的记录已被删除、
新记录还没写回,磁盘有文件而库里无记录。

缺陷一:prepareVideoFetch 在开始下载前先做了一次
ReplaceVideos(product.ID, nil, ...)。而 work.Finalize 里本来就有一次
ReplaceVideos(product.ID, records, now),ReplaceVideos 的语义就是按
product_id 全量替换。前面那次并不能少做任何事,唯一效果是把「文件已下载
但记录已被删」的窗口从零扩大到整个下载过程,任务停止、程序重启和崩溃
都会落进去。删掉它。

原注释说明作者考虑过这个风险,但只防住了登录失效一种情况。

行为变化是期望的:取视频在下载阶段之前失败时,旧的视频记录会保留而不是
被清空。那些文件确实还在磁盘上,「这次没找到视频」由 products.video_status
表达,不该靠删 videos 记录来表达。

缺陷二:进程退出后 download_status / upload_status 仍停留在 running,
但没有任何任务在跑,是个不会自愈的假状态。启动时在同一事务内把这两个字段
的 running 重置为 pending,只动 running,不碰 video_status 和 videos 表。
重置失败只记 Warn,不中断启动。

按负责人要求未对 cmsp.db 做任何手工订正。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
2026-09-03 16:46:40 +08:00
..