Files
writer-work-flow/packages
Yaojia Wang 7f3eaaba3d feat(orchestrator): C1 多章工作流链图 — write→review→decide→accept 有环图
实现 chain-workflow 设计 §3 的 LangGraph 链图,激活休眠资产
(checkpointer + interrupt-on-conflict)。

- packages/core/ww_core/orchestrator/chain/{state,nodes,graph}.py:
  - ChainState(§3.1):只放控制流(章号/计数/written/has_conflicts),
    正文/审稿/冲突明文落领域表,resume 重读(不变量 #1/#3/#5)。
  - 四节点 write_chapter/review_chapter/decide/accept_chapter(§3.2):
    各自短事务、独立 session;decide 纯逻辑读最近审稿留痕定 has_conflicts;
    accept 节点起始处遇冲突 interrupt() 暂停交人,恢复值=裁决清单。
  - build_chain_graph(§3.3 签名):节点 DB 依赖经 session_factory +
    repo 工厂 + assemble/accept_op 闭包默认参绑定(langgraph 不收 partial);
    条件边实现循环(current<=last 回 write)+ interrupt。
  - 验收事务(apps/api)经 accept_op 闭包注入,守目录所有权 + 不变量 #3/#4。
  - 收集版写章:复用 build_write_request 同一组装路径(stream=False → run)。
- 删除无人调用的 build_write_graph 工厂(write_node 本体保留,被链复用);
  清理其 __init__ 导出 + 旧单节点图单测(YAGNI,解决审计死代码)。
- 单测(mock gateway + fake session_factory + fake repos + MemorySaver):
  无冲突全跑到 END 且 written 满 / 有冲突→__interrupt__ / resume(Command)→
  accept→END / decide 纯逻辑 / accept 推进章号;零 token 零联网。

门禁:packages ruff/format/mypy 干净;pytest 314 passed。
2026-06-23 16:54:47 +02:00
..