metadata:
  type_id: contract.purchase.general
  name: 买卖合同
  version: '1.0'
  last_updated: '2026-04-11'
  parent: contract
  inherits_from:
  - base.common
  - base.party_info
  classification_keywords:
  - 买卖
  - 购销
  - 采购
  references_laws:
  - 《民法典》第 595-647 条（买卖合同章）
  - 《民法典》第 463-594 条（合同编通则）
  description: '适用于一般商品买卖合同，覆盖民法典第 595-647 条。

    评查重点：当事人合法性、金额一致性、印章合规、交付条款、违约责任。

    '
  confidence_profile:
    allow_weight_override: false
    thresholds:
      auto_pass: 0.95
    field_confidence_defaults:
      合同金额: 0.95
      合同金额大写: 0.9
extract:
- group: 当事人（从起草就应该有）
  fields:
  - name: 甲方名称
    type: verbatim
    required_from: draft
    deep_retry: false
  - name: 乙方名称
    type: verbatim
    required_from: draft
    deep_retry: false
- group: 当事人（执行时才必需）
  fields:
  - name: 甲方法定代表人
    type: verbatim
    required_from: executed
    deep_retry: false
  - name: 甲方统一信用代码
    type: uscc
    required_from: executed
    deep_retry: false
  - name: 甲方联系电话
    type: verbatim
    required_from: draft
    deep_retry: false
  - name: 乙方法定代表人
    type: verbatim
    required_from: executed
    deep_retry: false
  - name: 乙方统一信用代码
    type: uscc
    required_from: executed
    deep_retry: false
  - name: 乙方联系电话
    type: verbatim
    required_from: draft
    deep_retry: false
- group: 合同基本信息
  fields:
  - name: 合同编号
    type: verbatim
    required_from: draft
    deep_retry: false
  - name: 签订日期
    type: date
    required_from: executed
    deep_retry: false
  - name: 生效日期
    type: date
    required_from: draft
    deep_retry: false
  - name: 终止日期
    type: date
    required_from: draft
    deep_retry: false
- group: 标的与金额
  fields:
  - name: 标的物描述
    type: string
    required_from: draft
    deep_retry: false
  - name: 合同金额
    type: money
    required_from: draft
    deep_retry: false
  - name: 合同金额大写
    type: verbatim
    required_from: executed
    deep_retry: false
  - name: 招标文件编号
    type: verbatim
    required_from: draft
    deep_retry: false
- group: 交付
  fields:
  - name: 交货地点
    type: verbatim
    required_from: draft
    deep_retry: false
  - name: 交货时间
    type: date
    required_from: draft
    deep_retry: false
- group: 关键条款（起草就应该有）
  fields:
  - name: 质量标准
    type: string
    required_from: draft
    deep_retry: false
  - name: 付款方式
    type: string
    required_from: draft
    deep_retry: false
  - name: 违约责任
    type: string
    required_from: draft
    deep_retry: false
  - name: 争议解决
    type: string
    required_from: draft
    deep_retry: false
visual_elements:
  seals:
  - id: 甲方签章
    name: 甲方公章或合同专用章
    required: true
    required_from: executed
    allowed_types:
    - 公章
    - 合同专用章
    - 法人章
    expected_text_match:
      field: 甲方名称
  - id: 乙方签章
    name: 乙方公章或合同专用章
    required: true
    required_from: executed
    allowed_types:
    - 公章
    - 合同专用章
    - 法人章
    expected_text_match:
      field: 乙方名称
  signatures:
  - id: 甲方法人签名
    name: 甲方法定代表人签名
    required: false
    required_from: executed
    expected_text_match:
      field: 甲方法定代表人
  - id: 乙方法人签名
    name: 乙方法定代表人签名
    required: false
    required_from: executed
    expected_text_match:
      field: 乙方法定代表人
  cross_page_seals:
  - id: 骑缝章
    name: 合同骑缝章
    required: true
    required_from: executed
    expected_text_match:
      field: 甲方名称
    prompt: '合同每相邻两页之间跨页盖章。

      每页只能看到印章的一半，两页拼合后构成完整圆章。

      通常在页面右侧边缘或底部，垂直跨越装订线。

      不要和页脚日期章或水印混淆。

      '
rules:
- group: 合同主体
  rules:
  - rule_id: MM-001
    name: 当事人信息完整性
    risk: high
    score: 10
    stages:
    - id: '1'
      check: required
      fields:
      - 甲方名称
      - 乙方名称
      - 甲方法定代表人
      - 乙方法定代表人
      logic: and
    - id: '2'
      check: format
      field: 甲方统一信用代码
      format: uscc
    - id: '3'
      check: format
      field: 乙方统一信用代码
      format: uscc
    logic: 1 AND 2 AND 3
    messages:
      pass: 当事人信息完整，统一信用代码校验通过
      fail: 当事人信息缺失或统一信用代码校验失败
    references_laws:
    - 《民法典》第 471 条
    remediation:
      by_phase:
        draft:
          suggestions:
          - 草稿阶段当事人信息暂缺是正常的，签署前须补齐
          - 建议在定稿前确认：甲乙方名称、法定代表人、统一信用代码三项齐全
          actions:
          - type: fill_field
            label: 补充甲方法定代表人
            field: 甲方法定代表人
            prompt: 请输入甲方法定代表人姓名
          - type: fill_field
            label: 补充乙方法定代表人
            field: 乙方法定代表人
            prompt: 请输入乙方法定代表人姓名
        executed:
          suggestions:
          - 已执行合同出现当事人信息缺失是严重瑕疵
          - 可能原因：起草遗漏 / OCR 错位 / USCC 校验位错
          - 须补充说明或要求当事人出具澄清
          actions:
          - type: recheck_field
            label: 核对甲方统一信用代码
            field: 甲方统一信用代码
            hint: 18 位，末位为校验位，请核对营业执照
          - type: recheck_field
            label: 核对乙方统一信用代码
            field: 乙方统一信用代码
          - type: link_template
            label: 下载主体信息补充说明函模板
            template_id: party_info_addendum
          - type: escalate
            label: 紧急：执行合同主体信息缺失，上报合规组
            role: 合规专员
            reason: 已执行合同出现当事人瑕疵，可能影响效力
    type: deterministic
- group: 金额与支付
  rules:
  - rule_id: MM-002
    name: 合同金额大小写一致性
    risk: high
    score: 10
    stages:
    - id: '1'
      check: required
      fields:
      - 合同金额
      - 合同金额大写
      logic: and
    - id: '2'
      check: amount_match
      number: 合同金额
      chinese: 合同金额大写
    logic: 1 AND 2
    messages:
      pass: 金额大小写一致
      fail: 金额大小写不一致，合同可能被篡改或抽取错误
    references_laws:
    - 《民法典》第 470 条
    remediation:
      on_rule_fail:
        suggestions:
        - 小写金额 {{合同金额}} 与大写 {{合同金额大写}} 不一致
        - 如果是 OCR 抽取错误，请人工核对原文
        - 如果合同原件本身不一致，以大写为准（法律惯例）并出具说明
        actions:
        - type: recheck_field
          label: 核对小写金额
          field: 合同金额
        - type: recheck_field
          label: 核对大写金额
          field: 合同金额大写
        - type: link_template
          label: 下载金额不一致说明函模板
          template_id: amount_inconsistency_explanation
        - type: escalate
          label: 涉嫌合同篡改，上报合规组
          role: 合规专员
          reason: 金额大小写不一致，可能存在恶意篡改风险
      on_confidence_low:
        suggestions:
        - 金额字段抽取置信度低，请人工确认原文
        actions:
        - type: recheck_field
          label: 重新核对合同金额
          field: 合同金额
          hint: 注意千分位符号、小数点、货币单位
    type: deterministic
  - rule_id: MM-003
    name: 大额合同须招投标
    risk: medium
    score: 5
    stages:
    - id: '1'
      check: required
      field: 合同金额
    - id: '2'
      check: compare
      left: 合同金额
      op: '>'
      right: 1000000
    - id: '3'
      check: required
      required_if: '2'
      field: 招标文件编号
    logic: 1 AND (NOT 2 OR 3)
    messages:
      pass: 小额合同或大额已附招标文件
      fail: 合同金额超过 100 万元，但未提供招标文件编号
    references_laws:
    - 《政府采购法》第 27 条
    - 《招标投标法》第 3 条
    remediation:
      suggestions:
      - 本合同金额 {{合同金额}} 元，超过政府采购 100 万招投标阈值
      - 按《政府采购法》第 27 条，须采取公开招标或提供豁免说明
      - 下面三种操作任选其一即可通过本条规则
      actions:
      - type: fill_field
        label: 补充招标文件编号
        field: 招标文件编号
        prompt: 请输入招标文件编号（常见格式 ZB2024XXX）
      - type: upload_file
        label: 上传招标豁免说明函
        file_type: 招标豁免说明
        accept:
        - pdf
        - docx
      - type: link_template
        label: 下载招标豁免说明函模板
        template_id: bidding_exemption_letter
      - type: escalate
        label: 金额过大需采购总监审批
        role: 采购总监
        trigger_if: '{{合同金额}} > 5000000'
        reason: 合同金额超过 500 万，需采购总监额外审批
    type: deterministic
- group: 合同期限
  rules:
  - rule_id: MM-004
    name: 签订/生效/终止日期先后关系
    risk: high
    score: 8
    stages:
    - id: '1'
      check: required
      fields:
      - 签订日期
      - 生效日期
      logic: and
    - id: '2'
      type: date.sequence
      fields:
      - 签订日期
      - 生效日期
      - 终止日期
      order: le
    logic: 1 AND 2
    messages:
      pass: 合同日期先后关系合规
      fail: 签订日/生效日/终止日顺序异常
    remediation:
      suggestions:
      - 签订日期 {{签订日期}} / 生效日期 {{生效日期}} / 终止日期 {{终止日期}}
      - 正常顺序应为：签订 ≤ 生效 ≤ 终止
      - 可能原因：日期抽取错位 / OCR 识别错误 / 合同原件笔误
      actions:
      - type: recheck_field
        label: 核对签订日期
        field: 签订日期
      - type: recheck_field
        label: 核对生效日期
        field: 生效日期
      - type: recheck_field
        label: 核对终止日期
        field: 终止日期
    type: deterministic
- group: 标的物
  rules:
  - rule_id: MM-005
    name: 质量标准明确性
    risk: medium
    score: 5
    stages:
    - id: '1'
      check: required
      field: 质量标准
    - id: '2'
      type: string.min_length
      field: 质量标准
      min: 20
    - id: '3'
      check: contains
      field: 质量标准
      any_of:
      - GB/T
      - ISO
      - 国标
      - 行业标准
      - 企业标准
    logic: 1 AND 2 AND 3
    messages:
      pass: 质量标准明确（引用了具体标准）
      fail: 质量标准过于简略或未引用具体标准
    references_laws:
    - 《民法典》第 615 条
    type: deterministic
- group: 违约与争议
  rules:
  - rule_id: MM-006
    name: 违约责任条款存在性
    risk: medium
    score: 5
    stages:
    - id: '1'
      check: required
      field: 违约责任
    - id: '2'
      type: string.min_length
      field: 违约责任
      min: 30
    logic: 1 AND 2
    messages:
      pass: 违约责任条款明确
      fail: 违约责任条款缺失或过于简略
    type: deterministic
- group: 印章合规
  rules:
  - rule_id: MM-SEAL-001
    name: 合同双方签章齐全
    risk: high
    score: 15
    stages:
    - id: '1'
      type: seal.present
      seal_id: 甲方签章
    - id: '2'
      type: seal.present
      seal_id: 乙方签章
    - id: '3'
      type: seal.text_match
      seal_id: 甲方签章
    - id: '4'
      type: seal.text_match
      seal_id: 乙方签章
    logic: 1 AND 2 AND 3 AND 4
    messages:
      pass: 合同双方签章齐全且文字匹配当事人名称
      fail: 缺少签章 或 印章文字与当事人名称不一致（可能冒用）
    references_laws:
    - 《民法典》第 490 条（合同形式）
    remediation:
      by_phase:
        draft:
          suggestions:
          - 草稿阶段无需盖章。请在定稿签署时加盖甲乙方公章
          - 合同超过一页时建议加盖骑缝章
          actions:
          - type: noop
        executed:
          suggestions:
          - 已执行合同缺少签章或印章文字不符，严重影响合同效力
          - 可能原因：(1) 漏扫签章页 (2) 印章是冒章 (3) 合同原件确实未盖章
          - 建议立即补救
          actions:
          - type: upload_file
            label: 紧急：补扫签章页
            file_type: 签章页
            accept:
            - pdf
            - jpg
            - png
          - type: recheck_field
            label: 核对甲方印章文字
            field: visual.甲方签章
            hint: 核对印章上的单位名称与甲方名称是否一致
          - type: recheck_field
            label: 核对乙方印章文字
            field: visual.乙方签章
          - type: link_template
            label: 下载印章缺失情况说明模板
            template_id: seal_missing_statement
          - type: escalate
            label: 疑似冒章，上报合规组
            role: 合规专员
            reason: 已执行合同印章文字与当事人名称不一致
    type: deterministic
  - rule_id: MM-SEAL-002
    name: 合同骑缝章完整
    risk: high
    score: 10
    stages:
    - id: '1'
      type: cross_page_seal.complete
      seal_id: 骑缝章
    logic: '1'
    messages:
      pass: 骑缝章完整
      fail: 骑缝章缺失，合同可能被替换页
    remediation:
      suggestions:
      - 骑缝章用于防止合同页面被替换。缺失或错位是严重的合规风险
      - 请确认：(1) 是否原件有骑缝章？(2) 扫描时是否漏扫或错位？
      - 如原件确实无骑缝章，需双方补盖或出具情况说明
      actions:
      - type: upload_file
        label: 补扫完整骑缝章
        file_type: 骑缝章扫描件
        accept:
        - pdf
      - type: link_template
        label: 下载印章缺失情况说明模板
        template_id: seal_missing_statement
      - type: escalate
        label: 疑似合同替换页，上报合规组
        role: 合规专员
    type: deterministic
  - rule_id: MM-SEAL-003
    name: 高额合同须法人签名与公章并存
    risk: medium
    score: 5
    stages:
    - id: '1'
      check: compare
      left: 合同金额
      op: '>'
      right: 500000
    - id: '2'
      type: seal.present
      required_if: '1'
      seal_id: 甲方签章
    - id: '3'
      type: signature.present
      required_if: '1'
      signature_id: 甲方法人签名
    logic: NOT 1 OR (2 AND 3)
    messages:
      pass: 小额合同或已有公章+法人签名双重确认
      fail: 大额合同缺少公章或法人签名
    remediation:
      suggestions:
      - 超过 50 万元的合同建议法人亲自签名 + 公章双重确认
      - 缺少任一都属于瑕疵，建议补齐
      actions:
      - type: upload_file
        label: 补传签章页（含法人签名）
        file_type: 签章页
        accept:
        - pdf
        - jpg
        - png
      - type: document_override
        label: 记录豁免（金额虽大但有特殊约定）
        require_reason: true
        require_role: 法务经理
    type: deterministic
- group: 我方权益保护
  rules:
  - rule_id: MM-OUR-001
    name: 我方缔约地位及不利条款审查
    risk: high
    score: 10
    stages:
    - id: '1'
      check: ai
      field: ctx
      prompt: |-
        请基于合同全文判断我方（中国烟草相关公司/专卖局）在本合同中的缔约地位，并审查是否存在强势条款或不利于我方的条款。

        合同全文字段来源：ctx。该字段由后端负责注入和匹配。
        合同全文：{{ctx}}

        评查步骤：
        1. 识别合同中是否存在中国烟草相关主体，包括但不限于“中国烟草”“烟草公司”“烟草专卖局”“中烟”“卷烟厂”“烟草工业”“烟草商业”等名称或其分支机构。
        2. 判断该主体是我方，并识别我方在合同中的地位：甲方、乙方、发包人、承包人、委托方、受托方、出租方、承租方、出借人、借款人、赠与方、受赠方或其他。
        3. 从合同全文审查是否存在明显偏向对方、加重我方责任、限制我方权利、降低对方责任、增加我方付款/赔偿/解除限制/验收风险/知识产权风险/保密风险/争议解决不利风险的条款。
        4. 若无法识别我方主体或我方地位，应返回无法判断，并说明原因，不得臆测。

        强势或不利条款示例：
        - 对方可单方变更、解除、延期履行，而我方缺少对应权利。
        - 我方承担高额违约金、无限责任、连带责任或无上限赔偿，对方责任明显较轻。
        - 付款条件、验收、交付、质量、质保、知识产权、保密、争议解决、管辖地等安排明显不利于我方。
        - 排除或限制我方依法解除、抗辩、追偿、索赔、验收异议或审计监督权利。

        请以JSON格式回答：{"passed": true/false, "our_party": "我方主体名称或无法判断", "our_position": "甲方/乙方/发包人/承包人/委托方/受托方/出租方/承租方/出借人/借款人/赠与方/受赠方/其他/无法判断", "has_strong_terms": true/false, "has_unfavorable_terms": true/false, "risk_terms": ["风险条款摘要"], "reason": "判断理由", "suggestion": "修改建议"}
      schema:
        type: object
        required:
        - passed
        - our_party
        - our_position
        - has_strong_terms
        - has_unfavorable_terms
        - reason
        properties:
          passed:
            type: boolean
          our_party:
            type: string
          our_position:
            type: string
          has_strong_terms:
            type: boolean
          has_unfavorable_terms:
            type: boolean
          risk_terms:
            type: array
          reason:
            type: string
          suggestion:
            type: string
      pass_when: passed == True
    logic: '1'
    messages:
      pass: 未发现明显强势条款或不利于我方的条款
      fail: 存在强势条款、不利于我方的条款或无法判断我方缔约地位
    type: ai_rule
