Files
mini-openclaw-v2/backend/fixtures/judgment/jev_vendor_responses.json
T
qiaoqichaoandClaude Code 501a4d9c9b feat(v2): T08 专项离线质检——统一适配 fixture、逐任务准入与预算守卫
覆盖 AC-16/17/18/19/20/38/39/40/41(BR-17/18/19/20/37/38/39、E-10/13/14/15/25)。

新增:
- backend/contracts/judgment.py:JudgeProfile/TaskValidation 契约(逐任务逐用途
  验收登记 + 冻结 checkpoint)。放在独立契约模块,因为规格要求的 tokenizer/预算
  字段会撞上 prescreen.py 既有的"契约层不得出现凭据字样"静态守卫;不放宽该守卫。
- backend/services/judgment_adapters.py:统一适配入口。准入(未登记任务/用途拒绝、
  runtime 须独立评测)、冻结权重(unresolved 与不一致均拒绝)、上下文预算
  (正文与选项分开计,超限返回 E-25 且零发送)、中文否定/条件例外/来源矛盾/未登记
  映射一律落 unknown(inconclusive),不硬选正面结果。
- backend/fixtures/judgment/:中文提炼依据题集、本地模型原始输出、Jev 厂商响应
  fixture(虚构内容,离线契约用)。
- backend/test_judgment_adapters.py:30 项测试。

修改(最小面):
- contracts/prescreen.py:新增 E-25 运行级错误码 JUDGMENT_CONTEXT_EXCEEDED;
  Judgment 增 actual_checkpoint_ref、JudgmentConfig 增 checkpoint_ref。
- services/judgment_provider.py:映射适配层的策略拒绝异常;归一化保留实际权重。

未做(受授权限制):没有 Jev 凭据与 Laya 权重,因此只交付离线 fixture 路径,
live 传输层仅留注入点,未接入硬件与端口探测。fixture 通过不证明中文效果合格。

验证:backend 全量 unittest 440 项 OK(原 410 项无回归)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 09:09:05 +08:00

30 lines
1.2 KiB
JSON

{
"_note": "T08 统一适配 fixture —— Jev 厂商响应形态(虚构字段名,仅用于验证适配契约)。没有凭据时不发送任何请求:本文件只作离线契约用例(docs/v2/11-judgment-providers.md §8.4 步6)。",
"responses": {
"Q-EX-01": {
"vendor": "jev",
"api_version": "2026-06-01",
"checkpoint": "jev-3.2@sha256:7ad401",
"result": {"decision_code": "COND_APPROVE", "narrative": "条件上成立,需补充回款核验。"},
"metrics": {"confidence": 0.74, "uncertainty": 0.19},
"usage": {"prompt_tokens": 812, "output_tokens": 96}
},
"Q-EX-02": {
"vendor": "jev",
"api_version": "2026-06-01",
"checkpoint": "jev-3.2@sha256:7ad401",
"result": {"decision_code": "REJECT", "narrative": "证据不足,不能支持该依据。"},
"metrics": {"confidence": 0.62},
"usage": {"prompt_tokens": 790, "output_tokens": 88}
},
"Q-EX-03": {
"vendor": "jev",
"api_version": "2026-06-01",
"checkpoint": "jev-3.2@sha256:7ad401",
"result": {"decision_code": "NOT_LISTED", "narrative": "厂商新增编码,本适配层未登记映射。"},
"metrics": {},
"usage": {"prompt_tokens": 640, "output_tokens": 40}
}
}
}