Files
JX-BPOS/docs/PROGRESS.md
T
JCAI Main AgentandClaude Opus 5 a919d2e961 M5(1/3): process 的 domain —— 闭合校验、四策略解析、状态聚合
- checkClosure:七类违规(边未映射 / 必填未齐 / 类型冲突 / 孤立节点 /
  网关不平衡 / 汇合来源不明 / 容忍分支被必填依赖)+ 活动未安装 + 岗位不存在;
  不闭合不得发布 —— 画布即时校验与后端裁决同源
- resolveOwner:四策略封闭(指定人 / 岗位唯一人 / 轮值 / 来源跟随);
  岗上多人退轮值,并列按 staffId 稳定排序 —— 解析必须确定性
- aggregateWorkflowState:聚合投影,流程层不另设状态机;计量对象是节点实例,
  XOR 未选分支不入集合,改道/容忍/升审批已消化即不入异常
- nextInstanceNumber:流级重做重开新实例,不复活旧任务

325 个测试通过,门禁五道全绿

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
2026-07-27 01:55:47 +08:00

99 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实施进度(主 Agent 维护)
> 里程碑序见 编码规范 §15。每个里程碑先立骨架(index / contract / port / CONTRACT.md + 空测试)
> 再填实现;门禁从 M0 起全绿,红了先修门禁再前进。
## 状态总览
| 里程碑 | 内容 | 状态 |
|---|---|---|
| M0 | 工作区骨架 + 五道门禁 + 环境自举 | ✅ 完成 |
| M1 | `@contracts` 首版、`event`、`ledger`、`org`、`llm` | ✅ 完成 |
| M2 | `memory`、`toolbox`、`channel`、`message` | ✅ 完成 |
| M3 | `interaction`、`human-tool`、`release`、`activity-registry`、`@sfeel` | ✅ 完成 |
| M4 | `skill-engine`、`loop-engine`、`flow-engine`、`task` | ✅ 完成(模块与 domain;app 装配随 M5) |
| M5 | `process`、`trigger`、`@activity-sdk` + 首个样例活动 | 🟡 `process` 的 domain 已落 |
| M6 | 前端:工作台五要素 → 治理台九功能;`minute`、`report` | ⬜ 未开始 |
**当前:325 个测试通过(含 1 组对真实 PG 的集成测试),门禁五道全绿。**
## 常用命令
```bash
pnpm gates # gen:tiers → typecheck → lint → depcruise → api:check → test(五道门禁)
pnpm db:up # docker compose 起 PG16(四 schema 由 db/init 建)
pnpm db:generate # drizzle-kit 生成 sys schema 迁移
pnpm db:migrate # 应用迁移
pnpm db:seed # 播种五岗位五员工(登录者 = 冯兵)
pnpm dev:api # tsup watch + node dist/main.js(:8787)
pnpm dev:web # vite(:5173,/api 反代到 8787)
```
契约变更后:`pnpm api:check --update && git add api-report`(§12.4)。
## 已完成的落点
**M0** — pnpm workspaces / tsconfig 双工程 / eslint flat / dependency-cruiser
(基线八条 + JCAI 增补,tier-order 由 `tools/module-tiers.json` 生成)/ 契约快照只留契约面 /
docker-compose PG16 + 四 schema。
**M1** — `@contracts` 九文件首版;四个 L1 模块各带 index / contract / port / CONTRACT.md /
domain 零 mock 测试;app 层 Hono 服务、鉴权中间件、DI 装配、drizzle 迁移、AES-256-GCM 凭证密封。
已验证:种子播种、岗位授权(BD 被拒 / PM 放行)、LLM 四元绑定密钥不外泄、
ledger 对真实 PG 的 schema 自生长与写三分。
**M2** — 四个 L2 模块:`memory`(任务记忆四性质 / 活动记忆四层 / 任务日志两级投影 / 度量)、
`toolbox`(注册两审 / 效应等级 / 白名单 / `ToolInvoker` 第二条缝)、
`channel`(入站归一 → 系统写 → 数据事件;出站与关联记录)、`message`(通知 / 跨任务征答 / 死信 / 无主兜底)。
app 侧接上派发器(advisory lock 串行 + 消费幂等)与 `/api/ingest` 模拟通道。
已验证:一封无主 RFQ 邮件入站 → 归属解析 no-match → 事件落库 → 兜底落到 OP 岗位李元初的消息要素。
**M3** — `@sfeel` 全套(lexer / parser / evaluate / static-check);
`human-tool` 三规矩机检 + 工单两模式 + 对话卡族 + 到达面两路 + 驳回重答;
`release` 落地预检五项 + 幂等落地 + 落地收敛才发射输出口;
`interaction` 控制权按态转交 + 视图净化门 + SSE 推送;
`activity-registry` 安装两审 + 悬空监听拒绝 + 零环境能力扫描 + 资产与包分离版本化 + 进化管线状态机。
**M4** — `skill-engine`(载方法不载权力 / 结晶片段经 ToolInvoker 留痕 / 装配入信封);
`flow-engine`(四种步型 / 条件跳步 / 声明给定的失败路径 / 异步步即监听 / 步序位置持久);
`loop-engine`(**自研 CMMN 子集解析器**,表外构件直接报错;两副标准生命周期与迁移拓扑;
Enabled ≠ Active;前提求值与语义性前提交裁量;DMN 确定性求值与命中行留痕;DRD 缺口演绎;
双向驱动与交集导航,断点即人环;三型行动);
`task`(终态五名裁定 / Harness 预算与停滞熔断 / 控制三语义 / 改派 / 断点续跑三份持久状态 /
封卷触发蒸馏)。
**M5(进行中)** — `process` 的 domain:边映射闭合校验(七类违规)、负责人四策略确定性解析、
工作流状态聚合投影、失败走向消化判定、节点实例重开。
## 下一步(按序)
1. **M5 · `process` 余下**:`port.ts` + usecase(流程包存取与发布、工作流实例起单与流转)、
`internal/adapter/workflow-compiler.ts`(Mastra `createWorkflow`/`createStep`,编码规范 §6.1:
XOR → `.branch()`,AND → `.parallel()`,审批点与活动节点 `suspend()`,终态事件到达 `resume()`)。
2. **M5 · `trigger`**:三类触发器(周期两型 / 事件 / 登记)、判定与经调用接口起单;
接上 `container.ts` 里的 `TriggerMatcher` 占位;pg-boss 承接周期规则与监听时限扫描。
3. **M5 · `@activity-sdk`**:基座六件接口 + `defineActivity()` + 本地开发宿主 + 回放夹具 +
tsup 编译预设(§8.2 / ADR-004);随后在 `activities/` 下按《MVP示例工作流》做首个活动
(建议先 A1 受理归一 = flow,再 A3 渠道寻源 = loop)。
4. **M4 收尾**:把 loop / flow / skill / task 接入 `container.ts`
—— 需要 `loop-engine/internal/adapter/agent-runner.ts` 的 Mastra Agent(§6.1)。
5. **M6 · 前端**:按 README《前端 UI · 原型 1:1 平移》逐屏平移
`~/coding/JCAI_PRD/workbench`(约 8k 行)与 `~/coding/JCAI_PRD/governance`(约 5k 行);
CSS 与 DOM 原样搬,组件按 §9 重排,mock 数据换真实 API;`minute`、`report` 两模块随之。
6. **验收**:README《MVP 完成判据》十条场景端到端跑通。
## 待接的占位(详见 docs/debt.md)
- `container.ts` 两个占位端口:`InFlightWorkProbe`(M4)、`TriggerMatcher`(M5)
- 派发器的消费者表为空(M4 任务 / M5 触发器)
- pg-boss 已装未用(M5 定时作业)
- M4 四模块尚未接入 `container.ts`(需要 Mastra Agent adapter 与流程层起单,随 M5)
## 已建 ADR
编码规范 §14 已占 001–006,新 ADR 自 **007** 续(README 写「从 005 续」是笔误):
- ADR-007 工具链与门禁的落地形态
- ADR-008 投递队列:`sys.event_delivery` 是队列本体,pg-boss 只管定时
- ADR-009 凭证加密:AES-256-GCM + `JCAI_SECRET_KEY`