feat: close model task operations and quality gates
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 6m49s
Build and Test Quality Gate / Isolated Alibaba and Tencent KMS gateway (pull_request) Failing after 2m7s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 21m37s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 24m55s

This commit is contained in:
2026-08-26 14:53:11 +08:00
parent 1d85329a6a
commit 5d383b4b0e
33 changed files with 2697 additions and 64 deletions
@@ -0,0 +1,94 @@
# AI 合同平台:模型任务运营闭环与质量门禁实施报告
日期:2026-08-26
阶段:核心产品上线收口 / 模型任务运营闭环与质量门禁
模型:`gpt-5.6-sol`(开发与测试阶段)
## 1. 阶段结论
本阶段已经完成模型任务历史、幂等提交、用户取消、运营告警、输出质量自动校验和 30 个真实模型样本基线。30 个样本均由真实 Provider 成功返回,无 fallback,自动质量门禁全部通过。
模型自身执行耗时 P95 为 157.162 秒,低于 3 分钟目标;但 30 个任务集中突发提交时,队列等待 P95 达到 1,487.088 秒。这说明当前模型质量和单任务执行时间达到受控试点门槛,但并发容量尚不足以支撑大规模突发流量。系统已将执行耗时与排队耗时拆分监控,并对排队异常产生运营告警,不能把本轮结果解释为“端到端 3 分钟内完成”。
## 2. 已交付能力
### 2.1 用户侧任务闭环
- 法律问答任务历史页,支持游标分页和仅查看本人任务。
- `Idempotency-Key` 提交幂等;同一用户、同一操作和同一请求可安全重放。
- 相同幂等键但请求内容或用户不同会返回冲突,避免错误复用结果。
- 排队中和执行中的任务均可取消;取消记录保留,不删除历史。
- 取消与模型完成发生竞争时,以已经确认的取消状态为准,迟到结果不会覆盖取消结果。
- 历史项展示 Provider 状态、质量状态、执行进度和失败/接管信息。
### 2.2 自动质量门禁
质量校验采用版本化的确定性规则 `model-job-v1`,覆盖:
- 空输出和过短输出;
- 未解析模板占位符;
- 用户问题丢失;
- 提示词泄露迹象;
- 引用缺失或引用结构不完整;
- 合同审查风险项缺失或为空。
质量结论分为 `passed`、`needs_review`、`failed`,并保存分数、标签、摘要和规则版本。只有真实 Provider 成功且已经完成质量评估的结果才计入正式样本基线;fallback 不计入。
### 2.3 运营后台与告警
- 新增模型任务运营页,展示任务状态、真实样本完成度、质量通过率、fallback/失败/重试/人工接管比例及队列、执行、总耗时分位值。
- 覆盖样本不足、排队 P95 超标、执行 P95 超标、fallback 比例过高、失败比例过高、人工接管积压和长时间未完成任务等告警。
- 取消任务从失败率分母中排除,避免用户主动取消污染可靠性口径。
- PostgreSQL Worker 使用短连接模式,降低多个 Worker 持续占用数据库连接造成的资源争用。
## 3. 真实样本质量与耗时基线
基线运行 ID:`fixed-v1-20260826`
| 指标 | 结果 | 门槛/解释 |
| --- | ---: | --- |
| 提交样本 | 30 | 固定中文合同/法律问答样本 |
| 真实 Provider 合格样本 | 30 | 不含 fallback |
| 自动质量通过 | 30 | 100% |
| 需要人工复核 | 0 | 无阻断项 |
| 自动质量失败 | 0 | 无阻断项 |
| fallback | 0 | 不参与合格样本计数 |
| 执行耗时 P50 | 144.806 秒 | 模型实际处理时间 |
| 执行耗时 P95 | 157.162 秒 | 低于 180 秒,门禁通过 |
| 排队耗时 P50 | 589.677 秒 | 突发容量信号 |
| 排队耗时 P95 | 1,487.088 秒 | 超过 30 秒,运营告警 |
| 端到端耗时 P50 | 739.257 秒 | 排队 + 执行 |
| 端到端耗时 P95 | 1,636.160 秒 | 不能对外承诺 3 分钟 |
正式基线证据保存在本机 `.runtime/model-job-quality-baseline/fixed-v1-20260826-20260826T062134Z.json` 及同名 Markdown 文件中。该目录不进入 Git,避免把运行数据当成产品源代码;本报告保存验收结论与关键指标。
## 4. 浏览器 UAT 结果
已在登录态浏览器完成用户侧真实交互验证:
1. 历史接口最初因前端 SDK 把空参数编码为 `status=&cursor=` 而返回 422;已修复为不发送空查询参数。
2. 提交一条不含真实客户数据的测试法律问答,页面正确显示排队状态和可取消操作。
3. 用户点击取消后,页面显示“任务已由用户取消”,任务状态保留为“已取消”,历史记录仍可查询。
4. 当前浏览器账号为 UAT 法务角色,访问平台管理员运营页被正确拒绝;管理员接口另以平台管理员身份完成授权和数据返回验证。
## 5. 发布判断
本阶段代码可进入受控预发布验证,但仍不建议直接开放大规模真实用户注册:
- 质量样本数量已达到首个 30 条门槛,但样本规模仍小,后续应按合同类型、行业和风险等级持续扩充。
- 单任务执行时间达标,突发排队容量未达标。试点期应限制并发并观察队列告警,随后再评估 Worker 横向扩容或任务调度隔离。
- 自动质量规则用于发现明显结构问题,不等同于律师意见或法律正确性证明;高风险输出仍需人工复核。
- 本地 PostgreSQL 缺少 `pgvector` 时仅作为开发环境警告;预发布和生产环境仍保持失败关闭。
- 本阶段不宣称第三方存证、司法效力或双云灾备能力。
## 6. 下一阶段建议
建议进入“受控试点容量与分层质量评测”:
1. 按试点并发量执行 1、3、5、10 并发阶梯压测,建立队列容量曲线并配置限流。
2. 将样本扩充到至少 100 条,按采购、销售、劳动、租赁、保密等合同类型分层统计。
3. 增加法律事实一致性、引用可核验性和高风险漏检的人工抽检口径。
4. 对质量失败自动进入人工接管队列,并回写处理结论,形成规则迭代数据集。
5. 在真实用户开放前完成正式模型 API 账户、费用预算、隐私与合规材料验收。