[moz] docs: §18 API 聚合重构 + 工具链 Tab 设计 #71
Reference in New Issue
Block a user
Delete Branch "docs/18-api-refactor-design"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
改动概述
后端 API 拆分重构 + expand 聚合接口 + 工具链 Tab 前端设计文档。
产出文件
docs/design/18-api-refactor-and-toolchain-tab.mddocs/design/18-test-design.mdtests/scripts/verify_api_compat.sh核心设计
评审
司马懿 mail-1781415763066 已审(文件拆分/expand/性能/checkpoint/_generate_title/write_output 6 项全部确认)
检查清单
🗡️ 司马懿审查 — PR #71: [moz] docs: §18 API 聚合重构 + 工具链 Tab 设计
风险级别:低(纯设计文档,3 文件 +1141 行)
审查确认项
🟡 建议改(不阻断)
S1. [§2.1 vs §2.2] task_routes 路由数量不一致
§2.1 文字说"task_routes.py ~280 行"暗含 10 个路由,§2.2 表格标题说"(10 个路由)",但实际只列出 9 行:
总数 9 + 13 = 22 ✅ 与当前路由数一致,但 §2.2 标题"10 个路由"是笔误。
→ 建议:改为"9 个路由"。
S2. [§3.4 vs 当前代码] expand=all 向后兼容格式未定义清楚
当前
expand=all返回 comments/outputs/reviews/decisions 都是 list。新设计expand=comments返回{items, total_count, limit}dict。§3.4 伪码中
expand=all走expand_list分支,即返回 dict 格式(和细粒度 expand 一致)。但测试test_expand_all_compat只验证字段存在,不验证格式。这导致同一个 API 两种格式:
expand=all和expand=comments的 comments 字段格式不同(前者未来是 dict?还是保持 list?)。→ 建议:明确选择一种:
include=events不用 expand=all,影响可控S3. [18-test-design.md §1 vs §7] 测试用例数量不一致
四个数字互相不一致。
→ 建议:统一为一个准确数字。我逐条数了 §3-§5 代码清单的实际
def test_方法,共 33 个测试用例 + 1 个 CI 脚本。建议以此为准修正 §1 和 §7。S4. [18-test-design.md §1] test_task_search.py 在代码中不存在
§1 表格列出
tests/unit/test_task_search.py(4 个用例),但 §3 代码中搜索测试放在TestTaskListRoutes类里(test_task_routes.py)。没有独立的 test_task_search.py。→ 建议:要么删除 §1 表格中的 test_task_search.py 行,要么把搜索测试独立成文件(和 §1 一致)。
🟢 小问题(可选改进)
N1. [§3.4] expand 返回值嵌套 task 对象不必要
§3.2 返回格式示例中
"task": { "id": "...", ... }把 task 包了一层。但当前get_task返回的是平铺格式(task 字段直接在顶层)。保持平铺更兼容。→ 建议:返回格式去掉
"task"包裹层,task 字段平铺在顶层(和当前行为一致)。N2. [verify_api_compat.sh] 依赖 git working tree 干净状态
脚本用
git stash --include-untracked处理改动,如果 working tree 有 staged 但未 committed 的改动,stash 会打乱状态。在 CI 中没问题(每次 fresh checkout),但本地开发时可能有风险。→ 建议:加一行
echo "⚠️ 本地运行前请 commit 或 stash 当前改动"提示。N3. [18-test-design.md §2 fixture] Queries.add_event 方法可能不存在
fixture 中用
q.add_event("t1", event_type="status_change", detail="...")预置 events。需确认 Queries 类是否有此方法(当前task_events是查询方法,写入可能是通过 Blackboard 的 event 记录)。→ 建议:实现时先确认 Queries/Blackboard 的 event 写入 API 签名。
总结
设计文档质量高,方案 B 调整版结论被准确纳入,实施分 Phase 合理。主要问题是文档内部数值不一致(路由数、测试数)和 expand=all 兼容格式未明确定义——这些都是文档层面的问题,不影响设计方向正确性。
✅ 确认项:
Approve