Files
ai-contract-platform/project-docs/V2-P1-04.3-playbook-preflight-relations-conflicts-word-diff-2026-08-23.md
T
yuqei 1d85329a6a
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 9m12s
Build and Test Quality Gate / Isolated Alibaba and Tencent KMS gateway (pull_request) Failing after 4m53s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 24m55s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 8m42s
feat: deliver governed contract platform and async AI tasks
2026-08-26 12:53:47 +08:00

148 lines
6.6 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.
# P1-04.3 企业 Playbook 发布前试运行、规则关系与组合冲突交付报告
日期:2026-08-23
状态:已实现、已迁移、已通过自动化验证与 Chrome 隔离 UAT
## 1. 本阶段目标与结论
本阶段完成以下五项能力:
1. 规则发布前样本文本 dry-run,并返回可核验的发布令牌;
2. 标点碰撞、上下文边界、样本未命中、兜底文本重复引入禁用表述等预警或阻断;
3. 租户规则的依赖与互斥关系配置、持久化、版本化和快照固化;
4. 组合候选生成前的依赖、互斥、文本命中重叠与替换链式触发分析,并返回结构化冲突解释;
5. 合同候选差异从整行着色升级为中英文语义分段后的词级/局部增删高亮。
结论:P1-04.3 已达到可进入下一阶段的验收标准。发布和组合生成均由服务端重复校验,前端不是唯一防线;发生阻断时不会生成候选版本,也不会修改合同正文。
## 2. 产品与流程设计
### 2.1 发布前检查门禁
管理员在发布规则前必须填写脱敏样本文本并运行检查。结果同时展示:
- 样本原文与执行后预览;
- 禁用表述命中次数;
- blocker、warning、info 分级问题;
- 每个问题的原因和修复建议;
- 警告逐项确认状态。
含兜底文本的启用规则只有在以下条件全部满足时才能发布:
- dry-run 无 blocker;
- dry-run 令牌与当前规则、关系和样本文本完全一致;
- 所有 warning 已明确确认。
规则匹配值、兜底文本或依赖/互斥关系发生修改时,同一门禁也适用于新版本 PATCH 发布,避免 API 客户端绕过页面。
### 2.2 规则关系
每条规则支持:
- `depends_on_rule_ids`:依赖规则;
- `mutually_exclusive_rule_ids`:互斥规则。
发布阶段阻断未知引用、自引用、依赖/互斥语义矛盾、反向矛盾和依赖环。审查完成后,这些关系随规则版本写入 Playbook 快照,后续规则修改不会改变历史决策证据。
### 2.3 组合冲突解释
组合候选生成前会分析:
- 依赖规则未命中;
- 可执行依赖规则被跳过;
- 互斥规则被同时采用;
- 两条禁用规则命中范围相同或包含重叠;
- 一条兜底文本引入另一条已选规则的命中表述;
- 运行时上下文边界和连续标点风险。
blocker 返回 HTTP 409 与结构化 `issues`,不创建候选版本;warning 写入候选、版本元数据和审计事件,在差异审阅中持续展示。
### 2.4 词级差异
差异算法先按句号、分号、换行等语义边界对长合同分段,再对变更段执行中英文分词 LCS。这样既保留远距离未改正文,也能将替换范围收敛到具体词语和标点;极端大段文本仍有复杂度上限和安全回退。
## 3. 技术实现
### 3.1 后端与数据模型
- 新增 `POST /api/v1/enterprise-playbook/rules/dry-run`;
- 规则创建和实质性更新使用 SHA-256 dry-run 令牌作为发布证据;
- `approval_rules` 新增依赖和互斥 JSON 字段;
- 迁移版本:`20260823_0054`;
- 规则命中快照新增依赖和互斥关系;
- 组合冲突使用结构化错误返回并在候选元数据中保留非阻断预警;
- OpenAPI 手工契约和运行时 schema 已同步。
### 3.2 前端
- 企业 Playbook 管理页新增关系选择器、样本输入、dry-run 结果、警告确认和发布门禁;
- 规则清单展示依赖/互斥关系;
- 组合候选面板展示 blocker/warning 的原因与处理建议;
- 差异对话框新增“原正文 / 组合候选”双栏局部词级高亮;
- 新增长合同远距离变更回归测试,防止退化为整段着色。
## 4. Chrome 隔离 UAT 证据
工作空间:`uat-playbook-20260823`
账号:`uat.legal.20260823@example.test`
合同:`contract-13b67d8e4ea8`(UAT P1-04.3 规则组合冲突合同)
### 4.1 规则与关系
- `approval-rule-73410de1f68f`:UAT P1043 禁止自动续约;依赖 `approval-rule-711b817a3ac4`;
- `approval-rule-6d731bd4f871`:UAT P1043 禁止强制续约;互斥 `approval-rule-73410de1f68f`。
Chrome 页面真实识别并展示:
- 上下文边界警告;
- 标点碰撞警告;
- 发生警告时发布按钮禁用;
- 逐项确认后发布成功;
- 发布后的规则清单正确显示依赖和互斥关系。
### 4.2 快照与冲突
- 审查任务:`review-949afaccde84`;
- 快照:`playbook-snapshot-949afaccde84`;
- 快照摘要:`f284e78edcd2862a16eb3d147d966e69a256a61b19edb140243abef9e8a6863e`;
- 命中 4 条企业规则,可用兜底 4 条。
验证结果:
1. 同时采用两条互斥续约规则:HTTP 409,页面解释“不能同时写入一个候选版本”,无候选生成;
2. 跳过依赖规则但采用被依赖规则:HTTP 409,页面解释“依赖的可执行规则被跳过”,无候选生成;
3. 恢复依赖规则并跳过互斥规则:成功生成组合候选。
### 4.3 候选与差异
- 候选:`playbook-candidate-c73bbb2b4322`;
- 候选版本:`version-4986d773cecb`;
- 状态:`candidate`,未采用;
- 决策:采用 3 条、跳过 1 条;
- 页面持续展示 4 条运行时上下文/标点预警;
- 长合同差异产生 6 个局部新增高亮和 6 个局部删除高亮;
- 单个新增/删除高亮最大长度为 9/7 字,不再整段着色;
- 当前合同正文未被覆盖,候选保留供后续人工审阅。
## 5. 验证结果
- Python 编译:通过;
- P1-04.3 后端单元测试:3/3 通过;
- 租户隔离、版本更新与 dry-run 发布门禁集成测试:通过;
- 组合候选创建、撤销、安全采用回归测试:通过;
- 审查工作器与规则快照回归测试:通过;
- 前端完整测试:41/41 通过;
- 词级差异专项测试:4/4 通过;
- TypeScript 类型检查:通过;
- Next.js 生产构建:通过,共 115 个路由;
- 运行时 OpenAPI 与 YAML 解析:通过;
- Alembic 当前版本:`20260823_0054 (head)`;
- Contract API、Review Worker 与 Contract Web 已保持运行。
## 6. 已知边界与后续建议
1. 当前 warning 允许管理员在理解风险后确认发布,这是治理告警而非绝对禁止;企业可在下一阶段增加“特定 warning 必须双人复核”的租户策略。
2. 当前依赖/互斥关系通过规则 ID 建模;下一阶段可增加关系图、影响范围查询和删除前引用检查。
3. 对超长且缺少标点/换行的单段文本,差异算法会触发复杂度安全回退;可继续引入 Myers diff 或后台异步差异服务。
4. 建议下一阶段进入 P1-04.4:规则变更影响分析、关系图与删除保护、双人发布审批、历史 dry-run 证据查询,以及冲突处理运营看板。