Files
vrsub/docs/代码审查问题跟踪.md
T

6.3 KiB
Raw Blame History

代码审查问题跟踪

本文件跟踪本次项目审查发现的问题、修复范围与验证结果。状态:待处理 / 处理中 / 已修复。只有完成实现与相关验证后才标记已修复;代码修改不代表已部署。

全部审查问题的修复统一在 fix/review-improvements 分支推进,验证完成后由用户合并到 master

缺陷清单

ID 优先级 问题 状态 验收标准
R01 P0 普通删除接口可能删除批量源视频目录;清理逻辑从输入路径推导删除范围 已修复 普通接口拒绝单独删除批量 run;手动与自动清理只删除该上传任务的私有目录;视频、旁挂字幕及其他任务文件不受影响
R02 P1 自适应线程池限流后可能扩容;退出标记位于积压队列尾部,缩容不及时 待处理 限流不增加并发;降低目标后不再超额提交;真实积压队列验证
R03 P1 最后节点执行时暂停再继续会覆盖有效下载 URI;批量缺产物仍清理并完成 待处理 收尾幂等,恢复后全部必需产物可下载;缺产物不清理工作空间
R04 P1 环形 DAG 可通过保存校验,执行失败后仍在 QUEUED 堵塞队列 待处理 保存/发布拒绝无效 DAG;历史无效任务进入 FAILED,不阻塞后续任务
R05 P1 翻译按固定四行解析 SRT;补齐行数不能保证文本与时间轴对应 待处理 合法多行 cue 正确解析;按稳定 ID 回填译文并校验缺失、重复项
R06 P1 OCR 跨空白帧合并相同字幕;临时请求失败被永久存为无文字 待处理 空白帧结束当前字幕段;无文字和可重试失败分开存档
R07 P2 抽帧/分块目录残留污染重跑;OCR/过滤存档无输入和参数指纹 待处理 输出减少时无旧文件混入;输入/有效参数变化时断点失效
R08 P2 批量任务未固定工作流版本,恢复收尾可能使用新版本定义;创建任务与明细不原子 待处理 执行与收尾使用固定版本;工作线程只看到完整的已创建任务

优化与维护清单

下列项目为优化建议,收益需按真实负载验证,尚未承诺实施顺序。

ID 项目 状态 验收方向
O01 Whisper 模型缓存及上传/批量共享 GPU 并发额度 待处理 相同配置复用模型;初始化线程安全;显存有界
O02 Whisper 分块、LLM 翻译批次断点 待处理 中断后只补未完成部分;输入与参数身份匹配
O03 VAD 流式读取、向量化 RMS 待处理 与现有 RMS 结果一致;内存不随全片样本数增长;记录性能对比
O04 LLM 公共客户端、连接复用、统一限流重试 待处理 网络故障处理一致;提示词保留在各节点;避免重复计费与无界重试
O05 字幕纠错批量化、减少重复上下文生成 待处理 保留目标 ID;固定输入上下文;真实字幕质量验证
O06 合并媒体探测、减少 OCR 小文件,评估分段抽帧与 OCR 重叠执行 待处理 保持时间轴和落盘协议,测量 I/O 与吞吐变化
O07 统一 SRT 解析/序列化/时间戳,移除生产代码对 tests 包的依赖 待处理 正式安装包可运行;多行 cue、空字幕、时间精度回归通过
O08 统一运行状态、工作空间与 JSONL 存档公共能力 待处理 状态条件更新、文件归属明确、存档损坏可恢复
O09 后台线程停止与窗口统计可靠性 待处理 停止等待可中断;不丢弃仍存活线程;并发统计一致
O10 批量目录索引、聚合查询、数据库索引与轮询 待处理 避免每视频重复扫描目录;GET 不刷新状态更新时间;相关查询有界
O11 Whisper 解码耗时统计 待处理 消费 segments 生成器后计时,使用实际块时长计算实时倍率
O12 校正测试断言与文档漂移 待处理 成功验证包括产物可读/可下载;对齐测试可在正确结果下通过;文档与模型/断点实现一致

R01 修复记录

  • 根因:普通任务删除接口未区分 source=batch,直接递归删除 Path(input_uri).parent;自动清理器也使用输入路径推导删除目录。
  • 处理约定:普通删除接口拒绝批量 run(422),提示通过批量任务入口删除;上传任务只清理 <storage>/uploads/<run_id><storage>/runs/<run_id>。批量任务已有专用删除入口,保留源视频和视频旁成品。
  • 测试要求:使用 testdata/ 真实视频与字幕副本、临时数据库及私有存储;覆盖批量任务拒绝删除、正常上传清理、历史外部输入路径保护和自动清理路径保护。
  • 实现:普通删除接口 在删除前拒绝批量 run自动清理器 和普通接口均按私有目录布局定位清理范围。
  • 回归测试:test_run_deletion_safety.py,覆盖五种状态的批量 run、外部输入路径与旁挂字幕保护、其他任务目录保护。
  • TDD 红:uv run pytest tests/test_run_deletion_safety.py -q --tb=short7 failed;批量 run 被错误删除,两个外部路径用例复现媒体文件丢失。
  • TDD 绿及相关回归:uv run pytest tests/test_run_deletion_safety.py tests/test_apps_api.py tests/test_batch.py tests/test_maintenance.py -q73 passed7.73 秒;仅有既存 Starlette/httpx 弃用警告。
  • 状态:修复及验证完成,纳入 fix/review-improvements 分支;未部署。运行中的旧进程需加载新代码后才能获得保护。
  • 后续边界:普通列表仍会显示批量 run,但点击删除会收到批量入口提示;运行中删除的统一取消/状态协调属于 O08,未在本次展开。

审查基线

  • 修复前全套测试:uv run pytest369 passed、6 skipped76.75 秒。
  • 隔离复现已确认:源视频目录误删、限流后 1 → 19 并发、队列积压时缩容滞后、暂停恢复后成品 URI 失效、环形 DAG 阻塞队首、多行 SRT 损坏、OCR 跨空白合并、重用抽帧目录留下旧尾帧。
  • 本文件中的“已修复”只表示当前工作区实现及验证完成;部署状态需另行记录。