# ═════════════════════════════════════════════════════════════════
# 建设工程合同 · 回归测试用例
# ═════════════════════════════════════════════════════════════════
# 配套文件：contract_construction.yaml

target: contract_construction.yaml

fixtures:

  # ═════════════════════════════════════════════════════════════
  # GC-000 · 基础信息完整性
  # ═════════════════════════════════════════════════════════════
  GC-000:
    - name: 完整合规
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园小区 A 区建设工程
        合同金额: 50000000
      expected: pass

    - name: 缺工程名称
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: null
        合同金额: 50000000
      expected: fail

  # ═════════════════════════════════════════════════════════════
  # GC-001 · 承包人资质合法性
  # ═════════════════════════════════════════════════════════════
  GC-001:
    - name: 资质完整
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园小区 A 区建设工程
        合同金额: 50000000
        承包人统一信用代码: "91310000MA1K3H5K8L"
        承包人资质等级: 一级
        承包人资质证书编号: 建总包字 001234
      expected: pass

    - name: USCC 校验失败
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园小区 A 区建设工程
        合同金额: 50000000
        承包人统一信用代码: "91310000MA1K3H5K80"
        承包人资质等级: 一级
        承包人资质证书编号: 建总包字 001234
      expected: fail

    - name: GC-000 失败时本规则跳过
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: null                         # GC-000 会失败
        工程名称: 某某花园小区 A 区建设工程
        合同金额: 50000000
        承包人统一信用代码: "91310000MA1K3H5K8L"
        承包人资质等级: 一级
        承包人资质证书编号: 建总包字 001234
      expected: skipped_dependency

  # ═════════════════════════════════════════════════════════════
  # GC-002 · 金额三处一致性（核心规则）
  # ═════════════════════════════════════════════════════════════
  GC-002:
    - name: 三处完全一致
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        投标价: 50000000
        中标价: 50000000
      expected: pass

    - name: 合同金额高于中标价（阴阳合同嫌疑）
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 55000000
        投标价: 50000000
        中标价: 50000000
      expected: fail

    - name: 中标价与投标价不一致
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        投标价: 48000000                         # ← 差了 200 万
        中标价: 50000000
      expected: fail

  # ═════════════════════════════════════════════════════════════
  # GC-003 · 质量标准明确性
  # ═════════════════════════════════════════════════════════════
  GC-003:
    - name: 有国标引用
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        质量标准: 本工程质量应符合现行国家标准 GB 50300-2013《建筑工程施工质量验收统一标准》的合格等级要求
      expected: pass

    - name: 质量标准过短
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        质量标准: 符合国标
      expected: fail

    - name: 长度够但无标准引用
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        质量标准: 本工程质量应符合发包人要求，达到完工条件，承包人应严格按照图纸和规范施工
      expected: fail

  # ═════════════════════════════════════════════════════════════
  # GC-004 · 安全文明施工条款完备性
  # ⭐ has_all_keywords 必须全部命中
  # ═════════════════════════════════════════════════════════════
  GC-004:
    - name: 安全条款完备
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        安全文明施工要求: |
          承包人应严格执行安全生产规定：
          (1) 严格落实三宝四口五临边防护措施；
          (2) 所有施工人员必须佩戴安全帽；
          (3) 严格控制扬尘，采取洒水降尘等措施；
          (4) 严格控制噪音，夜间禁止施工。
      expected: pass

    - name: 缺"三宝四口五临边"
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        安全文明施工要求: |
          承包人应执行安全生产规定：佩戴安全帽，控制扬尘，降低噪音。
      expected: fail                             # 缺"三宝四口五临边"关键词

  # ═════════════════════════════════════════════════════════════
  # GC-005 · 工期合理性
  # ═════════════════════════════════════════════════════════════
  GC-005:
    - name: 正常工期
      phase: executed
      extract:
        开工日期: "2024-06-01"
        竣工日期: "2025-12-31"
      # derived.工期天数 = 578
      expected: pass

    - name: 竣工早于开工
      phase: executed
      extract:
        开工日期: "2024-12-01"
        竣工日期: "2024-06-01"                   # ← 颠倒
      expected: fail

  # ═════════════════════════════════════════════════════════════
  # GC-006 · 质保金比例
  # ═════════════════════════════════════════════════════════════
  GC-006:
    - name: 比例 2%
      phase: executed
      extract:
        质保金比例: 0.02
      expected: pass

    - name: 比例 5%（超限）
      phase: executed
      extract:
        质保金比例: 0.05
      expected: fail

    - name: 比例 3%（恰好到上限）
      phase: executed
      extract:
        质保金比例: 0.03
      expected: fail                             # money.lt 严格小于

  # ═════════════════════════════════════════════════════════════
  # GC-SEAL-001 · 双方签章齐全
  # ═════════════════════════════════════════════════════════════
  GC-SEAL-001:
    - name: 双方签章且文字匹配
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
      visual_manifest:
        seals:
          - id: 发包人公章
            detection_score: 0.95
            ocr_text: 某某开发建设有限公司
          - id: 承包人公章
            detection_score: 0.94
            ocr_text: 某某建工集团有限公司合同专用章
      expected: pass

    - name: 承包人印章文字不符
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
      visual_manifest:
        seals:
          - id: 发包人公章
            detection_score: 0.95
            ocr_text: 某某开发建设有限公司
          - id: 承包人公章
            detection_score: 0.94
            ocr_text: 其他不相关单位公章           # ← 不符
      expected: fail

    - name: 草稿阶段无印章（skipped）
      phase: draft
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
      visual_manifest:
        seals: []
      expected: skipped_phase

  # ═════════════════════════════════════════════════════════════
  # GC-GROUP-QUALITY · 质量综合规则组
  # ═════════════════════════════════════════════════════════════
  GC-GROUP-QUALITY:
    - name: 质量与安全全部合规
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        质量标准: 本工程质量应符合现行国家标准 GB 50300-2013 合格要求
        安全文明施工要求: |
          严格落实三宝四口五临边，佩戴安全帽，控制扬尘和噪音。
      expected: pass

    - name: 质量不合格导致组失败
      phase: executed
      extract:
        发包人名称: 某某开发建设有限公司
        承包人名称: 某某建工集团有限公司
        工程名称: 某某花园
        合同金额: 50000000
        质量标准: 符合国标                        # 过于简略
        安全文明施工要求: 严格落实三宝四口五临边，佩戴安全帽，控制扬尘和噪音。
      expected: fail
