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>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"_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}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"_note": "T08 统一适配 fixture —— 中文提炼依据质检题集与本地模型原始输出。虚构演示内容,不是兴邦真实题库;fixture 通过不等于中文效果合格(docs/v2/06-validation.md §6)。",
|
||||
"rubric_version": "extraction-grounding.v1",
|
||||
"checkpoint_ref": "laya-1.0-zh@sha256:2f1c8d",
|
||||
"questions": {
|
||||
"Q-EX-01": {
|
||||
"id": "Q-EX-01",
|
||||
"version": "extraction-grounding.v1#1",
|
||||
"type": "choice",
|
||||
"prompt": "材料是否支持『客户结构稳定』这一提炼依据?",
|
||||
"options": [
|
||||
"supported",
|
||||
"unsupported"
|
||||
],
|
||||
"evidence_ids": [
|
||||
"EV-EX-01"
|
||||
],
|
||||
"evidence_text": [
|
||||
"近三年主要客户未发生变动,前五大客户集中度由 61% 降至 58%。"
|
||||
]
|
||||
},
|
||||
"Q-EX-02": {
|
||||
"id": "Q-EX-02",
|
||||
"version": "extraction-grounding.v1#1",
|
||||
"type": "choice",
|
||||
"prompt": "材料是否支持『回款能力未下降』这一提炼依据?",
|
||||
"options": [
|
||||
"supported",
|
||||
"unsupported"
|
||||
],
|
||||
"evidence_ids": [
|
||||
"EV-EX-02"
|
||||
],
|
||||
"evidence_text": [
|
||||
"主要客户账期由 60 天延长至 95 天,尚未提供银行流水核验。"
|
||||
]
|
||||
},
|
||||
"Q-EX-03": {
|
||||
"id": "Q-EX-03",
|
||||
"version": "extraction-grounding.v1#1",
|
||||
"type": "choice",
|
||||
"prompt": "历史案例 H-018 的适用条件在当前项目是否成立?",
|
||||
"options": [
|
||||
"supported",
|
||||
"unsupported"
|
||||
],
|
||||
"evidence_ids": [
|
||||
"EV-EX-03"
|
||||
],
|
||||
"evidence_text": [
|
||||
"案例适用条件为『客户结构稳定且回款可逐笔匹配』,例外为『收入集中或关联回款未穿透』。"
|
||||
]
|
||||
},
|
||||
"Q-EX-04": {
|
||||
"id": "Q-EX-04",
|
||||
"version": "extraction-grounding.v1#1",
|
||||
"type": "choice",
|
||||
"prompt": "两份来源对同一事实的说明是否一致?",
|
||||
"options": [
|
||||
"supported",
|
||||
"unsupported"
|
||||
],
|
||||
"evidence_ids": [
|
||||
"EV-EX-04",
|
||||
"EV-EX-05"
|
||||
],
|
||||
"evidence_text": [
|
||||
"说明称设备清单与发票品名一致;核验记录标注存在三项品名不符。"
|
||||
]
|
||||
},
|
||||
"Q-EX-05": {
|
||||
"id": "Q-EX-05",
|
||||
"version": "extraction-grounding.v1#1",
|
||||
"type": "choice",
|
||||
"prompt": "长材料是否仍支持同一提炼依据?",
|
||||
"options": [
|
||||
"supported",
|
||||
"unsupported"
|
||||
],
|
||||
"evidence_ids": [
|
||||
"EV-EX-06"
|
||||
],
|
||||
"evidence_text": [
|
||||
"长材料样例:经营情况说明、账期变化说明、设备权属说明、租赁物清单与核验记录逐段拼接,用于触发上下文预算拒绝路径。"
|
||||
],
|
||||
"evidence_padding": "这是一段刻意加长的正文,用于验证超出已验证上下文预算时必须返回未完成而不是截断后继续发送。",
|
||||
"evidence_repeat": 12
|
||||
}
|
||||
},
|
||||
"local_answers": {
|
||||
"Q-EX-01": {
|
||||
"label": "支持",
|
||||
"mapping": {
|
||||
"支持": "supported",
|
||||
"不支持": "unsupported"
|
||||
},
|
||||
"confidence": 0.91,
|
||||
"evidence_ids": [
|
||||
"EV-EX-01"
|
||||
],
|
||||
"actual_checkpoint_ref": "laya-1.0-zh@sha256:2f1c8d"
|
||||
},
|
||||
"Q-EX-02": {
|
||||
"label": "不符合",
|
||||
"mapping": {
|
||||
"支持": "supported",
|
||||
"不支持": "unsupported"
|
||||
},
|
||||
"confidence": 0.88,
|
||||
"evidence_ids": [
|
||||
"EV-EX-02"
|
||||
],
|
||||
"actual_checkpoint_ref": "laya-1.0-zh@sha256:2f1c8d"
|
||||
},
|
||||
"Q-EX-03": {
|
||||
"label": "支持",
|
||||
"mapping": {
|
||||
"支持": "supported"
|
||||
},
|
||||
"exception_applies": true,
|
||||
"evidence_ids": [
|
||||
"EV-EX-03"
|
||||
],
|
||||
"actual_checkpoint_ref": "laya-1.0-zh@sha256:2f1c8d"
|
||||
},
|
||||
"Q-EX-04": {
|
||||
"label": "支持",
|
||||
"mapping": {
|
||||
"支持": "supported",
|
||||
"不支持": "unsupported"
|
||||
},
|
||||
"conflicts": [
|
||||
"EV-EX-04",
|
||||
"EV-EX-05"
|
||||
],
|
||||
"evidence_ids": [
|
||||
"EV-EX-04",
|
||||
"EV-EX-05"
|
||||
],
|
||||
"actual_checkpoint_ref": "laya-1.0-zh@sha256:2f1c8d"
|
||||
},
|
||||
"Q-EX-05": {
|
||||
"label": "支持",
|
||||
"mapping": {
|
||||
"支持": "supported",
|
||||
"不支持": "unsupported"
|
||||
},
|
||||
"evidence_ids": [
|
||||
"EV-EX-06"
|
||||
],
|
||||
"actual_checkpoint_ref": "laya-1.0-zh@sha256:2f1c8d"
|
||||
},
|
||||
"Q-EX-06": {
|
||||
"label": "支持",
|
||||
"mapping": {
|
||||
"支持": "supported",
|
||||
"不支持": "unsupported"
|
||||
},
|
||||
"evidence_ids": [
|
||||
"EV-EX-01"
|
||||
],
|
||||
"actual_checkpoint_ref": "laya-1.1-zh@sha256:99be07"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user