Files
biliup-next/docs/todo-2026-04-06.md

12 KiB
Raw Blame History

biliup-next Todo - 2026-04-06

今日待办

P0

  • 修正任务级 running 状态缺失问题。

    • 当前 step 会进入 running,但 task 不会进入 running,导致控制台“处理中”筛选、优先级判断和注意力状态失真。
    • 相关位置:
      • src/biliup_next/app/task_engine.py
      • src/biliup_next/app/api_server.py
      • src/biliup_next/modules/*/service.py
  • 收敛 full_video_bvid 的单一事实源。

    • 当前 task_contextssession_bindingssession/full_video_bvid.txt 三处状态可能不一致。
    • rebind_session_full_video_action() 没有同步更新 session_bindings,后续新任务 ingest 仍可能继承旧 BV。
    • 相关位置:
      • src/biliup_next/app/task_actions.py
      • src/biliup_next/modules/ingest/service.py
      • src/biliup_next/infra/task_repository.py
  • 补强 SQLite 并发配置。

    • 当前 API 与 worker 可并行运行,但数据库连接仍是最基础配置,缺少 busy_timeoutWALforeign_keys=ON 等保护。
    • 后续任务量或并发操作增加时,容易出现 database is locked 一类问题。
    • 相关位置:
      • src/biliup_next/infra/db.py

P1

  • 消除 API 路径上的重复初始化。

    • ensure_initialized() 目前会重复执行配置加载、DB 初始化、插件扫描和 provider 实例化。
    • API 每次请求都可能再次触发整套装配,后续会拖慢控制面并增加维护成本。
    • 相关位置:
      • src/biliup_next/app/bootstrap.py
      • src/biliup_next/app/api_server.py
  • 优化 /tasks 的全量扫描和 N+1 查询。

    • 当前 attention/delivery 过滤会先拉最多 5000 条任务,再逐条补 task payload、step、context 和文件系统状态。
    • 任务规模上来后会明显拖慢列表页和筛选体验。
    • 相关位置:
      • src/biliup_next/app/api_server.py
      • src/biliup_next/infra/task_repository.py
  • 收敛文档状态机与代码实现。

    • 文档中存在 ingestedcompletedcancelled,并声明不再依赖 flag 文件作为权威状态。
    • 实际实现中这些状态并未完整落地,评论/合集完成态仍依赖多个 flag 文件。
    • 需要统一“文档模型”和“代码真实状态机”,避免后续继续漂移。
    • 相关位置:
      • docs/state-machine.md
      • src/biliup_next/app/api_server.py
      • src/biliup_next/modules/comment/providers/bilibili_top_comment.py
      • src/biliup_next/modules/collection/providers/bilibili_collection.py

P2

  • 为状态机、重试和手工干预流程补测试。

    • 当前仓库没有看到 tests/ 或自动化回归覆盖。
    • 优先覆盖:
      • task_engine
      • task_policies
      • task_actions
      • retry_meta
      • task_reset
  • 明确两套控制台的维护策略。

    • 当前 React 控制台和 classic 控制台并存。
    • 需要决定 classic 是长期保留、冻结维护,还是逐步退役。

备注

  • 以上问题来自 2026-04-06 对 biliup-next 当前重构实现的代码审查。
  • 优先顺序按“状态一致性 / 数据一致性 / 运行稳定性 / 控制面性能 / 可维护性”排列。

过程记录

  • 2026-04-06完成首轮代码审查确认当前优先问题。
  • 2026-04-06基于问题清单拆出分阶段改造计划docs/refactor-plan-2026-04-06.md
  • 2026-04-06确定首批执行范围为 task running 状态落地、full_video_bvid 写路径统一、SQLite 连接加固。
  • 2026-04-06已完成首轮代码改造。
    • task 在 step 被 claim 后会进入 running
    • bind/rebind/webhook 已统一复用 full_video_bvid 持久化路径。
    • SQLite 连接已增加 foreign_keysbusy_timeoutWALsynchronous=NORMAL
    • 已执行 python -m compileall biliup-next/src/biliup_next 验证语法通过。
  • 2026-04-06已完成第二轮控制面改造。
    • ensure_initialized() 已改为进程内复用,避免 API 请求重复装配全套应用状态。
    • PUT /settings 后会主动失效并重建缓存状态,避免新旧配置混用。
    • /tasks 列表已改为批量预取 task context 和 steps减少列表页 N+1 查询。
    • 已再次执行 python -m compileall biliup-next/src/biliup_next 验证语法通过。
  • 2026-04-06已完成状态机文档对齐。
    • state-machine.mdarchitecture.md 已改成当前代码真实状态集合:created/running/transcribed/songs_detected/split_done/published/commented/collection_synced/failed_*
    • 已明确 ingested/completed/cancelled 当前未落地,不再作为现阶段实现口径。
    • 已明确工作区 flag 仅表示交付副作用和产物标记,不作为 task 主状态事实源。
  • 2026-04-06已补最小回归测试集。
    • 新增 tests/test_task_engine.py
    • 新增 tests/test_retry_meta.py
    • 新增 tests/test_task_actions.py
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 7 个测试全部通过。
  • 2026-04-06已继续收口 task_actions 的写路径。
    • rebind_session_full_video_action() 不再重复 upsert session binding。
    • merge_session_action() 在继承 full_video_bvid 时已复用统一持久化路径。
    • 已补对应测试,当前测试数为 8全部通过。
  • 2026-04-06已补第二层状态流转测试。
    • 新增 tests/test_task_policies.py
    • 新增 tests/test_task_runner.py
    • 已覆盖 disabled step fallback、publish 重试调度、reset 后回退状态、step claim 后 task 进入 running
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 12 个测试全部通过。
  • 2026-04-06已完成一轮 API 代码清理。
    • api_server.py 新增批量 task payload 组装 helper。
    • /tasks/sessions/:session_key 已复用同一套 task payload 预取与组装逻辑。
    • 已重新执行测试,当前 12 个测试全部通过。
  • 2026-04-06已整理专业化路线图。
    • 新增 docs/professionalization-roadmap-2026-04-06.md
    • 按平台边界、领域模型、接口契约、测试体系、运维成熟度五个维度拆解后续改进方向。
    • 已明确下一批优先项为 adapter 边界、session/delivery 领域服务收敛、serializer 层、SQLite/API 测试与 OpenAPI 对齐。
  • 2026-04-06已开始落最小 adapter 边界。
    • 新增 infra/adapters/codex_cli.py
    • 新增 infra/adapters/biliup_cli.py
    • 新增 infra/adapters/bilibili_api.py
    • codexbiliup_clibilibili_top_commentbilibili_collection provider 已改为依赖 adapter
    • 已执行 unittest 与 python -m compileall biliup-next/src/biliup_next,当前验证通过。
  • 2026-04-06已开始落 serializer 层。
    • 新增 app/serializers.py
    • task list / task detail / session detail 的 payload 组装已从 api_server.py 抽到 ControlPlaneSerializer
    • api_server.py 进一步收敛为路由、鉴权和响应控制
    • 已执行 unittest 与 python -m compileall biliup-next/src/biliup_next,当前验证通过。
  • 2026-04-06已继续收口 serializer 层。
    • task timeline 的组装逻辑已从 api_server.py 抽到 ControlPlaneSerializer.timeline_payload()
    • api_server.py 中 task 详情相关展示逻辑继续变薄
    • 已重新执行 unittest 与 python -m compileall biliup-next/src/biliup_next,当前验证通过。
  • 2026-04-06已补 serializer 层测试。
    • 新增 tests/test_serializers.py
    • 已覆盖 task payload、session payload、timeline payload 的控制面展示契约
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 15 个测试全部通过。
  • 2026-04-06已补 repository 的 SQLite 集成测试。
    • 新增 tests/test_task_repository_sqlite.py
    • 已覆盖 query_tasks、批量 context/steps 查询、session_bindings upsert 与 fallback 读取
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 18 个测试全部通过。
  • 2026-04-06已补 API 行为测试。
    • 扩展 tests/test_api_server.py
    • 已覆盖 GET /tasksGET /tasks/:id/timelineGET /sessions/:session_keyPUT /settings
    • 已覆盖 control token 鉴权分支
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
  • 2026-04-06已继续补执行面 API 行为测试。
    • tests/test_api_server.py 已新增 POST /tasksPOST /tasks/:id/actions/runPOST /tasks/:id/actions/retry-stepPOST /tasks/:id/actions/reset-to-step
    • 已覆盖写操作成功分支与 missing step_name 参数校验
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 28 个测试全部通过。
  • 2026-04-06已补人工干预相关 API 行为测试。
    • tests/test_api_server.py 已新增 POST /tasks/:id/bind-full-videoPOST /sessions/:session_key/rebindPOST /sessions/:session_key/mergePOST /webhooks/full-video-uploaded
    • 已覆盖成功分支、参数校验,以及 TASK_NOT_FOUND/SESSION_NOT_FOUND 的状态码映射
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 37 个测试全部通过。
  • 2026-04-06已补运行面 API 行为测试。
    • tests/test_api_server.py 已新增 POST /worker/run-oncePOST /scheduler/run-oncePOST /runtime/services/:name/:actionPOST /stage/import
    • 已覆盖 action record 落库、副作用返回值、invalid actionmissing source_path 错误分支
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 43 个测试全部通过。
  • 2026-04-06已补剩余控制面 GET 与上传接口测试。
    • tests/test_api_server.py 已新增 GET /historyGET /modulesGET /scheduler/previewGET /settings/schemaPOST /stage/upload
    • stage/upload 成功分支已通过 patch cgi.FieldStorage 固定最小 handler 契约,避免 multipart 解析细节导致测试脆弱
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 49 个测试全部通过。
  • 2026-04-06已开始收口 session / delivery 领域服务。
    • 新增 app/session_delivery_service.py,承接 bind/rebind/merge/webhook 的核心规则与持久化路径
    • app/task_actions.py 已改为薄封装,仅保留 ensure_initialized()、审计记录与 service 调用
    • 新增 tests/test_session_delivery_service.py
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 51 个测试全部通过。
  • 2026-04-06已继续收口 task control 领域服务。
    • 新增 app/task_control_service.py,承接 run/retry/reset 编排
    • app/task_actions.py 已进一步变薄,run_task_action/retry_step_action/reset_to_step_action 改为纯 service 封装 + 审计
    • 新增 tests/test_task_control_service.py
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 54 个测试全部通过。
  • 2026-04-06已将 POST 路径分发从 API handler 中下沉。
    • 新增 app/control_plane_post_dispatcher.py,统一承接 POST 路径的用例分发、状态码映射和运行面 action record
    • app/api_server.pydo_POST() 已收敛为请求解析、dispatcher 调用和响应写出
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 54 个测试全部通过。
  • 2026-04-06已补 dispatcher 直测。
    • 新增 tests/test_control_plane_get_dispatcher.py
    • 新增 tests/test_control_plane_post_dispatcher.py
    • 已覆盖 dispatcher 层的状态码映射、过滤逻辑、运行面 action record 与创建任务冲突映射
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 62 个测试全部通过。
  • 2026-04-06已开始做可迁移交付清理。
    • config/settings.jsonconfig/settings.staged.json 已替换为 standalone 默认模板,不再携带本机绝对路径和真实密钥
    • runtime/cookies.jsonruntime/upload_config.json 已替换为可分发模板
    • 新增 docs/cold-start-checklist.md
    • README.md 已补充冷启动入口说明
    • 已执行 PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v
    • 当前 63 个测试全部通过。