tasks.md 2.4 KB

实施任务 — Forge AI 中枢高风险动作人工审批

status: done

Task 1:模块与 HIGH 发布边界

  • 新增 high-risk-approval 模块并接入 plugin parent、BOM、Admin;
  • 抽取 BUSINESS_ACTION 定义工厂,MEDIUM 行为保持不变;
  • 新增 HIGH 专用发布入口和 policy 持久化;
  • Descriptor/Catalog 输出真实 riskLevel,HIGH 不进入同步业务动作路径。

Task 2:信封加密

  • 定义 CapabilityPayloadCrypto 与不可变 envelope;
  • 实现 AES-256-GCM + AES Key Wrap、AAD、摘要复核;
  • 外部 Secret 版本化 KEK 配置及启动失败关闭;
  • 单测篡改 tag、错误 keyId、轮换旧 key 解密和无密钥失败。

Task 3:审批预占与状态机

  • 实体、Mapper/XML、事务服务和唯一幂等预占;
  • 规范请求摘要、业务状态摘要和安全结果快照;
  • RESERVED/PENDING/EXECUTING/终态恢复与 20 路并发测试;
  • 所有查询显式 tenant/del_flag,更新绑定完整可信身份。

Task 4:专用 Flowable 审批

  • 默认 BPMN、模型保留规则、专用 formKey;
  • USER A 委托身份启动审批,固定 businessKey;
  • 只读 BusinessCodeFormProvider 展示安全审批摘要;
  • completed/rejected/canceled 回调按 approvalId 加锁。

Task 5:回调重新授权与一次执行

  • 重新加载 client/credentialVersion/grant/capability/version/policy/USER A/服务账号;
  • 业务状态摘要漂移、过期、撤销和版本漂移失败关闭;
  • 解密后重跑 Schema/字段/动作白名单;
  • 原 idempotencyKey 执行并与审批终态同事务,重复回调零副作用。

Task 6:approval.get 固定工具

  • 注册统一可见的固定查询工具;
  • 只允许原 client + actor/serviceUser/tenant/org 查询;
  • 输出安全状态摘要,不返回 payload、taskId、密钥字段;
  • Streamable HTTP tools/list/tool-call 回归。

Task 7:Flyway、验证与文档

  • 新表、逻辑删除唯一键、权限资源和外部 Secret 示例配置;
  • 静态检查、Mapper XML、禁止依赖和旧 transport 扫描;
  • High Risk、Secure Actions、Flow、Identity、Control Plane、MCP、Admin 聚合回归;
  • 未执行真实 Flyway/Flowable E2E/模型时明确记录;
  • 更新 spec/test-spec/execution-log,完成二次 Review。