12 KiB
12 KiB
biliup-next Todo - 2026-04-06
今日待办
P0
-
修正任务级
running状态缺失问题。- 当前 step 会进入
running,但 task 不会进入running,导致控制台“处理中”筛选、优先级判断和注意力状态失真。 - 相关位置:
src/biliup_next/app/task_engine.pysrc/biliup_next/app/api_server.pysrc/biliup_next/modules/*/service.py
- 当前 step 会进入
-
收敛
full_video_bvid的单一事实源。- 当前
task_contexts、session_bindings、session/full_video_bvid.txt三处状态可能不一致。 rebind_session_full_video_action()没有同步更新session_bindings,后续新任务 ingest 仍可能继承旧 BV。- 相关位置:
src/biliup_next/app/task_actions.pysrc/biliup_next/modules/ingest/service.pysrc/biliup_next/infra/task_repository.py
- 当前
-
补强 SQLite 并发配置。
- 当前 API 与 worker 可并行运行,但数据库连接仍是最基础配置,缺少
busy_timeout、WAL、foreign_keys=ON等保护。 - 后续任务量或并发操作增加时,容易出现
database is locked一类问题。 - 相关位置:
src/biliup_next/infra/db.py
- 当前 API 与 worker 可并行运行,但数据库连接仍是最基础配置,缺少
P1
-
消除 API 路径上的重复初始化。
ensure_initialized()目前会重复执行配置加载、DB 初始化、插件扫描和 provider 实例化。- API 每次请求都可能再次触发整套装配,后续会拖慢控制面并增加维护成本。
- 相关位置:
src/biliup_next/app/bootstrap.pysrc/biliup_next/app/api_server.py
-
优化
/tasks的全量扫描和 N+1 查询。- 当前
attention/delivery过滤会先拉最多 5000 条任务,再逐条补 task payload、step、context 和文件系统状态。 - 任务规模上来后会明显拖慢列表页和筛选体验。
- 相关位置:
src/biliup_next/app/api_server.pysrc/biliup_next/infra/task_repository.py
- 当前
-
收敛文档状态机与代码实现。
- 文档中存在
ingested、completed、cancelled,并声明不再依赖 flag 文件作为权威状态。 - 实际实现中这些状态并未完整落地,评论/合集完成态仍依赖多个 flag 文件。
- 需要统一“文档模型”和“代码真实状态机”,避免后续继续漂移。
- 相关位置:
docs/state-machine.mdsrc/biliup_next/app/api_server.pysrc/biliup_next/modules/comment/providers/bilibili_top_comment.pysrc/biliup_next/modules/collection/providers/bilibili_collection.py
- 文档中存在
P2
-
为状态机、重试和手工干预流程补测试。
- 当前仓库没有看到
tests/或自动化回归覆盖。 - 优先覆盖:
task_enginetask_policiestask_actionsretry_metatask_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_keys、busy_timeout、WAL、synchronous=NORMAL。 - 已执行
python -m compileall biliup-next/src/biliup_next验证语法通过。
- task 在 step 被 claim 后会进入
- 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.md与architecture.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 codex、biliup_cli、bilibili_top_comment、bilibili_collectionprovider 已改为依赖 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,当前验证通过。
- task timeline 的组装逻辑已从
- 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_bindingsupsert 与 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 /tasks、GET /tasks/:id/timeline、GET /sessions/:session_key、PUT /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 /tasks、POST /tasks/:id/actions/run、POST /tasks/:id/actions/retry-step、POST /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-video、POST /sessions/:session_key/rebind、POST /sessions/:session_key/merge、POST /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-once、POST /scheduler/run-once、POST /runtime/services/:name/:action、POST /stage/import- 已覆盖 action record 落库、副作用返回值、
invalid action和missing 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 /history、GET /modules、GET /scheduler/preview、GET /settings/schema、POST /stage/uploadstage/upload成功分支已通过 patchcgi.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.py的do_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.json与config/settings.staged.json已替换为 standalone 默认模板,不再携带本机绝对路径和真实密钥runtime/cookies.json与runtime/upload_config.json已替换为可分发模板- 新增
docs/cold-start-checklist.md README.md已补充冷启动入口说明- 已执行
PYTHONPATH=biliup-next/src python -m unittest discover -s biliup-next/tests -v - 当前 63 个测试全部通过。