target: rules.yaml fixtures: MM-001: - name: 已执行-完整合规 phase: executed extract: 甲方名称: 上海某某科技有限公司 甲方法定代表人: 张三 甲方统一信用代码: 91310000MA1K3H5K8L 乙方名称: 北京某某贸易有限公司 乙方法定代表人: 李四 乙方统一信用代码: 91110000MA01234X5Y expected: pass - name: 已执行-缺少法定代表人 phase: executed extract: 甲方名称: 上海某某科技有限公司 甲方法定代表人: null 乙方名称: 北京某某贸易有限公司 乙方法定代表人: 李四 expected: fail - name: 已执行-USCC 校验位错误 phase: executed extract: 甲方名称: 上海某某科技有限公司 甲方法定代表人: 张三 甲方统一信用代码: 91310000MA1K3H5K80 乙方名称: 北京某某贸易有限公司 乙方法定代表人: 李四 乙方统一信用代码: 91110000MA01234X5Y expected: fail - name: 草稿-只有甲乙方名称(执行阶段 fail,草稿阶段 pass) phase: draft extract: 甲方名称: 上海某某科技有限公司 乙方名称: 北京某某贸易有限公司 expected: pass - name: 草稿-连甲乙方名称都没有(仍然 fail) phase: draft extract: 甲方名称: null 乙方名称: 北京某某贸易有限公司 expected: fail MM-002: - name: 大小写一致 extract: 合同金额: 1200000.0 合同金额大写: 壹佰贰拾万元整 expected: pass - name: 不一致(金额错位) extract: 合同金额: 1200000.0 合同金额大写: 壹佰贰拾贰万元整 expected: fail - name: 缺少大写金额 extract: 合同金额: 1200000.0 合同金额大写: null expected: fail MM-003: - name: 小额无需招标 extract: 合同金额: 500000 招标文件编号: null expected: pass - name: 大额有招标 extract: 合同金额: 2000000 招标文件编号: ZB2024001 expected: pass - name: 大额无招标 extract: 合同金额: 2000000 招标文件编号: null expected: fail 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 - name: 草稿-签订日期未填(规则 skipped) phase: draft extract: 签订日期: null 生效日期: null 终止日期: null expected: skipped_phase MM-005: - name: 有具体国标 extract: 质量标准: 产品质量应符合 GB/T 12345-2020《某某产品质量要求》国家标准 expected: pass - name: 过于简略 extract: 质量标准: 按国家标准 expected: fail - name: 长度够但无标准引用 extract: 质量标准: 产品应符合买方指定的质量要求,包括外观、功能和性能等方面 expected: fail MM-006: - name: 明确违约 extract: 违约责任: 任何一方违约应向守约方支付合同总金额 10% 的违约金,并赔偿守约方因此遭受的直接经济损失。 expected: pass - name: 无违约条款 extract: 违约责任: null expected: fail MM-SEAL-001: - 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 - 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 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: - name: 小额合同无需双重确认 extract: 合同金额: 300000 visual_manifest: seals: [] signatures: [] expected: pass - name: 大额合同公章 + 签名齐全 extract: 合同金额: 800000 甲方法定代表人: 张三 visual_manifest: seals: - id: 甲方签章 detection_score: 0.94 ocr_text: 上海某某科技有限公司合同专用章 signatures: - id: 甲方法人签名 detection_score: 0.9 ocr_text: 张三 expected: pass - name: 大额合同缺法人签名 extract: 合同金额: 800000 甲方法定代表人: 张三 visual_manifest: seals: - id: 甲方签章 detection_score: 0.94 ocr_text: 上海某某科技有限公司合同专用章 signatures: [] expected: fail