snowy-yang
|
1c6b17f718
|
refactor: 播客单集 worker 拆解(140 行 / 圈 35 → 40 行 / 圈 6 / 嵌套 1)
为什么:_podcast_download_worker 是播客单集下载的唯一后台执行路径,
此前零直接测试覆盖;三条 except 分支各写一遍「结算+删任务目录」,
正文散着三处取消检查,改坏任意一处不会有测试报警。
拆出(与单曲 worker 9cbd341 同风格):
- _PodcastTaskSpec(frozen dataclass,program_id 标注 Any——params 历史
存数字字符串,worker 只透传,int() 是行为变更)
- _PodcastTarget(磁盘名/交付名/任务目录的命名组装)
- _begin_podcast_task / _prepare_podcast_target / _write_podcast_zip /
_podcast_file_result / _podcast_zip_result / _publish_podcast_task /
_fail_podcast_task(三处 ×9 行收尾收敛)
- 取消检查复用 downloads._abort_if_canceled(无循环依赖);tempfile
局部 import 上移模块顶
先写测试后动代码:新增 tests/test_podcast_worker.py 18 例,在**未改动**
实现上一次跑绿 = 忠实编码旧行为,重构后同一套测试即等价性验证。
唯一语义顺序变化:except 分支的日志从「收尾后」挪到「收尾前」(与
单曲 worker 对齐,日志内容不变,无行为影响)。
门禁:ruff 全过 · pyright 0/0 · pytest 312 passed(294→312)。
|
2026-09-27 09:30:52 +08:00 |
|