535d97a70c
17-table PostgreSQL schema with full Chinese column comments, FastAPI project structure (admin/common/modules), DSL rule files, and schema migration scripts.
342 lines
14 KiB
YAML
342 lines
14 KiB
YAML
# ═════════════════════════════════════════════════════════════════
|
||
# 买卖合同 · 回归测试用例
|
||
# ═════════════════════════════════════════════════════════════════
|
||
# 配套文件: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
|