Files
biliup-next/docs/professionalization-roadmap-2026-04-06.md

5.4 KiB
Raw Blame History

biliup-next Professionalization Roadmap - 2026-04-06

目标

biliup-next 从“方向正确的重构工程”推进到“边界清晰、契约稳定、可持续演进的专业级本地控制面系统”。

本路线图以当前仓库中已经明确吸收的 OpenClaw 设计哲学为参照:

  • modular monolith
  • control-plane first
  • schema-first
  • manifest-first
  • registry over direct coupling
  • single source of truth

重点不是重复这些口号,而是把它们继续落实到真实代码和工程制度中。

维度一:平台边界

当前差距

  • provider 内仍大量直接调用 subprocessrequests
  • adapter / provider / module service 的边界还不够硬
  • 外部依赖的超时、重试、错误翻译和观测没有统一制度

目标状态

  • 外部命令和外部 HTTP 都通过稳定 adapter 层进入系统
  • provider 只消费标准化 adapter 能力和统一错误语义
  • 超时、重试、限流、日志和诊断在 adapter 层具备统一约束

改进事项

  • ffmpegcodexbiliup、Bili API、Groq 定义统一 adapter 接口
  • 将 provider 中的直接 subprocess.run()requests 逐步下沉到 adapter
  • 统一 adapter 错误模型,减少 provider 自己拼接临时错误码
  • 为 adapter 增加可观测上下文,例如 command name、target、duration、attempt

完成标志

  • 业务模块不再直接拼 shell/http 调用
  • adapter 成为唯一外部依赖入口

维度二:领域模型

当前差距

  • 核心规则分散在 task_enginetask_policiestask_actions、provider 和部分工作区文件
  • 文档已有 domain model但还没有形成更稳定的应用服务/领域服务边界
  • tasksessionfull_video_bvid 这类跨模块关系仍有隐式规则

目标状态

  • task lifecycle、retry policy、session binding、delivery side effects 都有清晰归属
  • 领域规则主要存在于少数稳定模块,而不是散落在控制器和 provider 中
  • “谁负责写什么状态”有明确制度

改进事项

  • 明确 TaskTaskContextSessionBinding 的边界和 ownership
  • full_video_bvid、session 归并、评论/合集副作用收敛成独立领域服务
  • 评估是否引入显式 domain event 或最小事件记录层
  • 为状态迁移建立更显式的 transition table 或 policy object

完成标志

  • 关键规则不再分散在多个入口函数中重复实现
  • task/session/delivery 的事实源和写入职责稳定

维度三:接口契约

当前差距

  • API handler 仍承担较多 payload 组装和视图拼接工作
  • OpenAPI 与真实控制面细节还不够同步
  • 内部领域模型与外部 API 视图没有充分分层

目标状态

  • API 对外暴露稳定 DTO而不是直接拼内部模型
  • handler 更薄,组装逻辑集中在 service / presenter / serializer 层
  • 契约变更可追踪、可校验

改进事项

  • 为 task detail、task list、session detail、timeline 建立稳定 serializer
  • 清理 API handler 中的重复组装逻辑
  • 更新 docs/api/openapi.yaml,让其覆盖真实控制面接口
  • 明确哪些字段属于内部实现细节,不直接暴露给前端

完成标志

  • handler 只做路由、鉴权、输入解析和响应返回
  • API 文档与真实返回结构保持同步

维度四:测试体系

当前差距

  • 已有最小回归测试,但仍偏重纯逻辑
  • repository、API、provider 契约、端到端场景覆盖不足

目标状态

  • 核心编排、存储、API、adapter 都有分层测试
  • 关键重构不需要依赖手工回归

改进事项

  • 新增 repository 的 SQLite 集成测试
  • 为 API handler 增加最小接口行为测试
  • 为 adapter/provider 增加契约测试和失败场景测试
  • 保留现有纯逻辑 unittest继续增加 smoke 回归脚本

完成标志

  • 至少形成:
    • 逻辑单元测试
    • SQLite 集成测试
    • API 行为测试
    • smoke / regression 流程

维度五:运维成熟度

当前差距

  • 已有 doctor、logs、systemd 控制和 workspace 隔离
  • 但健康度、指标、审计、恢复机制还不够体系化

目标状态

  • 控制面不仅能“看到状态”,还能帮助判断风险和恢复问题
  • 运行问题可以靠结构化信号而不是人工翻日志定位

改进事项

  • 区分 health / readiness / degraded
  • 规范结构化日志字段
  • 为 task/step 增加最小指标视图
  • 完善审计事件分类
  • 明确数据库/配置变更/运行资产的迁移与回滚流程

完成标志

  • 常见运行问题可以靠控制面和标准日志定位
  • 关键操作具备审计和回滚说明

推荐优先顺序

  1. 平台边界
  2. 领域模型
  3. 接口契约
  4. 测试体系
  5. 运维成熟度

下一批优先项

Priority A

  • biliup、Bili API 和 codex 建立统一 adapter 边界
  • task_actions 中与 session/delivery 相关的规则继续抽成稳定服务
  • 为 task list / task detail / session detail 提供 serializer 层

Priority B

  • 新增 repository SQLite 集成测试
  • 新增 API 行为测试
  • 更新 OpenAPI 契约

Priority C

  • 设计 health/readiness/degraded 模型
  • 规范日志和审计字段

备注

  • 这份路线图描述的是“距离专业化还有哪些结构性工作”,不是说当前系统不可用。
  • 当前项目已经具备正确方向;接下来的重点是把设计哲学继续固化为代码边界、测试制度和运维约束。