metadata:
  type_id: 行政卷宗.行政处罚
  name: 烟草专卖行政处罚卷宗
  version: '1.0'
  last_updated: '2026-04-18'
  parent: 行政卷宗
  inherits_from:
  - base.common
  - base.administrative_case
  classification_keywords:
  - 行政处罚
  - 烟草专卖
  - 处罚决定书
  - 立案报告
  - 询问笔录
  description: '烟草专卖行政处罚卷宗审核。

    覆盖：立案、现场检查、证据先行登记保存、取证核价、询问笔录、权利告知、

    调查终结、处理审批、事先告知、处罚决定、送达、执行、结案全流程。

    '
  # 开 medium 风险规则的 LLM 救援（跨子文档对齐失败交给 rescue 模块
  # 的 L1 判定语义等价，如"投诉举报" vs "举报"）。
  rescue_profile:
    rescue_risk: [medium]

# TOC 页定位（dossier_segmenter 使用）
#   keywords:      本类卷宗的目录标题（OCR 空白自动规整，"卷 宗 目 录" 也命中）
#   anti_keywords: 卷内"内部目录"，避免被误判为卷宗级 TOC
# 两个列表均为"扩展默认值"，下面显式列出本类卷宗实际会遇到的项 ——
# 默认的 卷宗目录 / 卷内目录 / Contents 等仍自动生效。
toc:
  keywords:
    # 实际 OCR 观察到的目录标题（均为 defaults 一部分，显式列出作自注释）
    - 卷宗目录
    - 卷内目录
  anti_keywords:
    # 卷内子文档自带的"目录"标题，不是卷宗级 TOC —— 必须排除
    - 证据材料目录   # 重大执法行为法制审核送审表 里的证据清单
    - 物品目录        # 抽样取证物品清单等

# 跨子文档派生字段 —— 给规则里的 `activate_if` / 对级 `when` 用
derived_fields:
  # 当事人类型：决定一条规则里"个人字段 pair"还是"单位字段 pair"该不该对齐
  #
  #   按 USCC 第 2 位判定（GB 32100-2015 法人和其他组织统一社会信用代码）：
  #     1 = 机关   → 单位
  #     2 = 个体工商户 → 个人（法律归类：自然人工商业）
  #     3 = 农民专业合作社 → 单位
  #     4 = 事业单位 → 单位
  #     5 = 企业   → 单位
  #     8 = 社团   → 单位
  #     9 = 其他组织 → 单位
  #
  #   个体户虽然有 USCC 和营业执照，但当事人栏填个人信息（姓名/身份证），
  #   所以单位 pair 应跳过；执照字段作为辅助证据另行处理。
  #
  #   注：不看"字号"——当前 OCR 常把案件文号误抽到 字号 字段；
  #   执照名称/执照统一社会信用代码 在个体户里也存在，因此不作为单位标志。
  #   表达式必须单行（evaluate 不支持多行条件）。
  - name: 当事人类型
    type: string
    # 嵌套 IfExp 走短路（BoolOp 求值所有分支，`not None` 会走 null-propagation
    # 返回 None 而被 IfExp 当 False 走到 else，导致对 None 调 .startswith 崩溃）
    # - USCC 空/缺失              → 个人
    # - USCC 以 '92' 开头         → 个人（个体工商户）
    # - 其它 (91/93/94/95/… 开头) → 单位
    compute: "'个人' if 处罚决定书.统一社会信用代码 == None else ('个人' if 处罚决定书.统一社会信用代码.startswith('92') else '单位')"
    desc: 案件当事人类型（个人 / 单位）—— 按 USCC 第 2 位判，个体户 (92xxx) 判为个人

  # 证据复制（提取）单可能同时存在多张居民身份证（当事人、举报人、
  # 未成年人、相关人等）。抽取侧把整组居民身份证记录按 multi_entity 抽
  # 下来，由这里挑出归属当事人的那一份；规则再用
  # `证据复制（提取）单当事人.身份证*` 对齐处罚决定书/审批表/终结报告。
  # 只有一张身份证时引擎自动短路，不计 LLM 调用。
  - name: 证据复制（提取）单当事人
    type: object
    compute_by: llm
    prompt: |-
      以下是证据复制（提取）单中全部居民身份证记录：

      {居民身份证}

      当事人姓名：{处罚决定书.当事人}
      当事人身份证号：{处罚决定书.身份证号码}

      请挑出归属「当事人本人」（被处罚对象）的那一份身份证，按原字段
      结构返回一个 JSON 对象（严格包含 身份证姓名/身份证性别/身份证民族/
      身份证住址/身份证号/身份证背面，空值写 null）。

      优先以身份证号匹配当事人身份证号；若号码缺失，用姓名匹配。匹配不到
      或无法判断归属时返回 JSON null。除该 JSON 外不要输出任何解释文字。
    depends_on:
    - 居民身份证
    - 处罚决定书.当事人
    - 处罚决定书.身份证号码

  # 询问笔录可能包含多份笔录记录（同一卷宗针对多人询问）。抽取侧把所
  # 有被询问人按 multi_entity 抽下来，由这里挑当事人那份；规则再用
  # `询问笔录当事人.被询问人*` 做一致性校验。只有一份被询问人记录时
  # 引擎自动短路，不计 LLM 调用。
  - name: 询问笔录当事人
    type: object
    compute_by: llm
    prompt: |-
      以下是询问笔录中全部「被询问人」记录：

      {被询问人}

      当事人姓名：{处罚决定书.当事人}
      当事人身份证号（若有）：{处罚决定书.身份证号码}

      请挑出归属「当事人本人」（被处罚对象）的那一份笔录记录，按原字段
      结构返回一个 JSON 对象（严格包含 被询问人姓名/被询问人性别/被询问人民族/
      被询问人证件/被询问人电话/被询问人住址/被询问人经营地址，空值写 null）。

      优先以证件号匹配当事人身份证号；若号码缺失，用姓名匹配。匹配不到
      或无法判断归属时返回 JSON null。除该 JSON 外不要输出任何解释文字。
    depends_on:
    - 被询问人
    - 处罚决定书.当事人
    - 处罚决定书.身份证号码

sub_documents:
- id: 先行登记保存证据处理通知书
  name: 先行登记保存证据处理通知书
  required: false
  classifier:
    title_patterns:
    - 先行登记保存证据处理通知书
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 处理方式
      type: verbatim
      vlm_extract_mode: always
      desc: 证据做出如下处理→选中的选项，要看打勾的选项
- id: 卷内备考表
  name: 卷内备考表
  required: true
  classifier:
    title_patterns:
    - 卷内备考表
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 立卷时间
      type: verbatim
      desc: 立卷时间
- id: 卷宗封面
  name: 卷宗封面
  required: false
  classifier:
    title_patterns:
    - ^##?\s*卷\s*宗\s*$
    keywords:
    - 此卷共计
    - 归档日期
    - 保存期限
    min_score: 1.0
  extract:
  - group: 基本信息
    fields:
    - name: 处理结果
      type: string
      desc: 处理结果
- id: 处罚决定书
  name: 处罚决定书
  required: true
  classifier:
    title_patterns:
    - 处罚决定书
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 字号
      type: verbatim
      desc: 字号
    - name: 当事人
      type: verbatim
      desc: 当事人
    - name: 性别
      type: enum
      allowed:
      - 男
      - 女
      desc: 性别
    - name: 民族
      type: verbatim
      desc: 民族
    - name: 烟草专卖许可证号
      type: verbatim
      desc: 烟草专卖许可证号
    - name: 经营地址
      type: string
      desc: 经营地址
    - name: 统一社会信用代码
      type: uscc
      desc: 统一社会信用代码
    - name: 落款日期
      type: date
      desc: 落款日期
    - name: 身份证住址
      type: string
      desc: 身份证住址
    - name: 身份证号码
      type: chinese-id
      desc: 身份证号码
  - group: 罚款信息
    fields:
    - name: 罚款项目
      type: string
      desc: 正文→罚款项目
    - name: 罚款基数
      type: money
      desc: 正文→罚款项目金额基数
    - name: 罚款比例
      type: string
      desc: 正文→罚款百分比 保留原格式如"50%"
    - name: 罚款总额
      type: money
      desc: 正文→罚款总金额
    - name: 罚款说明
      type: string
      desc: 正文→罚款说明
    - name: 证据列举
      type: string
      desc: 正文→证据列举
  - group: 权利告知
    fields:
    - name: 救济途径
      type: string
      desc: 正文→救济途径
- id: 抽样取证物品清单
  name: 抽样取证物品清单
  required: false
  classifier:
    title_patterns:
    - 抽样取证物品清单
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 品种规格
      type: string
      desc: 表格内容→品种规格、样品基数
    - name: 表格有内容
      type: enum
      allowed:
      - 有
      - 无
      desc: 表格是否有内容 输出 有/无
    - name: 当事人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 当事人签名栏 输出 有/无
- id: 案件处理审批表
  name: 案件处理审批表
  required: true
  classifier:
    title_patterns:
    - 案件处理审批表
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 立案编号
      type: verbatim
      desc: 立案编号
    - name: 立案日期
      type: date
      desc: 立案日期
    - name: 案由
      type: string
      desc: 案由
    - name: 案件来源
      type: string
      desc: 案件来源
  - group: 当事人-单位
    fields:
    - name: 单位名称
      type: string
      desc: 当事人→单位→名称
    - name: 单位法代
      type: verbatim
      desc: 当事人→单位→法定代表人（负责人）
    - name: 单位电话
      type: verbatim
      desc: 当事人→单位→联系电话
    - name: 单位地址
      type: string
      desc: 当事人→单位→地址
  - group: 当事人-个人
    fields:
    - name: 个人姓名
      type: verbatim
      desc: 当事人→个人（个体工商户）→姓名
    - name: 个人性别
      type: verbatim
      desc: 当事人→个人→性别
    - name: 个人年龄
      type: verbatim
      desc: 当事人→个人→年龄
    - name: 个人民族
      type: verbatim
      desc: 当事人→个人→民族
    - name: 个人证件
      type: verbatim
      desc: 当事人→个人→证件类型及号码
    - name: 个人电话
      type: verbatim
      desc: 当事人→个人→联系电话
    - name: 个人住址
      type: string
      desc: 当事人→个人→住址
  - group: 审批意见
    fields:
    - name: 承办人意见
      type: string
      desc: 承办人意见→内容
    - name: 承办人日期
      type: date
      desc: 承办人意见→日期
    - name: 承办人签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人意见→签名1 输出 有/无
    - name: 承办人签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人意见→签名2 输出 有/无
    - name: 承办部门意见
      type: string
      desc: 承办部门意见→内容
    - name: 承办部门日期
      type: date
      desc: 承办部门意见→日期
    - name: 承办部门签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办部门意见→签名 输出 有/无
    - name: 法制部门意见
      type: string
      desc: 法制部门意见→内容
    - name: 法制部门日期
      type: date
      desc: 法制部门意见→日期
    - name: 法制部门审核人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 法制部门意见→审核人签名 输出 有/无
    - name: 法制部门负责人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 法制部门意见→负责人签名 输出 有/无
    - name: 负责人意见
      type: string
      desc: 负责人意见→内容
    - name: 负责人日期
      type: date
      desc: 负责人意见→日期
    - name: 负责人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 负责人意见→签名 输出 有/无
- id: 案件调查终结报告
  name: 案件调查终结报告
  required: true
  classifier:
    title_patterns:
    - 案件调查终结报告
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 立案日期
      type: date
      desc: 立案日期
    - name: 案由
      type: string
      desc: 案由
    - name: 案件来源
      type: string
      desc: 案件来源
  - group: 当事人-单位
    fields:
    - name: 单位名称
      type: string
      desc: 当事人→单位→名称
    - name: 单位法代
      type: verbatim
      desc: 当事人→单位→法定代表人（负责人）
    - name: 单位电话
      type: verbatim
      desc: 当事人→单位→联系电话
    - name: 单位地址
      type: string
      desc: 当事人→单位→地址
  - group: 当事人-个人
    fields:
    - name: 个人姓名
      type: verbatim
      desc: 当事人→个人（个体工商户）→姓名
    - name: 个人性别
      type: enum
      allowed:
      - 男
      - 女
      desc: 当事人→个人→性别
    - name: 个人年龄
      type: verbatim
      desc: 当事人→个人→年龄
    - name: 个人民族
      type: verbatim
      desc: 当事人→个人→民族
    - name: 个人证件
      type: verbatim
      desc: 当事人→个人→证件类型及号码
    - name: 个人电话
      type: verbatim
      desc: 当事人→个人→联系电话
    - name: 个人住址
      type: string
      desc: 当事人→个人→住址
  - group: 处理意见
    fields:
    - name: 处理意见日期
      type: date
      desc: 处理意见→日期
    - name: 处理意见承办人签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 处理意见→承办人签名1 输出 有/无
    - name: 处理意见承办人签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 处理意见→承办人签名2 输出 有/无
- id: 涉案物品核价表
  name: 涉案物品核价表
  required: false
  classifier:
    title_patterns:
    - 涉案物品核价表
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 核价组印章
      type: enum
      allowed:
      - 有
      - 无
      desc: 涉案卷烟价格管理小组印章 输出 有/无
    - name: 核价明细
      type: string
      desc: 表格内容→品种规格、数量（单位：条）、单价（元）、合计（元）、备注
    - name: 表格全文
      type: string
      desc: 核价表完整内容
- id: 涉案物品返还清单
  name: 涉案物品返还清单
  required: false
  classifier:
    title_patterns:
    - 涉案物品返还清单
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 日期
      type: date
      desc: 日期
    - name: 补偿信息
      type: verbatim
      desc: 补偿信息
    - name: 返还明细
      type: string
      desc: 表格内容→品种规格、数量（单位：条）、单价（元）、合计（元）、备注
    - name: 返还确认
      type: verbatim
      desc: 返还确认
    - name: 接收人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 接收人→签名 输出 有/无
    - name: 接收单位印章
      type: enum
      allowed:
      - 有
      - 无
      desc: 接收单位→印章 输出 有/无
- id: 现场笔录
  name: 现场笔录
  required: true
  classifier:
    title_patterns:
    - 现场笔录
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 检查时间
      type: verbatim
      desc: 检查时间
    - name: 检查地点
      type: verbatim
      desc: 检查地点
  - group: 被检查人
    fields:
    - name: 单位名称
      type: string
      desc: 被检查人→单位→名称
    - name: 单位法代
      type: verbatim
      desc: 法定代表人（负责人）
    - name: 单位许可证号
      type: verbatim
      desc: 烟草专卖许可证号码
    - name: 个人姓名
      type: verbatim
      desc: 被检查人→个人→姓名
    - name: 个人性别
      type: enum
      allowed:
      - 男
      - 女
      desc: 被检查人→个人→性别
    - name: 个人证件
      type: verbatim
      desc: 被检查人→个人→证件类型及号码
    - name: 地址
      type: string
      desc: 被检查人→地址
    - name: 电话
      type: verbatim
      desc: 被检查人→联系电话
    - name: 现场负责人
      type: verbatim
      desc: 现场负责人→姓名、性别、证件类型及号码、与被检查人关系
  - group: 签名意见
    fields:
    - name: 意见
      type: verbatim
      desc: 被检查人或现场负责人→意见
    - name: 意见日期
      type: date
      desc: 被检查人或现场负责人（签名）→日期
    - name: 意见签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 被检查人或现场负责人（签名）输出 有/无
- id: 立案报告表
  name: 立案报告表
  required: true
  classifier:
    title_patterns:
    - 立案报告表
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 立案编号
      type: verbatim
      desc: 立案编号 如"郁烟立〔2024〕第35号"
    - name: 案由
      type: string
      desc: 案由
    - name: 案件来源
      type: string
      desc: 案件来源 如"投诉举报"
    - name: 案发时间
      type: verbatim
      desc: 案发时间
    - name: 案发地点
      type: verbatim
      desc: 案发地点
  - group: 当事人-单位
    fields:
    - name: 单位名称
      type: string
      desc: 当事人→单位→名称
    - name: 单位法代
      type: verbatim
      desc: 当事人→单位→法定代表人（负责人）
    - name: 单位电话
      type: verbatim
      desc: 当事人→单位→联系电话
    - name: 单位地址
      type: string
      desc: 当事人→单位→地址
  - group: 当事人-个人
    fields:
    - name: 个人姓名
      type: verbatim
      desc: 当事人→个人（个体工商户）→姓名
    - name: 个人性别
      type: verbatim
      desc: 当事人→个人→性别
    - name: 个人年龄
      type: verbatim
      desc: 当事人→个人→年龄
    - name: 个人民族
      type: verbatim
      desc: 当事人→个人→民族
    - name: 个人证件
      type: verbatim
      desc: 当事人→个人→证件类型及号码
    - name: 个人身份证号
      type: chinese-id
      desc: 当事人→个人→居民身份证号码
    - name: 个人电话
      type: verbatim
      desc: 当事人→个人→联系电话
    - name: 个人住址
      type: string
      desc: 当事人→个人→住址
  - group: 案情
    fields:
    - name: 案情摘要
      type: string
      desc: 案情摘要正文
    - name: 案情品种
      type: string
      desc: 案情摘要中的品种规格、单位、数量
  - group: 审批意见
    fields:
    - name: 承办人意见
      type: string
      desc: 承办人意见→意见
    - name: 承办人日期
      type: date
      desc: 承办人意见→日期
    - name: 承办人签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人意见→签名1 输出 有/无
    - name: 承办人签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人意见→签名2 输出 有/无
    - name: 承办部门意见
      type: string
      desc: 承办部门意见→意见
    - name: 承办部门日期
      type: date
      desc: 承办部门意见→日期
    - name: 承办部门签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办部门意见→签名 输出 有/无
    - name: 负责人意见
      type: string
      desc: 负责人意见→意见内容
    - name: 负责人日期
      type: date
      desc: 负责人意见→日期
    - name: 负责人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 负责人意见→签名 输出 有/无
- id: 结案报告表
  name: 结案报告表
  required: true
  classifier:
    title_patterns:
    - 结案报告表
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 当事人
      type: verbatim
      desc: 当事人
    - name: 执行情况
      type: string
      desc: 执行情况
  - group: 审批意见
    fields:
    - name: 承办人结案理由
      type: string
      desc: 承办人结案理由→内容
    - name: 承办人结案日期
      type: date
      desc: 承办人结案理由→日期
    - name: 承办人结案签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人结案理由→签名1 输出 有/无
    - name: 承办人结案签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人结案理由→签名2 输出 有/无
    - name: 承办部门意见
      type: string
      desc: 承办部门意见→内容
    - name: 承办部门日期
      type: date
      desc: 承办部门意见→日期
    - name: 承办部门签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办部门意见→签名 输出 有/无
    - name: 负责人意见
      type: string
      desc: 负责人意见→内容
    - name: 负责人日期
      type: date
      desc: 负责人意见→日期
    - name: 负责人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 负责人意见→签名 输出 有/无
- id: 缴款凭证
  name: 缴款凭证
  required: false
  classifier:
    title_patterns:
    - 缴款凭证
    - 广东省非税收入一般缴款书[（(]电子[）)]
    - 广东省非税收入一般缴款书(电子)
    keywords:
    - 非税收入
    - 缴款书
    - 收费项目
    - 收入项目
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 收入项目
      type: string
      desc: 收入项目名称（电子非税缴款书上可能写作"收费项目"）
    - name: 金额
      type: money
      desc: 金额
    - name: 备注
      type: verbatim
      desc: 备注
- id: 行政处罚事先告知书
  name: 行政处罚事先告知书
  required: true
  classifier:
    title_patterns:
    - 行政处罚事先告知书
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 当事人
      type: verbatim
      desc: 当事人
    - name: 正文前称呼
      type: string
      desc: 正文前称呼
    - name: 权利告知
      type: string
      desc: 正文→权利告知
- id: 证据先行登记保存批准书
  name: 证据先行登记保存批准书
  required: false
  classifier:
    title_patterns:
    - 证据先行登记保存批准书
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 标题下方文本
      type: string
      desc: 标题下方文本
    - name: 表格下方文字
      type: string
      desc: 表格下方文字 含"对先行登记保存的证据，应当在...日内处理"
    - name: 表格品规
      type: string
      desc: 表格内容→品种规格、单位、数量
    - name: 表格全文
      type: string
      desc: 表格完整内容
    - name: 盖章
      type: enum
      allowed:
      - 有
      - 无
      desc: 行政机关盖章 输出 有/无
  - group: 承办人
    fields:
    - name: 承办人日期
      type: date
      desc: 承办人→日期
    - name: 承办人签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人→签名1 输出 有/无
    - name: 承办人签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人→签名2 输出 有/无
  - group: 负责人
    fields:
    - name: 负责人意见
      type: verbatim
      desc: 负责人意见并签名→意见内容
    - name: 负责人意见有无
      type: enum
      allowed:
      - 有
      - 无
      desc: 负责人意见并签名→是否有意见 输出 有/无
    - name: 负责人日期
      type: date
      desc: 负责人意见并签名→日期
    - name: 负责人签名姓名
      type: verbatim
      desc: 负责人意见并签名→签名姓名
    - name: 负责人签名有无
      type: enum
      allowed:
      - 有
      - 无
      desc: 负责人意见并签名→是否有签名 输出 有/无
- id: 证据先行登记保存通知书
  name: 证据先行登记保存通知书
  required: false
  classifier:
    title_patterns:
    - 证据先行登记保存通知书
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 表格下方文字
      type: string
      desc: 表格下方文字
    - name: 表格品规
      type: string
      desc: 表格内容→品种规格、单位、数量
    - name: 表格全文
      type: string
      desc: 表格完整内容
    - name: 盖章
      type: enum
      allowed:
      - 有
      - 无
      desc: 行政机关盖章 输出 有/无
    - name: 拒绝签名说明
      type: string
      desc: 正文→拒绝签名说明
    - name: 当事人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 当事人签名 输出 有/无
  - group: 承办人
    fields:
    - name: 承办人日期
      type: date
      desc: 承办人→日期
    - name: 承办人签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人→签名1 输出 有/无
    - name: 承办人签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 承办人→签名2 输出 有/无
- id: 证据复制（提取）单
  name: 证据复制（提取）单
  required: true
  classifier:
    title_patterns:
    - 证据复制[（(]提取[）)]单
    - 证据复制(提取)单
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 复制时间
      type: verbatim
      desc: |-
        证据复制(提取)单每页末尾的「复制（提取）时间」字段。
        一份卷宗通常有多份证据（每页一份，说明事项各异）。
        当**多份存在**时，取**第一份**的时间（整体活动起点，
        通常也是询问笔录期间制作的那份）。
        示例："2024 年 4 月 19 日 19 时 30 分"。
    - name: 复制地点
      type: verbatim
      desc: |-
        证据复制(提取)单每页末尾的「复制（提取）地点」字段。
        多份存在时取**第一份**的地点（与 复制时间 同一页）。
        示例："郁南县南江口镇西江路 124 号"。
    - name: 现场时间
      type: verbatim
      desc: |-
        证据复制(提取)单中**现场检查相片**所属那份证据的
        「复制（提取）时间」。特征：说明事项含"现场/外观/
        查获时拍摄/查获违法走私卷烟时"等，与执法人员到场
        同一时段。用于和 现场笔录.检查时间 对齐。
        如没有纯"现场检查"相片，取第一份时间。
    - name: 现场地址
      type: string
      desc: |-
        证据复制(提取)单中**现场检查相片**所属那份证据的
        「复制（提取）地点」，与 现场时间 同一份。
        用于和 现场笔录.检查地点 对齐。
    - name: 邮件回执
      type: verbatim
      desc: 邮件回执
  - group: 居民身份证
    fields:
    - name: 居民身份证
      type: multi_entity
      desc: |-
        证据复制（提取）单中**每一张**居民身份证图片对应的一份记录。
        一份证据复制单通常包含多张身份证（当事人、举报人、未成年人、相关人等），
        请把每张身份证都抽取为数组中的一项，**不要**只抽"当事人那份"。
        由派生字段「证据复制（提取）单当事人」按姓名+身份证号挑出归属当事人的那一份。
        如果只有一张身份证，返回只包含一项的数组即可（引擎会自动把那一项判为当事人）。
      fields:
      - name: 身份证姓名
        type: verbatim
        desc: 该份身份证上印的姓名
      - name: 身份证性别
        type: verbatim
        desc: 该份身份证上印的性别（男/女）
      - name: 身份证民族
        type: verbatim
        desc: 该份身份证上印的民族
      - name: 身份证住址
        type: string
        desc: 该份身份证上印的住址
      - name: 身份证号
        type: chinese-id
        desc: 该份身份证上印的公民身份号码（18 位）
      - name: 身份证背面
        type: enum
        allowed:
        - 有
        - 无
        desc: 该份身份证是否包含背面（签发机关/有效期那面）有/无
  - group: 许可证
    fields:
    - name: 许可证企业名称
      type: string
      desc: 烟草专卖零售许可证→企业名称
    - name: 许可证经营场所
      type: string
      desc: 烟草专卖零售许可证→经营场所
    - name: 许可证号
      type: verbatim
      desc: 烟草专卖零售许可证→许可证号
    - name: 许可证负责人
      type: verbatim
      desc: 烟草专卖零售许可证→负责人姓名
  - group: 营业执照
    fields:
    - name: 执照名称
      type: string
      desc: 营业执照→名称
    - name: 执照住所
      type: string
      desc: 营业执照→住所
    - name: 执照法代
      type: verbatim
      desc: 营业执照→法定代表人
    - name: 执照统一社会信用代码
      type: uscc
      desc: 营业执照→统一社会信用代码
- id: 询问笔录
  name: 询问笔录
  required: true
  classifier:
    title_patterns:
    - 询问笔录
    keywords: []
    min_score: 0.5
  extract:
  - group: 基本信息
    fields:
    - name: 询问时间
      type: verbatim
      desc: 询问时间
    - name: 询问地点
      type: verbatim
      desc: 询问地点
  - group: 被询问人
    fields:
    - name: 被询问人
      type: multi_entity
      desc: |-
        询问笔录中**每一份**笔录记录对应的被询问人基本信息。
        一份卷宗可能包含多次询问笔录（针对不同人员），请把**每一份**笔录
        中的被询问人都抽取为数组中的一项，**不要**只抽"当事人那份"。
        由派生字段「询问笔录当事人」按姓名+证件号挑出归属当事人的那一份。
        只有一份被询问人记录时，引擎自动把那一份判为当事人。
      fields:
      - name: 被询问人姓名
        type: verbatim
        desc: 被询问人→姓名
      - name: 被询问人性别
        type: enum
        allowed:
        - 男
        - 女
        desc: 被询问人→性别
      - name: 被询问人民族
        type: verbatim
        desc: 被询问人→民族
      - name: 被询问人证件
        type: verbatim
        desc: 被询问人→证件类型及号码（通常是"居民身份证：xxx"）
      - name: 被询问人电话
        type: verbatim
        desc: 被询问人→联系电话
      - name: 被询问人住址
        type: string
        desc: 被询问人→住址
      - name: 被询问人经营地址
        type: string
        desc: 被询问人→经营地址
  - group: 笔录正文
    fields:
    - name: 执法人员信息
      type: string
      desc: 正文→执法人员信息
    - name: 权利告知
      type: string
      desc: 正文→权利告知内容
    - name: 被询问人核实
      type: string
      desc: 正文→被询问人核实
    - name: 拒绝签名说明
      type: string
      desc: 正文→拒绝签名说明
  - group: 签名
    fields:
    - name: 被询问人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 被询问人（签名）输出 有/无
    - name: 询问人签名1
      type: enum
      allowed:
      - 有
      - 无
      desc: 询问人（签名）1 输出 有/无
    - name: 询问人签名2
      type: enum
      allowed:
      - 有
      - 无
      desc: 询问人（签名）2 输出 有/无
- id: 送达回证
  name: 送达回证
  required: true
  classifier:
    title_patterns:
    - 送达回证
    keywords: []
    min_score: 0.5
  # 注意：本子文档内可能拼接多份送达回证表格（立案通知/先行登记保存通知/事先告知书/
  # 处罚决定书等各一份）。以下字段只抽取"送达文书名称"含"行政处罚决定书"的那份；
  # 其他送达回证忽略（由专门的规则处理）。
  extract:
  - group: 基本信息
    fields:
    - name: 受送达人
      type: verbatim
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份表格里的受送达人
    - name: 回证编号
      type: verbatim
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份表格上方的回证编号
    - name: 送达方式
      type: verbatim
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份的送达方式
    - name: 送达地点
      type: verbatim
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份的送达地点
    - name: 送达文书名称
      type: string
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"的那一项（作为后续其他字段的定位基准）
    - name: 送达文书文号
      type: verbatim
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份的送达文书文号
  - group: 签收
    fields:
    - name: 签收日期
      type: date
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份的签收日期
    - name: 代收理由
      type: string
      desc: 本子文档内若含多份送达回证，只抽"送达文书名称"含"行政处罚决定书"那份的代收人代收理由
    - name: 印章
      type: enum
      allowed:
      - 有
      - 无
      desc: 印章 输出 有/无
      vlm_extract_mode: always
    - name: 收件人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 收件人签名或盖章→签名 输出 有/无
      vlm_extract_mode: always
    - name: 收件人盖章
      type: enum
      allowed:
      - 有
      - 无
      desc: 收件人签名或盖章→盖章 输出 有/无
      vlm_extract_mode: always
  - group: 送达人
    fields:
    - name: 送达人签名
      type: enum
      allowed:
      - 有
      - 无
      desc: 送达人签名 输出 有/无
      vlm_extract_mode: always
rules:
- group: JZG-JD
  rules:
  - rule_id: JZ-JD-001
    name: 当事人基本情况或立案情况记载准确性
    desc: 若当事人信息与证据复制（提取）单中信息不一致，则扣分。
    risk: medium
    score: 5
    scope:
    - 案件处理审批表
    - 案件调查终结报告
    - 立案报告表
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 案件处理审批表.案由
        target: 案件调查终结报告.案由
      - source: 案件处理审批表.案件来源
        target: 案件调查终结报告.案件来源
        # 案件来源是开放词汇（投诉举报/群众举报/电话举报/来电举报/上级交办…
        # 无穷枚举），不用 canonicalize 字典维护。字面不等时走 rescue L1
        # match 做语义等价判定。
      - source: 案件处理审批表.立案编号
        target: 立案报告表.立案编号
      - source: 案件处理审批表.立案日期
        target: 案件调查终结报告.立案日期
      - source: 案件处理审批表.单位名称
        target: 案件调查终结报告.单位名称
        when: "当事人类型 != '个人'"
      - source: 案件调查终结报告.单位名称
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 案件处理审批表.单位法代
        target: 案件调查终结报告.单位法代
        when: "当事人类型 != '个人'"
      - source: 案件调查终结报告.单位法代
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 案件处理审批表.单位地址
        target: 案件调查终结报告.单位地址
        when: "当事人类型 != '个人'"
      - source: 案件调查终结报告.单位地址
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
    - id: '2'
      check: match
      pairs:
      - source: 案件处理审批表.案由
        target: 案件调查终结报告.案由
      - source: 案件处理审批表.案件来源
        target: 案件调查终结报告.案件来源
        # 案件来源是开放词汇（投诉举报/群众举报/电话举报/来电举报/上级交办…
        # 无穷枚举），不用 canonicalize 字典维护。字面不等时走 rescue L1
        # match 做语义等价判定。
      - source: 案件处理审批表.立案日期
        target: 案件调查终结报告.立案日期
      - source: 案件处理审批表.立案编号
        target: 立案报告表.立案编号
      - source: 案件处理审批表.个人姓名
        target: 案件调查终结报告.个人姓名
        when: "当事人类型 != '单位'"
      - source: 案件处理审批表.个人性别
        target: 证据复制（提取）单当事人.身份证性别
        when: "当事人类型 != '单位'"
      - source: 案件调查终结报告.个人民族
        target: 证据复制（提取）单当事人.身份证民族
        when: "当事人类型 != '单位'"
      - source: 案件调查终结报告.个人证件
        target: 证据复制（提取）单当事人.身份证号
        when: "当事人类型 != '单位'"
        method: substring
      - source: 案件处理审批表.个人住址
        target: 案件调查终结报告.个人住址
        when: "当事人类型 != '单位'"
    - id: '3'
      check: ai
      prompt: "请根据以下卷宗信息，判断当事人基本情况及立案情况的记载是否准确一致。\n\n  【第一步：判断案件类型】\n\n  检查\"案件处理审批表\"\
        中的当事人单位名称字段值：\n  {{案件处理审批表.单位名称}}\n\n  - 如果该值为 \"/\"、\"-\"、空或其他占位符 → 这是**个人案件**，执行个人案件检查\n\
        \  - 如果该值是真实的单位名称 → 这是**单位案件**，执行单位案件检查\n\n  ---\n\n  【第二步-A：单位案件检查】（当事人为单位时执行）\n\
        \n  请逐一比对以下字段，判断是否一致：\n\n  1. 案由\n - 案件处理审批表：{{案件处理审批表.案由}}\n - 案件调查终结报告：{{案件调查终结报告.案由}}\n\
        \n  2. 案件来源\n - 案件处理审批表：{{案件处理审批表.案件来源}}\n - 案件调查终结报告：{{案件调查终结报告.案件来源}}\n\n\
        \  3. 立案编号\n - 案件处理审批表：{{案件处理审批表.立案编号}}\n - 立案报告表：{{立案报告表.立案编号}}\n\n  4. 立案日期\n\
        \ - 案件处理审批表：{{案件处理审批表.立案日期}}\n - 案件调查终结报告：{{案件调查终结报告.立案日期}}\n\n  5. 单位名称（三方核对）\n\
        \ - 案件处理审批表：{{案件处理审批表.单位名称}}\n - 案件调查终结报告：{{案件调查终结报告.单位名称}}\n - 证据复制（提取）单-营业执照：{{证据复制（提取）单.执照名称}}\n\
        \n  6. 法定代表人（三方核对）\n - 案件处理审批表：{{案件处理审批表.单位法代}}\n - 案件调查终结报告：{{案件调查终结报告.单位法代}}\n\
        \ - 证据复制（提取）单-营业执照：{{证据复制（提取）单.执照法代}}\n\n  7. 单位地址（三方核对）\n - 案件处理审批表：{{案件处理审批表.单位地址}}\n\
        \ - 案件调查终结报告：{{案件调查终结报告.单位地址}}\n - 证据复制（提取）单-营业执照：{{证据复制（提取）单.执照住所}}\n\n \
        \ ---\n\n  【第二步-B：个人案件检查】（当事人为个人或个体工商户时执行）\n\n  请逐一比对以下字段，判断是否一致：\n\n  1.\
        \ 案由\n - 案件处理审批表：{{案件处理审批表.案由}}\n - 案件调查终结报告：{{案件调查终结报告.案由}}\n\n  2. 案件来源\n\
        \ - 案件处理审批表：{{案件处理审批表.案件来源}}\n - 案件调查终结报告：{{案件调查终结报告.案件来源}}\n\n  3. 立案编号\n\
        \ - 案件处理审批表：{{案件处理审批表.立案编号}}\n - 立案报告表：{{立案报告表.立案编号}}\n\n  4. 立案日期\n - 案件处理审批表：{{案件处理审批表.立案日期}}\n\
        \ - 案件调查终结报告：{{案件调查终结报告.立案日期}}\n\n  5. 姓名\n - 案件处理审批表：{{案件处理审批表.个人姓名}}\n -\
        \ 案件调查终结报告：{{案件调查终结报告.个人姓名}}\n\n  6. 性别\n - 案件处理审批表：{{案件处理审批表.个人性别}}\n - 证据复制（提取）单-居民身份证：{{证据复制（提取）单当事人.身份证性别}}\n\
        \n  7. 民族\n - 案件调查终结报告：{{案件调查终结报告.个人民族}}\n - 证据复制（提取）单-居民身份证：{{证据复制（提取）单当事人.身份证民族}}\n\
        \n  8. 证件号码（包含匹配）\n - 案件调查终结报告：{{案件调查终结报告.个人证件}}\n - 证据复制（提取）单-居民身份证：{{证据复制（提取）单当事人.身份证号}}\n\
        \ - 注意：审批表中证件字段格式可能为\"居民身份证：44xxxxxxxx\"，判断时应提取纯号码部分进行比对\n\n  9. 住址\n - 案件处理审批表：{{案件处理审批表.个人住址}}\n\
        \ - 证据复制（提取）单-居民身份证：{{证据复制（提取）单当事人.身份证住址}}\n\n  ---\n\n  【判断规则】\n\n  - \"/\"\
        、\"-\"、\"—\" 等符号代表该字段不适用，不是有效值，遇到此类值的比对项直接跳过\n  - 只要有任意一个有效字段不一致，判定为**不通过**\n\
        \  - 所有有效字段均一致（或均为占位符可跳过），判定为**通过**\n"
    logic: 1 OR 2 OR 3
    messages:
      pass: 文档检查通过，符合规范要求。
      fail: 文档存在以下问题，请修改后重新提交。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十九条
    type: ai_rule
  - rule_id: JZ-JD-002
    name: 处罚决定书证据列举
    desc: 若找不到"证据："或者"证据："之后无内容，则扣分。
    risk: medium
    score: 10
    scope:
    - 处罚决定书
    stages:
    - id: '1'
      check: required
      field: 处罚决定书.证据列举
    messages:
      pass: 处罚决定书已列出相关证据。
      fail: 罚决定书未列出相关证据，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十九条
    type: deterministic
  - rule_id: JZ-JD-003
    name: 救济途径或期限告知明确性
    desc: 若未找到文本匹配内容，则扣分。
    risk: medium
    score: 5
    scope:
    - 处罚决定书
    stages:
    - id: '1'
      check: required
      field: 处罚决定书.救济途径
    messages:
      pass: 已告知救济途径和期限。
      fail: 救济途径或期限告知不明确或不正确，请核对。
    references_laws:
    - 《中华人民共和国烟草专卖法》第四十一条
    type: deterministic
  - rule_id: JZ-JD-004
    name: 行政处罚决定当事人基本情况记载准确性
    desc: 检查首段信息是否填写齐全，若存在未填内容，（字号：可为空），若不齐全，则扣分。 若当事人信息与证据中提取的信息不一致，则扣分。
    risk: medium
    score: 10
    scope:
    - 处罚决定书
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 处罚决定书.当事人
        target: 证据复制（提取）单.许可证企业名称
        when: "当事人类型 != '个人'"
      - source: 处罚决定书.字号
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 处罚决定书.统一社会信用代码
        target: 证据复制（提取）单.执照统一社会信用代码
        when: "当事人类型 != '个人'"
      - source: 处罚决定书.经营地址
        target: 证据复制（提取）单.许可证经营场所
        when: "当事人类型 != '个人'"
      - source: 证据复制（提取）单.许可证经营场所
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
    - id: '2'
      check: match
      pairs:
      - source: 处罚决定书.当事人
        target: 证据复制（提取）单当事人.身份证姓名
        when: "当事人类型 != '单位'"
      - source: 处罚决定书.性别
        target: 证据复制（提取）单当事人.身份证性别
        when: "当事人类型 != '单位'"
      - source: 处罚决定书.民族
        target: 证据复制（提取）单当事人.身份证民族
        when: "当事人类型 != '单位'"
      - source: 处罚决定书.身份证住址
        target: 证据复制（提取）单当事人.身份证住址
        when: "当事人类型 != '单位'"
      - source: 处罚决定书.身份证号码
        target: 证据复制（提取）单当事人.身份证号
        when: "当事人类型 != '单位'"
      - source: 处罚决定书.经营地址
        target: 证据复制（提取）单.许可证经营场所
        when: "当事人类型 != '个人'"
      - source: 证据复制（提取）单.许可证经营场所
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
      - source: 处罚决定书.字号
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
    logic: 1 OR 2
    messages:
      pass: 当事人的基本情况记载齐全且准确。
      fail: 当事人的基本情况记载不齐全或不准确，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十九条
    type: deterministic
- group: JZG-SD
  rules:
  - rule_id: JZ-SD-001
    name: 法定时限送达
    desc: 若处罚决定书文尾的日期与处罚决定书的送达回证中的"签收日期"，之间的范围不在法定时限内，则扣分。
    risk: medium
    score: 10
    scope:
    - 处罚决定书
    - 送达回证
    stages:
    - id: '1'
      check: required
      fields:
      - 送达回证.签收日期
      - 处罚决定书.落款日期
    messages:
      pass: 文档检查通过，符合规范要求。
      fail: 文档存在以下问题，请修改后重新提交。
    references_laws:
    - 《中华人民共和国行政处罚法》第六十一条
    type: deterministic
  - rule_id: JZ-SD-002
    name: 送达回证基本信息规范
    desc: 若收件人签名、签收时间、送达人签名、印章任意一项不存在，则扣分
    risk: medium
    score: 10
    scope:
    - 送达回证
    stages:
    - id: '1'
      check: required
      fields:
      - 送达回证.回证编号
      - 送达回证.送达文书名称
      - 送达回证.送达方式
      - 送达回证.签收日期
    messages:
      pass: 办案单位印章、送达人签名、收件人签名及签收时间填写规范。
      fail: 填写不规范，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第六十一条
    type: deterministic
- group: JZG-XC
  rules:
  - rule_id: JZ-XC-001
    name: 现场笔录时间地点完整性
    desc: 若现场笔录中时间或地点未记载，则扣分；若记载的时间与证据提取单中的时间、地点不一致，也扣分。
    risk: medium
    score: 10
    scope:
    - 现场笔录
    - 证据复制（提取）单
    stages:
    # 地点是文字型字段，用确定性 match 足够（fuzzy 可容忍小差异）
    - id: '1'
      check: match
      pairs:
      - source: 现场笔录.检查地点
        target: 证据复制（提取）单.现场地址
        method: fuzzy
    # 时间是语义型字段 —— 现场笔录.检查时间常是时间段（"16:10至17:00"），
    # 证据复制（提取）单.现场时间常是时间点（"16:20"）。不写字符串 parser，
    # 直接让 LLM 按业务语义判定（点落在段内视为一致）。
    - id: '2'
      check: ai
      prompt: |
        判断以下两个时间在业务上是否一致：

        - 现场笔录.检查时间：{{现场笔录.检查时间}}
        - 证据复制（提取）单.现场时间：{{证据复制（提取）单.现场时间}}

        判断原则：
        - 若两者都是时间点且值相同 → 一致
        - 若一方是时间段，另一方是时间点，且**点落在段内** → 一致
        - 若两者都是时间段且有重叠 → 一致
        - 若完全无关或对不上 → 不一致

        只判时间业务语义，不判格式差异（"2024 年 11 月 18 日"和"2024-11-18"视为同日）。
    logic: 1 AND 2
    messages:
      pass: 时间地点记录准确。
      fail: 时间地点记录缺失或与实际不一致，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
  - rule_id: JZ-XC-002
    name: 被检查人基本情况记载完整性-有无
    desc: 被检查人基本情况记载
    risk: medium
    score: 10
    scope:
    - 现场笔录
    stages:
    - id: '1'
      check: required
      fields:
      - 现场笔录.单位名称
      - 现场笔录.单位法代
      - 现场笔录.地址
      - 现场笔录.电话
      - 现场笔录.单位许可证号
    - id: '2'
      check: required
      fields:
      - 现场笔录.个人姓名
      - 现场笔录.个人性别
      - 现场笔录.个人证件
      - 现场笔录.地址
      - 现场笔录.电话
    - id: '3'
      check: required
      fields:
      - 现场笔录.现场负责人
      - 现场笔录.电话
      - 现场笔录.地址
    logic: (1 OR 2) AND 3
    messages:
      pass: 被检查人姓名、身份证号、地址、许可证号与证据一致，请检查其余基本信息是否完整准确。
      fail: 被检查人基本情况记录有误或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
  - rule_id: JZ-XC-003
    name: 被检查人基本情况记载完整性-一致
    desc: 检查现场笔录中被检查人信息与身份证/营业执照/许可证信息是否一致
    risk: medium
    score: 10
    scope:
    - 现场笔录
    - 立案报告表
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 现场笔录.单位名称
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 现场笔录.单位法代
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 现场笔录.单位许可证号
        target: 证据复制（提取）单.许可证号
        when: "当事人类型 != '个人'"
      - source: 证据复制（提取）单.许可证企业名称
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 证据复制（提取）单.许可证负责人
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 立案报告表.单位名称
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 立案报告表.单位法代
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 立案报告表.单位地址
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
    - id: '2'
      check: match
      pairs:
      - source: 现场笔录.个人姓名
        target: 立案报告表.个人姓名
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人姓名
        target: 证据复制（提取）单当事人.身份证姓名
        when: "当事人类型 != '单位'"
      - source: 现场笔录.个人性别
        target: 立案报告表.个人性别
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人性别
        target: 证据复制（提取）单当事人.身份证性别
        when: "当事人类型 != '单位'"
      - source: 现场笔录.个人证件
        target: 证据复制（提取）单当事人.身份证号
        when: "当事人类型 != '单位'"
      - source: 现场笔录.地址
        target: 立案报告表.个人住址
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人住址
        target: 证据复制（提取）单当事人.身份证住址
        when: "当事人类型 != '单位'"
    logic: 1 OR 2
    messages:
      pass: 文档检查通过，符合规范要求。
      fail: 文档存在以下问题，请修改后重新提交。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
  - rule_id: JZ-XC-004
    name: 被检查人签署意见合规性
    desc: 若被检查人拒绝签署意见及姓名，且执法人员未说明情况，则扣分。
    risk: medium
    score: 10
    scope:
    - 现场笔录
    stages:
    - id: '1'
      check: required
      fields:
      - 现场笔录.意见
      - 现场笔录.意见日期
      - 现场笔录.意见签名
    - id: '2'
      check: required
      field: 现场笔录.意见
    messages:
      pass: 被检查人已签署意见及姓名，或执法人员已说明拒绝签署的情况。
      fail: 被检查人拒绝签署但执法人员未说明情况，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
- group: JZG-DJ
  rules:
  - rule_id: JZ-DJ-001
    name: 批准保存时间记载完整性
    desc: 若负责人意见并签名栏后没有日期信息，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    stages:
    - id: '1'
      check: required
      field: 证据先行登记保存批准书.负责人日期
    messages:
      pass: 已记载批准保存时间。
      fail: 批准保存时间未记载，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None
  - rule_id: JZ-DJ-002
    name: 证据先行登记保存批准书负责人意见并签名
    desc: 若行政机关负责人没有签署意见或姓名，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.负责人签名姓名
      - 证据先行登记保存批准书.负责人意见
      - 证据先行登记保存批准书.负责人日期
    messages:
      pass: 行政机关负责人已签署意见和姓名。
      fail: 行政机关负责人未签署意见或姓名，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None
  - rule_id: JZ-DJ-003
    name: 先行登记保存证据期限记载
    desc: 若没有文中"对先行登记保存的证据，应当在.....日内及时作出处理决定。"的描述，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.表格下方文字
      - 证据先行登记保存通知书.表格下方文字
    messages:
      pass: 已注明先行登记保存证据期限和处理决定期限。
      fail: 未注明相关期限，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None and 证据先行登记保存通知书 != None
  - rule_id: JZ-DJ-004
    name: 先行登记保存批准书或通知书文件校验
    desc: 若现场笔录中的情况说明中出现物品名称及规格描述，且文件中无批准书或通知书，则扣分。
    risk: medium
    score: 10
    scope:
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.表格品规
      - 证据先行登记保存通知书.表格品规
    - id: '2'
      check: ai
      prompt: '请判断以下 {{证据先行登记保存批准书.表格全文}} 和  {{证据先行登记保存通知书.表格全文}} 表述和数量一致

        '
    messages:
      pass: 存在先行登记保存批准书或通知书。
      fail: 缺少先行登记保存批准书或通知书，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: ai_rule
    activate_if: 证据先行登记保存批准书 != None and 证据先行登记保存通知书 != None
  - rule_id: JZ-DJ-005
    name: 批准书与通知书内容一致性
    desc: 若批准书和通知书内容不一致，则直接扣分；若一致，则与抽样清单中的物品数量进行比对，如果抽样清单中同一品种有多条记录则提示。 若当事人和见证人栏均无签名，则扣分
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 证据先行登记保存通知书.表格品规
        target: 证据先行登记保存批准书.表格品规
    messages:
      pass: 批准书与通知书内容一致
      fail: 批准书与通知书内容不一致，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None and 证据先行登记保存通知书 != None
  - rule_id: JZ-DJ-006
    name: 证据先行登记保存批准/通知书承办人签名日期
    desc: 若没有证据先行登记保存批准/通知书承办人签字或盖章，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.承办人日期
      - 证据先行登记保存通知书.承办人日期
      - 证据先行登记保存批准书.承办人签名1
      - 证据先行登记保存批准书.承办人签名2
      - 证据先行登记保存通知书.承办人签名1
      - 证据先行登记保存通知书.承办人签名2
    messages:
      pass: 有日期，案件承办人已签字或盖章。
      fail: 缺少印章、日期或承办人签字盖章，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None and 证据先行登记保存通知书 != None
  - rule_id: JZ-DJ-007
    name: 证据先行登记保存批准书负责人意见并签名
    desc: 若没有填写两名承办人意见及签名，负责人意见及签名，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.负责人日期
      - 证据先行登记保存批准书.负责人签名有无
      - 证据先行登记保存批准书.负责人意见有无
    messages:
      pass: 两名承办人签名，负责人意见及签名完整。
      fail: 两名承办人签名或负责人意见及签名缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None
  - rule_id: JZ-DJ-008
    name: 保存理由和内容记载完整性
    desc: 若首部没有保存理由描述，表格中没有规格和数量信息，则扣分。
    risk: medium
    score: 10
    scope:
    - 立案报告表
    - 证据先行登记保存批准书
    stages:
    - id: '1'
      check: ai
      prompt: '{{立案报告表.案由}}

        {{证据先行登记保存批准书.标题下方文本}}

        案由应该要和标题下方文本同一个意思，案由会比较少字。帮我评查这个案由是否存在 在标题下方文本 中

        '
    - id: '2'
      check: ai
      prompt: '{{立案报告表.案情品种}}中提及的具体规格品种、数量应出现在{{证据先行登记保存批准书.表格品规}}中，但案情摘要中不一定会将全部规格品种都写全，评查尺度可以适当放松

        '
    - id: '3'
      check: ai
      prompt: '请根据以下信息判断案件类型，对个人（个体工商户）案件单独评查证据先行登记保存批准书内容是否完整。


        当事人-单位-名称: {{立案报告表.单位名称}}

        当事人-个人（个体工商户）-姓名: {{立案报告表.个人姓名}}

        证据先行登记保存批准书-表格内容-品种规格、单位、数量: {{证据先行登记保存批准书.表格品规}}


        判断逻辑：

        1. 如果单位-名称为空或为"/"，且个人-姓名不为空，则这是个人（个体工商户）案件

        2. 对于个人案件：只要证据先行登记保存批准书-表格内容-品种规格、单位、数量有内容（非空）；若为空

        3. 如果单位-名称有实际值（非空、非"/"）

        '
    logic: (1 AND 2) OR 3
    messages:
      pass: 已注明保存理由和内容。
      fail: 保存理由和内容未注明，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: ai_rule
    activate_if: 证据先行登记保存批准书 != None
  - rule_id: JZ-DJ-009
    name: 先行登记保存物品处理通知书当事人签字
    desc: 若通知书中当事人未签字或没有其他内容说明，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: required
      field: 证据先行登记保存通知书.当事人签名
    - id: '2'
      check: required
      field: 证据先行登记保存通知书.拒绝签名说明
    logic: 1 OR 2
    messages:
      pass: 当事人已在先行登记保存物品处理通知书上签字。
      fail: 当事人未签字或i没有情况说明，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存通知书 != None
  - rule_id: JZ-DJ-010
    name: 证据先行登记保存批准书负责人意见并签名
    desc: 检查涉案物品返还清单接收人签名、日期和印章是否完整，并通过正则检查损耗/返还信息
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.负责人意见
      - 证据先行登记保存批准书.负责人签名姓名
    messages:
      pass: 文档检查通过，符合规范要求。
      fail: 文档存在以下问题，请修改后重新提交。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None
  - rule_id: JZ-DJ-011
    name: 证据先行登记保存批准/通知书盖章
    desc: 检查先行登记保存批准书和通知书是否加盖行政机关印章
    risk: medium
    score: 5
    scope:
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: required
      fields:
      - 证据先行登记保存批准书.盖章
      - 证据先行登记保存通知书.盖章
    messages:
      pass: 有行政机关印章
      fail: 缺少印章，请核对
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 证据先行登记保存批准书 != None and 证据先行登记保存通知书 != None
- group: JZG-QR
  rules:
  - rule_id: JZ-QR-001
    name: 陈述申辩权利告知和听取
    desc: 若表述中不包含"享有陈述权和申辩权"、"...日内"、"...视为放弃"，任意一项，则扣分，
    risk: medium
    score: 10
    scope:
    - 行政处罚事先告知书
    stages:
    - id: '1'
      check: required
      field: 行政处罚事先告知书.权利告知
    messages:
      pass: 已告知当事人陈述申辩权利。
      fail: 未告知当事人陈述申辩相关权力，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第四十四条
    type: deterministic
  - rule_id: JZ-QR-002
    name: 行政处罚事先告知对象准确性
    desc: 若告知书首句中的姓名与当事人意见中的签名不一致，则扣分。
    risk: medium
    score: 10
    scope:
    - 行政处罚事先告知书
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 行政处罚事先告知书.当事人
        target: 行政处罚事先告知书.正文前称呼
    messages:
      pass: 行政处罚事先告知对象正确。
      fail: 行政处罚事先告知对象错误，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第四十四条
    type: deterministic
- group: JZG-QZ
  rules:
  - rule_id: JZ-QZ-001
    name: 当事人身份证明提取规范性
    desc: 若没有提取当事人身份证明，则扣分。
    risk: medium
    score: 10
    scope:
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: required
      fields:
      - 证据复制（提取）单当事人.身份证号
      - 证据复制（提取）单当事人.身份证背面
    messages:
      pass: 当事人身份证明已规范提取。
      fail: 当事人身份证明提取不规范或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
  - rule_id: JZ-QZ-002
    name: 查获物品情况记载准确性、合规性
    desc: 若批准书和通知书内容不一致，则直接扣分；若一致，则与抽样清单中的物品数量进行比对，如果抽样清单中同一品种有多条记录则提示。 若当事人和见证人栏均无签名，则扣分
    risk: medium
    score: 10
    scope:
    - 抽样取证物品清单
    - 涉案物品核价表
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: ai
      prompt: '请判断{{抽样取证物品清单.品种规格}}（若有）或{{涉案物品核价表.核价明细}}，以及{{证据先行登记保存批准书.表格品规}}、{{证据先行登记保存通知书.表格品规}}表述和数量一致。

        如果{{抽样取证物品清单.品种规格}}、{{涉案物品核价表.核价明细}}都不存在，则只需判断{{证据先行登记保存批准书.表格品规}}和{{证据先行登记保存通知书.表格品规}}的一致性

        '
    messages:
      pass: 查获物品情况、数量及当事人或见证人姓名记录准确。
      fail: 记录不准确或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: ai_rule
  - rule_id: JZ-QZ-003
    name: 核价文书记录的准确性（盖章）
    desc: 检查涉案物品核价表是否有涉案卷烟价格管理小组印章
    risk: medium
    score: 5
    scope:
    - 涉案物品核价表
    stages:
    - id: '1'
      check: required
      field: 涉案物品核价表.核价组印章
    messages:
      pass: 已正确加盖印章。
      fail: 印章加盖错误，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 涉案物品核价表 != None
  - rule_id: JZ-QZ-004
    name: 抽样取证物品清单完整性
    desc: 先行登记保存证据处理通知书"处理"方式选择第2项"送交...鉴定"时，卷宗内没有抽样取证物品清单，则扣分。
    risk: medium
    score: 10
    scope:
    - 先行登记保存证据处理通知书
    - 抽样取证物品清单
    stages:
    - id: '1'
      check: required
      field: 先行登记保存证据处理通知书.处理方式
    - id: '2'
      check: required
      fields:
      - 抽样取证物品清单.表格有内容
      - 抽样取证物品清单.当事人签名
    logic: (1 AND 2) OR (NOT 1)
    messages:
      pass: 抽样提取物证时有完整的物品清单。
      fail: 抽样提取物证时缺少物品清单，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 先行登记保存证据处理通知书 != None
  - rule_id: JZ-QZ-005
    name: 核价文书记录准确性
    desc: 若核价文书或记录中没有准确记载（计算核价结果错误）涉案物品情况，核价错误，则扣分。
    risk: medium
    score: 5
    scope:
    - 涉案物品核价表
    stages:
    - id: '1'
      check: ai
      prompt: '{{涉案物品核价表.表格全文}}

        请判断以表格中各品种规格的数量、单价计算的合计金额是否正确，各品种规格合计金额计算总计金额是否正确，请在计算的时候保留小数点后两位

        '
    messages:
      pass: 涉案物件核价表存在
      fail: 涉案物件核价表不存在或者信息内容有误
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: ai_rule
  - rule_id: JZ-QZ-006
    name: 价格证明合规性
    desc: 若批准书与通知书内容不一致，核价表中数量与批准书或通知书中不一致，则扣分。
    risk: medium
    score: 10
    scope:
    - 涉案物品核价表
    - 证据先行登记保存批准书
    - 证据先行登记保存通知书
    stages:
    - id: '1'
      check: ai
      prompt: '请判断以下三个表格物品和数量是否对应

        {{涉案物品核价表.核价明细}}

        {{证据先行登记保存批准书.表格品规}}

        {{证据先行登记保存通知书.表格品规}}

        '
    messages:
      pass: 价格证明符合要求，且有涉案物品核价依据或价格来源。
      fail: 价格证明不符合要求或缺少依据，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: ai_rule
- group: JZG-XW
  rules:
  - rule_id: JZ-XW-001
    name: 被询问人签署"记录属实"合规性
    desc: 若每页页尾被询问人处没有签名，则扣分；如果最后一页没有手写内容则提示。
    risk: medium
    score: 10
    scope:
    - 询问笔录
    stages:
    - id: '1'
      check: required
      field: 询问笔录.被询问人核实
    messages:
      pass: 被询问人已签署"记录属实"且逐页签名。
      fail: 被询问人未签署或未逐页签名，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十五条
    type: deterministic
  - rule_id: JZ-XW-002
    name: 询问笔录合规性
    desc: 通过AI判断询问笔录格式是否符合规范要求
    risk: medium
    score: 10
    scope:
    - 询问笔录
    stages:
    - id: '1'
      check: ai
      prompt: '请判断以下询问笔录中是否只有一名被询问人。被询问人信息：{{询问笔录当事人.被询问人姓名}}

        '
    messages:
      pass: 笔录仅询问一名被询问人。
      fail: 一份笔录询问多名被询问人，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十五条
    type: ai_rule
  - rule_id: JZ-XW-003
    name: 执法人员身份表明和权利告知
    desc: 若未在询问开始时表明执法人员身份，并告知当事人享有陈述申辩权和申请回避权，则扣分。
    risk: medium
    score: 5
    scope:
    - 询问笔录
    stages:
    - id: '1'
      check: required
      fields:
      - 询问笔录.执法人员信息
      - 询问笔录.权利告知
    messages:
      pass: 执法人员已表明身份并告知相关权利。
      fail: 未表明身份或未告知权利，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十五条
    type: deterministic
  - rule_id: JZ-XW-004
    name: 执法人员签名合规性
    desc: 若执法人员没有签名或只有一人签名，则扣分。
    risk: medium
    score: 10
    scope:
    - 询问笔录
    stages:
    - id: '1'
      check: required
      fields:
      - 询问笔录.询问人签名1
      - 询问笔录.询问人签名2
    messages:
      pass: 执法人员已签名，且有两人以上签名。
      fail: 执法人员签名缺失或不足两人，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第四十二条
    type: deterministic
  - rule_id: JZ-XW-005
    name: 被询问人基本情况记载全面性
    desc: 被询问人基本情况填写不全，或询问时间、地点未准确记载，则扣分。
    risk: medium
    score: 5
    scope:
    - 证据复制（提取）单
    - 询问笔录
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 询问笔录.询问地点
        target: 证据复制（提取）单.复制地点
      - source: 询问笔录当事人.被询问人姓名
        target: 证据复制（提取）单当事人.身份证姓名
        when: "当事人类型 != '单位'"
      - source: 询问笔录当事人.被询问人性别
        target: 证据复制（提取）单当事人.身份证性别
        when: "当事人类型 != '单位'"
      - source: 询问笔录当事人.被询问人民族
        target: 证据复制（提取）单当事人.身份证民族
        when: "当事人类型 != '单位'"
      - source: 询问笔录当事人.被询问人证件
        target: 证据复制（提取）单当事人.身份证号
        when: "当事人类型 != '单位'"
      - source: 询问笔录当事人.被询问人住址
        target: 证据复制（提取）单当事人.身份证住址
        when: "当事人类型 != '单位'"
      - source: 询问笔录.询问时间
        target: 证据复制（提取）单.复制时间
        method: fuzzy
      - source: 询问笔录当事人.被询问人经营地址
        target: 证据复制（提取）单.许可证经营场所
        when: "当事人类型 != '个人'"
    messages:
      pass: 被询问人基本情况、询问时间地点记录完整准确。
      fail: 记录不完整或不准确，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十五条
    type: deterministic
  - rule_id: JZ-XW-006
    name: 被询问人拒绝签署处理合规性
    desc: 检查被询问人拒绝签名时是否有情况说明记录
    risk: medium
    score: 10
    scope:
    - 询问笔录
    stages:
    - id: '1'
      check: required
      field: 询问笔录.被询问人签名
    - id: '2'
      check: required
      field: 询问笔录.拒绝签名说明
    logic: 1 OR 2
    messages:
      pass: 被询问人已签署或已记载拒绝情况。
      fail: 被询问人未签署且未记录情况说明，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十五条
    type: deterministic
- group: JZG-LA
  rules:
  - rule_id: JZ-LA-001
    name: 当事人基本情况记载完整、准确
    desc: 若当事人姓名、有效证件号码和地址未记载或与身份证中信息不一致，则扣分。
    risk: medium
    score: 10
    scope:
    - 立案报告表
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: required
      fields:
      - 立案报告表.单位名称
      - 立案报告表.单位法代
      - 立案报告表.单位电话
      - 立案报告表.单位地址
    - id: '2'
      check: required
      fields:
      - 立案报告表.个人姓名
      - 立案报告表.个人性别
      - 立案报告表.个人年龄
      - 立案报告表.个人民族
      - 立案报告表.个人证件
      - 立案报告表.个人电话
      - 立案报告表.个人住址
    - id: '3'
      check: match
      pairs:
      - source: 立案报告表.个人姓名
        target: 证据复制（提取）单当事人.身份证姓名
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人性别
        target: 证据复制（提取）单当事人.身份证性别
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人民族
        target: 证据复制（提取）单当事人.身份证民族
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人住址
        target: 证据复制（提取）单当事人.身份证住址
        when: "当事人类型 != '单位'"
      - source: 立案报告表.个人证件
        target: 证据复制（提取）单当事人.身份证号
        when: "当事人类型 != '单位'"
    - id: '4'
      check: match
      pairs:
      - source: 立案报告表.单位名称
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 立案报告表.单位法代
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 立案报告表.单位地址
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
    - id: '5'
      check: match
      pairs:
      - source: 立案报告表.个人姓名
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 立案报告表.个人住址
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
    - id: '6'
      check: ai
      prompt: '请根据以下信息判断案件类型（个人案件或单位案件），并评查当事人基本情况是否记载完整。


        当事人-单位-名称: {{立案报告表.单位名称}}

        当事人-单位-法定代表人（负责人）: {{立案报告表.单位法代}}

        当事人-个人（个体工商户）-姓名: {{立案报告表.个人姓名}}

        当事人-个人（个体工商户）-性别: {{立案报告表.个人性别}}

        当事人-个人（个体工商户）-年龄: {{立案报告表.个人年龄}}

        当事人-个人（个体工商户）-民族: {{立案报告表.个人民族}}

        当事人-个人（个体工商户）-证件类型及号码: {{立案报告表.个人证件}}

        当事人-个人（个体工商户）-联系电话: {{立案报告表.个人电话}}

        当事人-个人（个体工商户）-住址: {{立案报告表.个人住址}}


        判断逻辑：

        1. 如果单位-名称为空或为"/"，且个人-姓名不为空，则这是个人（个体工商户）案件

        2. 对于个人案件：检查个人字段（姓名、性别、年龄、民族、证件类型及号码、联系电话、住址）是否都不为空——

        3. 如果单位-名称有实际值（非空、非"/"）

        '
    logic: (1 AND 4) OR 6
    messages:
      pass: 当事人基本情况记录完整，与身份证信息一致。
      fail: 当事人基本情况记录有误或缺失，请核对。
    references_laws:
    - 《中华人民共和国烟草专卖法》第三十八条
    type: ai_rule
  - rule_id: JZ-LA-002
    name: 案由、发案时间和发案地点记载准确性-有无
    desc: 若案由、发案时间和发案地点未记载或错误记载，则扣分。
    risk: medium
    score: 10
    scope:
    - 立案报告表
    stages:
    - id: '1'
      check: required
      field: 立案报告表.案由
    messages:
      pass: 案由、发案时间和发案地点记录准确。
      fail: 案由、发案时间和发案地点记录有误或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十四条
    type: deterministic
  - rule_id: JZ-LA-003
    name: 案件来源有无一致性校验
    desc: 若三处文档中的案件来源信息不一致或者存在未填写的情况，则扣分。
    risk: medium
    score: 5
    scope:
    - 案件处理审批表
    - 案件调查终结报告
    - 立案报告表
    stages:
    - id: '1'
      check: required
      fields:
      - 立案报告表.案件来源
      - 案件处理审批表.案件来源
      - 案件调查终结报告.案件来源
    - id: '2'
      check: match
      pairs:
      - source: 立案报告表.案件来源
        target: 案件处理审批表.案件来源
      - source: 案件处理审批表.案件来源
        target: 案件调查终结报告.案件来源
        # 案件来源是开放词汇（投诉举报/群众举报/电话举报/来电举报/上级交办…
        # 无穷枚举），不用 canonicalize 字典维护。字面不等时走 rescue L1
        # match 做语义等价判定。
    messages:
      pass: 案件来源完整
      fail: 没有记载案件来源或案件来源与其他文书不一致，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十四条
    type: deterministic
  - rule_id: JZ-LA-004
    name: 案由、发案时间和发案地点记载准确性-一致
    desc: 检查立案报告表案发时间/地点与现场笔录检查时间/地点是否一致
    risk: medium
    score: 10
    scope:
    - 现场笔录
    - 立案报告表
    stages:
    - id: '1'
      check: required
      fields:
      - 立案报告表.案发时间
      - 立案报告表.案发地点
      - 现场笔录.检查时间
      - 现场笔录.检查地点
    - id: '2'
      check: match
      pairs:
      - source: 立案报告表.案发时间
        target: 现场笔录.检查时间
        method: substring
    - id: '3'
      check: match
      pairs:
      - source: 现场笔录.检查地点
        target: 立案报告表.案发地点
    messages:
      pass: 案由、发案时间和发案地点记录准确。
      fail: 案由、发案时间和发案地点记录有误或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
  - rule_id: JZ-LA-005
    name: 承办人和承办部门意见
    desc: 承办人栏无描述、无签名、承办部门处无描述、无签名，出现任一一项则扣分。
    risk: medium
    score: 5
    scope:
    - 立案报告表
    stages:
    - id: '1'
      check: required
      fields:
      - 立案报告表.承办部门意见
      - 立案报告表.承办部门日期
      - 立案报告表.承办人意见
      - 立案报告表.承办人日期
      - 立案报告表.承办部门签名
      - 立案报告表.承办人签名2
      - 立案报告表.承办人签名1
    messages:
      pass: 承办人和承办部门意见及签名完整。
      fail: 承办人和承办部门意见及签名存在缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十四条
    type: deterministic
  - rule_id: JZ-LA-006
    name: 行政机关负责人明确意见、签字和日期
    desc: 若"负责人意见"栏中存在"不同意"或"不同意和意见描述"，留空则扣分。；负责人意见栏无描述、无签名、无日期，出现任一一项则扣分。
    risk: medium
    score: 10
    scope:
    - 立案报告表
    stages:
    - id: '1'
      check: required
      fields:
      - 立案报告表.负责人意见
      - 立案报告表.负责人签名
    messages:
      pass: 行政机关负责人意见、签字和日期完整。
      fail: 行政机关负责人意见、签字和日期缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
  - rule_id: JZ-LA-007
    name: 立案文书完整性检查（签名）
    desc: 检查立案报告表负责人意见处是否有签名
    risk: medium
    score: 10
    scope:
    - 立案报告表
    stages:
    - id: '1'
      check: required
      field: 立案报告表.负责人签名
    messages:
      pass: 文档检查通过，符合规范要求。
      fail: 文档存在以下问题，请修改后重新提交。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
  - rule_id: JZ-LA-008
    name: 案件情况清晰
    desc: 通过AI检查立案报告表案由和案情摘要表述是否清晰；若案件情况描述中，需出现案件时间、货物名称、（案由描述+条款引用）中所有信息，未出现任一一项则扣分。
    risk: low
    score: 1
    scope:
    - 立案报告表
    stages:
    - id: '1'
      check: ai
      prompt: |
        检查 案情摘要 是否覆盖以下 4 项要素（任一缺失才扣分）：
        1. 案件时间（检查/发案时间）
        2. 涉案货物名称或品种
        3. 案由描述（违法行为的事实陈述）
        4. 相关条款或法律依据的引用

        案由：{{立案报告表.案由}}
        案情摘要：{{立案报告表.案情摘要}}

        判定规则：
        - 4 项要素齐全 → pass
        - 有缺项 → fail
        - **不要**对文字风格、段落重复、句式冗余等格式问题扣分，只看内容是否齐全。
    messages:
      pass: 案件情况描述清晰。
      fail: 案件情况记录不清晰或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十四条
    type: ai_rule
- group: JZG-ZJ
  rules:
  - rule_id: JZ-ZJ-001
    name: 调查终结报告文件校验
    desc: 若没有调查终结报告，则扣分
    risk: medium
    score: 10
    scope:
    - 案件调查终结报告
    stages:
    - id: '1'
      check: required
      field: 案件调查终结报告.案由
    messages:
      pass: 存在完整的调查终结报告。
      fail: 缺少调查终结报告，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
  - rule_id: JZ-ZJ-002
    name: 案由、立案时间和当事人基本情况记载
    desc: 若当事人信息与提取出的信息不一致，则扣分。
    risk: medium
    score: 5
    scope:
    - 案件调查终结报告
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: required
      fields:
      - 案件调查终结报告.案件来源
      - 案件调查终结报告.案由
      - 案件调查终结报告.立案日期
      - 案件调查终结报告.单位名称
      - 案件调查终结报告.单位法代
      - 案件调查终结报告.单位电话
      - 案件调查终结报告.单位地址
    - id: '2'
      check: required
      fields:
      - 案件调查终结报告.案件来源
      - 案件调查终结报告.案由
      - 案件调查终结报告.立案日期
      - 案件调查终结报告.个人姓名
      - 案件调查终结报告.个人性别
      - 案件调查终结报告.个人年龄
      - 案件调查终结报告.个人民族
      - 案件调查终结报告.个人电话
      - 案件调查终结报告.个人证件
      - 案件调查终结报告.个人住址
    - id: '3'
      check: match
      pairs:
      - source: 案件调查终结报告.单位名称
        target: 证据复制（提取）单.执照名称
        when: "当事人类型 != '个人'"
      - source: 案件调查终结报告.单位法代
        target: 证据复制（提取）单.执照法代
        when: "当事人类型 != '个人'"
      - source: 案件调查终结报告.单位地址
        target: 证据复制（提取）单.执照住所
        when: "当事人类型 != '个人'"
    - id: '4'
      check: match
      pairs:
      - source: 案件调查终结报告.个人姓名
        target: 证据复制（提取）单当事人.身份证姓名
        when: "当事人类型 != '单位'"
      - source: 案件调查终结报告.个人性别
        target: 证据复制（提取）单当事人.身份证性别
        when: "当事人类型 != '单位'"
      - source: 案件调查终结报告.个人民族
        target: 证据复制（提取）单当事人.身份证民族
        when: "当事人类型 != '单位'"
      - source: 案件调查终结报告.个人住址
        target: 证据复制（提取）单当事人.身份证住址
        when: "当事人类型 != '单位'"
      - source: 案件调查终结报告.个人证件
        target: 证据复制（提取）单当事人.身份证号
        when: "当事人类型 != '单位'"
    logic: (1 AND 3) OR (2 AND 4)
    messages:
      pass: 当事人基本情况记载准确。请检查案后及时间是否正确。
      fail: 记载不准确或缺失，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
  - rule_id: JZ-ZJ-003
    name: 当事人基本情况记载-一致
    desc: 检查调查终结报告中当事人基本信息与身份证信息是否一致
    risk: medium
    score: 1
    scope:
    - 案件调查终结报告
    - 证据复制（提取）单
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 案件调查终结报告.个人姓名
        target: 证据复制（提取）单当事人.身份证姓名
      - source: 案件调查终结报告.个人性别
        target: 证据复制（提取）单当事人.身份证性别
      - source: 案件调查终结报告.个人民族
        target: 证据复制（提取）单当事人.身份证民族
      - source: 案件调查终结报告.个人住址
        target: 证据复制（提取）单当事人.身份证住址
      - source: 案件调查终结报告.个人证件
        target: 证据复制（提取）单当事人.身份证号
    messages:
      pass: 文档检查通过，符合规范要求。
      fail: 文档存在以下问题，请修改后重新提交。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
  - rule_id: JZ-ZJ-004
    name: 案件调查终结报告承办人及承办部门负责人签字日期
    desc: 若没有承办人及承办人负责人签字、或者没有签字日期，则扣分。
    risk: medium
    score: 5
    scope:
    - 案件调查终结报告
    stages:
    - id: '1'
      check: required
      fields:
      - 案件调查终结报告.处理意见日期
      - 案件调查终结报告.处理意见承办人签名1
      - 案件调查终结报告.处理意见承办人签名2
    messages:
      pass: 承办人及承办部门负责人已签字并签署日期。
      fail: 缺少签字或日期，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
- group: JZG-CL
  rules:
  - rule_id: JZ-CL-001
    name: 法制部门或法制员意见明确性
    desc: 若法制部门意见栏无文字描述内容，则扣分。
    risk: medium
    score: 10
    scope:
    - 案件处理审批表
    stages:
    - id: '1'
      check: required
      fields:
      - 案件处理审批表.法制部门意见
      - 案件处理审批表.法制部门日期
      - 案件处理审批表.法制部门审核人签名
      - 案件处理审批表.法制部门负责人签名
    messages:
      pass: 法制部门或法制员意见明确。
      fail: 法制部门或法制员意见缺失或不明确，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十八条
    type: deterministic
  - rule_id: JZ-CL-002
    name: 案件处理审批表承办人意见和签名
    desc: 若承办人意见栏中无文字内容或无签名日期，则扣分。
    risk: medium
    score: 5
    scope:
    - 案件处理审批表
    stages:
    - id: '1'
      check: required
      fields:
      - 案件处理审批表.承办人意见
      - 案件处理审批表.承办人日期
      - 案件处理审批表.承办部门意见
      - 案件处理审批表.承办部门日期
      - 案件处理审批表.承办部门签名
      - 案件处理审批表.承办人签名1
      - 案件处理审批表.承办人签名2
    messages:
      pass: 承办人意见和签名完整。
      fail: 缺少承办人意见或签名，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十八条
    type: deterministic
  - rule_id: JZ-CL-003
    name: 案件处理审批表负责人审批意见明确性
    desc: 检查案件处理审批表负责人审批意见内容和日期是否完整
    risk: medium
    score: 10
    scope:
    - 案件处理审批表
    stages:
    - id: '1'
      check: required
      fields:
      - 案件处理审批表.负责人日期
      - 案件处理审批表.负责人意见
      - 案件处理审批表.负责人签名
    messages:
      pass: 行政机关负责人审批意见明确，签名和审批时间规范。
      fail: 审批意见不明确或签名审批时间不规范，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十七条
    type: deterministic
- group: JZG-ZG
  rules:
  - rule_id: JZ-ZG-001
    name: 行政处罚事先告知书送达
    desc: 若送达方式为"直接送达"，则收件人签名或盖章栏无信息，则扣分。 若送达方式为"邮寄送达"，则校验证据复制（提取）中是否有邮件回执，若不存在，则扣分。
    risk: medium
    score: 10
    scope:
    - 证据复制（提取）单
    - 送达回证
    stages:
    - id: '1'
      check: contains
      field: 送达回证.送达方式
      value: 直接送达
    - id: '2'
      check: contains
      field: 送达回证.送达方式
      value: 邮寄送达
    - id: '3'
      check: required
      field: 证据复制（提取）单.邮件回执
    logic: 1 OR (2 AND 3)
    messages:
      pass: 事先告知书已送达当事人。
      fail: 事先告知书可能未送达当事人，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第六十一条
    type: deterministic
- group: JZG-ZX
  rules:
  - rule_id: JZ-ZX-001
    name: 罚款、没收违法所得处罚执行规范性
    desc: 若不存在《缴款凭证》（含《广东省非税收入一般缴款书(电子)》及其收款证明等任何形式的缴款凭证），则扣分。若缴款书中金额与处罚决定书中金额总计不一致，则扣分。
    risk: medium
    score: 10
    scope:
    - 处罚决定书
    - 缴款凭证
    stages:
    - id: '1'
      check: required
      fields:
      - 缴款凭证.金额
      - 缴款凭证.收入项目
      - 处罚决定书.罚款项目
      - 处罚决定书.罚款基数
      - 处罚决定书.罚款比例
      - 处罚决定书.罚款总额
    - id: '2'
      check: ai
      prompt: '请分析{{处罚决定书.罚款项目}}对应{{处罚决定书.罚款基数}}乘{{处罚决定书.罚款比例}}，计算并校对与{{处罚决定书.罚款总额}}一致，同时{{处罚决定书.罚款总额}}与{{缴款凭证.金额}}需一致

        '
    messages:
      pass: 罚款、没收违法所得处罚已开具缴款书，有银行缴费收款证明，且与处罚决定书一致。
      fail: 未开具缴款书或无银行缴费证明，或与处罚决定书不一致，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第六十六条、第六十七条
    type: ai_rule
    activate_if: 缴款凭证 != None
  - rule_id: JZ-ZX-002
    name: 发还当事人物品与先行登记保存物品-一致
    desc: 若两份文件表格中，数量不一致，则涉案物品返还清单中备注一列需要有内容，没有内容则扣分。
    risk: medium
    score: 10
    scope:
    - 涉案物品返还清单
    - 证据先行登记保存批准书
    stages:
    - id: '1'
      check: ai
      prompt: '{{证据先行登记保存批准书.表格品规}}和{{涉案物品返还清单.返还明细}}表格中的物品和数量应当一致，若 涉案物品返还清单表格中的具体的品种规格和数量行列数据不一致，则通过涉案物品返还清单的备注的内容进一步判断是否一致（即数量+损耗数量）

        '
    messages:
      pass: 发还物品与先行登记保存物品一致，或不一致时已说明原因。
      fail: 发还物品与先行登记保存物品不一致且未说明原因，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: ai_rule
  - rule_id: JZ-ZX-003
    name: 损耗费用返还合规性
    desc: 若签名或盖章不存在，或日期未填写，则扣分。
    risk: medium
    score: 10
    scope:
    - 卷宗封面
    - 涉案物品返还清单
    stages:
    - id: '1'
      check: contains
      field: 卷宗封面.处理结果
      value: 销毁
    - id: '2'
      check: required
      field: 卷宗封面.处理结果
    - id: '3'
      check: required
      fields:
      - 涉案物品返还清单.日期
      - 涉案物品返还清单.补偿信息
      - 涉案物品返还清单.返还确认
      - 涉案物品返还清单.接收人签名
    - id: '4'
      check: required
      fields:
      - 涉案物品返还清单.日期
      - 涉案物品返还清单.接收单位印章
      - 涉案物品返还清单.补偿信息
      - 涉案物品返还清单.返还确认
    logic: (1 AND 2) OR ((NOT 1) AND 2 AND (3 OR 4))
    messages:
      pass: 已全部返还留样卷烟或鉴别检验损耗费用。
      fail: 未全部返还，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十六条
    type: deterministic
    activate_if: 涉案物品返还清单 != None or (卷宗封面 != None and 卷宗封面.处理结果 != None)
  - rule_id: JZ-ZX-004
    name: 缴款凭证填写规范性
    desc: 若处罚中有没收而文件中不存在没收收据，则扣分。
    risk: medium
    score: 5
    scope:
    - 处罚决定书
    - 缴款凭证
    stages:
    - id: '1'
      check: required
      fields:
      - 处罚决定书.罚款说明
      - 缴款凭证.备注
    messages:
      pass: 存在缴款凭证，请进一步确认填写是否规范。
      fail: 未找到缴款凭证，请核对文书是否齐全
    references_laws:
    - 《中华人民共和国行政处罚法》第六十七条
    type: deterministic
    activate_if: 缴款凭证 != None
- group: JZG-JA
  rules:
  - rule_id: JZ-JA-001
    name: 当事人名称、违法事实和处罚内容记载准确性
    desc: 若两份文书中的当事人名称不一致，则扣分。
    risk: medium
    score: 10
    scope:
    - 处罚决定书
    - 结案报告表
    stages:
    - id: '1'
      check: match
      pairs:
      - source: 结案报告表.当事人
        target: 处罚决定书.当事人
    messages:
      pass: 当事人名称、处罚内容记载一致，请进一步检查违法事实是否一致。
      fail: 当事人记载不准确，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十九条
    type: deterministic
  - rule_id: JZ-JA-002
    name: 行政处罚决定的执行结果记载
    desc: 若执行情况栏后不存在描述内容，则扣分。
    risk: medium
    score: 10
    scope:
    - 结案报告表
    stages:
    - id: '1'
      check: required
      field: 结案报告表.执行情况
    messages:
      pass: 行政处罚决定的执行结果存在对应记载内容。
      fail: 执行结果记载不准确，请核对。
    references_laws:
    - 《中华人民共和国行政处罚法》第七十一条
    type: deterministic
  - rule_id: JZ-JA-003
    name: 结案意见、签名及其时间填写规范性
    desc: 若承办人、承办机构负责人和办案单位负责人的意见、签名及其时间任意一项未找到，则扣分。
    risk: medium
    score: 10
    scope:
    - 结案报告表
    stages:
    - id: '1'
      check: required
      fields:
      - 结案报告表.承办人结案理由
      - 结案报告表.承办人结案日期
      - 结案报告表.承办部门意见
      - 结案报告表.承办部门日期
      - 结案报告表.负责人意见
      - 结案报告表.负责人日期
      - 结案报告表.负责人签名
      - 结案报告表.承办人结案签名1
      - 结案报告表.承办人结案签名2
      - 结案报告表.承办部门签名
    messages:
      pass: 意见、签名及其时间填写规范。
      fail: 填写不规范，请核对并更正。
    references_laws:
    - 《中华人民共和国行政处罚法》第五十四条
    type: deterministic
  - rule_id: JZ-JA-004
    name: 结案后按期立卷归档
    desc: 通过AI检查结案后是否在10日内立卷归档
    risk: medium
    score: 10
    scope:
    - 卷内备考表
    - 结案报告表
    stages:
    - id: '1'
      check: ai
      prompt: '请你判断{{卷内备考表.立卷时间}}与{{结案报告表.负责人日期}}是否相差小于10天

        '
    messages:
      pass: 结案后已按期立卷归档。
      fail: 结案后未按期立卷归档，请核对。
    references_laws:
    - 《烟草专卖行政处罚程序规定》
    type: ai_rule
