# ═════════════════════════════════════════════════════════════════ # 买卖合同 · 回归测试用例 # ═════════════════════════════════════════════════════════════════ # 配套文件:contract_purchase.yaml # visual_manifest 段用于 mock 视觉检测器输出(印章/签名) # # phase 字段: # - 默认 executed(按全局 default_phase),可省略 # - 显式声明 draft → 引擎按草稿阶段评判 # # 新增状态: # - pass / fail / skipped_phase / skipped_gate target: contract_purchase.yaml fixtures: # ═════════════════════════════════════════════════════════════ # MM-001 · 当事人信息完整性 # ═════════════════════════════════════════════════════════════ MM-001: # ── Executed 阶段 ── - name: 已执行-完整合规 phase: executed extract: 甲方名称: 上海某某科技有限公司 甲方法定代表人: 张三 甲方统一信用代码: "91310000MA1K3H5K8L" 乙方名称: 北京某某贸易有限公司 乙方法定代表人: 李四 乙方统一信用代码: "91110000MA01234X5Y" expected: pass - name: 已执行-缺少法定代表人 phase: executed extract: 甲方名称: 上海某某科技有限公司 甲方法定代表人: null # executed 阶段缺失 = fail 乙方名称: 北京某某贸易有限公司 乙方法定代表人: 李四 expected: fail - name: 已执行-USCC 校验位错误 phase: executed extract: 甲方名称: 上海某某科技有限公司 甲方法定代表人: 张三 甲方统一信用代码: "91310000MA1K3H5K80" 乙方名称: 北京某某贸易有限公司 乙方法定代表人: 李四 乙方统一信用代码: "91110000MA01234X5Y" expected: fail # ── Draft 阶段(同样的抽取结果,不同的判定)── - name: 草稿-只有甲乙方名称(执行阶段 fail,草稿阶段 pass) phase: draft extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 # 法代、USCC、电话都没填 expected: pass # 草稿阶段这些是待补项 - name: 草稿-连甲乙方名称都没有(仍然 fail) phase: draft extract: 甲方名称: null # draft 阶段 required_from 也必需 乙方名称: 北京某某贸易有限公司 expected: fail # ═════════════════════════════════════════════════════════════ # MM-002 · 合同金额大小写一致性 # ═════════════════════════════════════════════════════════════ MM-002: - name: 大小写一致 extract: 合同金额: 1200000.00 合同金额大写: 壹佰贰拾万元整 expected: pass - name: 不一致(金额错位) extract: 合同金额: 1200000.00 合同金额大写: 壹佰贰拾贰万元整 expected: fail - name: 缺少大写金额 extract: 合同金额: 1200000.00 合同金额大写: null expected: fail # ═════════════════════════════════════════════════════════════ # MM-003 · 大额合同须招投标 # ═════════════════════════════════════════════════════════════ MM-003: - name: 小额无需招标 extract: 合同金额: 500000 招标文件编号: null expected: pass - name: 大额有招标 extract: 合同金额: 2000000 招标文件编号: "ZB2024001" expected: pass - name: 大额无招标 extract: 合同金额: 2000000 招标文件编号: null expected: fail # ═════════════════════════════════════════════════════════════ # MM-004 · 合同日期先后关系 # 签订日期是 required_from: executed,草稿阶段整条规则 skipped # ═════════════════════════════════════════════════════════════ MM-004: - name: 已执行-正常先后 phase: executed extract: 签订日期: "2024-03-15" 生效日期: "2024-04-01" 终止日期: "2025-04-01" expected: pass - name: 已执行-签订晚于生效 phase: executed extract: 签订日期: "2024-04-15" 生效日期: "2024-04-01" 终止日期: "2025-04-01" expected: fail - name: 已执行-终止早于生效 phase: executed extract: 签订日期: "2024-03-15" 生效日期: "2024-04-01" 终止日期: "2024-03-20" expected: fail # 草稿阶段:签订日期还没填,本规则应自动跳过(不是 fail) - name: 草稿-签订日期未填(规则 skipped) phase: draft extract: 签订日期: null 生效日期: null 终止日期: null expected: skipped_phase # ═════════════════════════════════════════════════════════════ # MM-005 · 质量标准明确性 # ═════════════════════════════════════════════════════════════ MM-005: - name: 有具体国标 extract: 质量标准: 产品质量应符合 GB/T 12345-2020《某某产品质量要求》国家标准 expected: pass - name: 过于简略 extract: 质量标准: 按国家标准 expected: fail - name: 长度够但无标准引用 extract: 质量标准: 产品应符合买方指定的质量要求,包括外观、功能和性能等方面 expected: fail # ═════════════════════════════════════════════════════════════ # MM-006 · 违约责任条款存在性 # ═════════════════════════════════════════════════════════════ MM-006: - name: 明确违约 extract: 违约责任: 任何一方违约应向守约方支付合同总金额 10% 的违约金,并赔偿守约方因此遭受的直接经济损失。 expected: pass - name: 无违约条款 extract: 违约责任: null expected: fail # ═════════════════════════════════════════════════════════════ # MM-SEAL-001 · 双方签章齐全且文字匹配 # 所有 seal required_from: executed,草稿阶段整条规则 skipped # ═════════════════════════════════════════════════════════════ MM-SEAL-001: # ── Executed 阶段 ── - name: 已执行-双方签章齐全且文字匹配 phase: executed extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 visual_manifest: seals: - id: 甲方签章 detection_score: 0.95 ocr_text: 上海某某科技有限公司合同专用章 color: red page: 5 - id: 乙方签章 detection_score: 0.94 ocr_text: 北京某某贸易有限公司合同专用章 color: red page: 5 expected: pass - name: 已执行-缺乙方签章 phase: executed extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 visual_manifest: seals: - id: 甲方签章 detection_score: 0.95 ocr_text: 上海某某科技有限公司合同专用章 color: red page: 5 # 乙方签章缺失 expected: fail - name: 已执行-甲方印章文字不符(冒章风险) phase: executed extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 visual_manifest: seals: - id: 甲方签章 detection_score: 0.92 ocr_text: 北京其他公司公章 # ← 文字不符 color: red - id: 乙方签章 detection_score: 0.94 ocr_text: 北京某某贸易有限公司合同专用章 color: red expected: fail # ── Draft 阶段(草稿无章,应自动跳过)── - name: 草稿-无任何印章(规则 skipped_phase) phase: draft extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 visual_manifest: seals: [] # 草稿阶段无章 expected: skipped_phase - name: 草稿-即使有章也是 skipped(本规则对 draft 不适用) phase: draft extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 visual_manifest: seals: - id: 甲方签章 detection_score: 0.95 ocr_text: 上海某某科技有限公司合同专用章 expected: skipped_phase # 即使章齐全,draft 也 skipped # ═════════════════════════════════════════════════════════════ # MM-SEAL-002 · 骑缝章完整 # ═════════════════════════════════════════════════════════════ MM-SEAL-002: - name: 骑缝章完整对齐 extract: 甲方名称: 上海某某科技有限公司 visual_manifest: cross_page_seals: - id: 骑缝章 detection_score: 0.91 complete: true # 所有相邻页都有 aligned: true # 拼合正确 ocr_text: 上海某某科技有限公司 expected: pass - name: 骑缝章部分缺失 extract: 甲方名称: 上海某某科技有限公司 visual_manifest: cross_page_seals: - id: 骑缝章 detection_score: 0.85 complete: false # 缺少部分页 aligned: true expected: fail - name: 骑缝章错位 extract: 甲方名称: 上海某某科技有限公司 visual_manifest: cross_page_seals: - id: 骑缝章 detection_score: 0.88 complete: true aligned: false # 拼合错位,可能换页 expected: fail # ═════════════════════════════════════════════════════════════ # MM-SEAL-003 · 法人签名 + 公章双重确认(仅大额触发) # ═════════════════════════════════════════════════════════════ MM-SEAL-003: - name: 小额合同无需双重确认 extract: 合同金额: 300000 # < 50 万,规则不触发 visual_manifest: seals: [] signatures: [] expected: pass - name: 大额合同公章 + 签名齐全 extract: 合同金额: 800000 甲方法定代表人: 张三 visual_manifest: seals: - id: 甲方签章 detection_score: 0.94 ocr_text: 上海某某科技有限公司合同专用章 signatures: - id: 甲方法人签名 detection_score: 0.90 ocr_text: 张三 expected: pass - name: 大额合同缺法人签名 extract: 合同金额: 800000 甲方法定代表人: 张三 visual_manifest: seals: - id: 甲方签章 detection_score: 0.94 ocr_text: 上海某某科技有限公司合同专用章 signatures: [] # 无签名 expected: fail