保存规则库 YAML 维护改造进展

This commit is contained in:
2026-04-28 22:00:00 +08:00
parent 7b86293263
commit dce5ac0c9a
96 changed files with 36801 additions and 615 deletions
@@ -0,0 +1,630 @@
metadata:
type_id: yc.ea_pme.行政卷宗.行政许可.变更
name: 烟草专卖零售许可证-变更办理
version: '1.0'
last_updated: '2026-04-20'
parent: yc.ea_pme.行政卷宗.行政许可
inherits_from:
- base.common
- base.administrative_case
classification_keywords:
- 变更
- 烟草专卖零售许可证
- 变更申请
description: '烟草专卖零售许可证变更办理卷宗审核。
覆盖:申请材料、受理、实地核查、审批决定、许可证颁发、送达、归档。
EA-PME 版本:基于原始行政许可_变更规则融合 executive_permission_evaluation_points.txt 评查点后重写为 code
规则。'
tags:
- manual_only
sub_documents:
- 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: date
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: verbatim
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: verbatim
desc: 申请人基本信息→经营地址
- name: 有效期限
type: verbatim
desc: 申请人基本信息→有效期限
- name: 统一社会信用代码
type: uscc
desc: 申请人基本信息→统一社会信用代码/注册号
- id: 委托书
name: 授权委托书
required: conditional
required_if: 烟草专卖零售许可证许可类事项申请表.委托代理人 != null
classifier:
title_patterns:
- 委托书
- 授权委托书
keywords:
- 兹委托
- 被授权委托人
min_score: 0.5
extract:
- group: 基本信息
fields:
- 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: verbatim
desc: 类型
- name: 经营者
type: verbatim
desc: 经营者
- name: 经营场所
type: verbatim
desc: 经营场所
- name: 注册日期
type: date
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: enum
allowed:
-
-
desc: 性别
- name: 民族
type: verbatim
desc: 民族
- name: 住址
type: verbatim
desc: 住址
- name: 身份证号
type: chinese-id
desc: 公民身份号码
- id: 烟草专卖零售许可证受理单
name: 烟草专卖零售许可证受理单
required: true
classifier:
title_patterns:
- 烟草专卖零售许可证受理单
- 受理单
keywords:
- 签收时间
- 承诺办结时限
min_score: 0.5
extract:
- group: 基本信息
fields:
- name: 签收时间
type: date
desc: 签收时间
- name: 承诺办结时限
type: verbatim
desc: 说明→承诺办结时限
- id: 烟草专卖零售许可证实地核查记录表
name: 烟草专卖零售许可证实地核查记录表
required: true
classifier:
title_patterns:
- 烟草专卖零售许可证实地核查记录表
- 实地核查记录表
keywords:
- 核查人员
- 被核查方
min_score: 0.5
extract:
- group: 基本信息
fields:
- name: 标题
type: verbatim
desc: 标题
- group: 签名
fields:
- name: 核查人员签名1
type: enum
allowed:
-
-
desc: 核查人员→签名1 输出 有/无
- name: 核查人员签名2
type: enum
allowed:
-
-
desc: 核查人员→签名2 输出 有/无
- 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: date
desc: 正文→日期
- name: 落款日期
type: date
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: verbatim
desc: 送达内容→送达文书名称
- name: 送达文书编号
type: verbatim
desc: 送达内容→送达文书编号
- name: 送达地点
type: verbatim
desc: 送达地点
- name: 送达日期
type: date
desc: 送达日期
- group: 签收
fields:
- name: 收件人签名
type: enum
allowed:
-
-
desc: 受送达人(签字或盖章)→签名 输出 有/无
- name: 收件人盖章
type: enum
allowed:
-
-
desc: 受送达人(签字或盖章)→盖章 输出 有/无
- group: 送达人
fields:
- 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: string
desc: 挂号信回执正文
- id: 公告
name: 公告
required: true
classifier:
title_patterns:
- 公告
keywords:
- 公告编号
min_score: 0.5
extract:
- group: 基本信息
fields:
- name: 编号
type: verbatim
desc: 公告编号
- id: 延长审批期限批准书
name: 延长审批期限批准书
required: true
classifier:
title_patterns:
- 延长审批期限批准书
keywords:
- 延长审批
- 批准
min_score: 0.5
extract:
- group: 基本信息
fields:
- 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: verbatim
desc: 副本标识(是否为副本)
- id: 卷内备考表
name: 卷内备考表
required: true
classifier:
title_patterns:
- 卷内备考表
keywords:
- 立卷时间
min_score: 0.5
extract:
- group: 基本信息
fields:
- name: 立卷时间
type: date
desc: 立卷时间
rules:
- group: 申请与受理
rules:
- rule_id: JZ-XK-003
name: 受理通知书日期记载准确性
desc: 融合 申请与受理 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\napply_type = str(fields.get('卷宗封面.申请类型') or '').strip()\nif ('注销' in\
\ apply_type) or ('收回' in apply_type):\n return True\nreturn present('烟草专卖零售许可证受理单.签收时间')\n"
error: 受理单签收时间缺失或未能识别
logic: '1'
messages:
pass: 受理通知书日期记载完整。
fail: 受理通知书日期记载不准确,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第二十一条
- 《烟草专卖许可证管理办法》第二十二条
type: deterministic
- rule_id: JZ-XK-009
name: 代理人授权委托书文件校验
desc: 融合 申请与受理 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\nagent = str(fields.get('烟草专卖零售许可证许可类事项申请表.委托代理人') or '').strip()\n\
contact_ok = present('烟草专卖零售许可证许可类事项申请表.联系人')\nif not contact_ok:\n return\
\ False\nif not agent:\n return True\nreturn present('委托书.被授权委托人')\n"
error: 委托代理场景下缺少授权委托书或被授权委托人信息
logic: '1'
messages:
pass: 找到对应的授权委托书。
fail: 未出具授权委托书,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第九条
- 《烟草专卖许可证管理办法》第四十一条
type: deterministic
- rule_id: JZ-XK-011
name: 申请人主体资格材料完整性
desc: 融合 申请与受理 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\napply_type = str(fields.get('卷宗封面.申请类型') or '').strip()\nbase_required\
\ = ['卷宗封面.申请类型', '卷宗封面.行政决定']\nif not all(present(name) for name in base_required):\n\
\ return False\nif any(word in apply_type for word in ['补办', '歇业', '停业',\
\ '恢复营业']):\n required_fields = ['烟草专卖零售许可证许可类事项申请表.企业名称', '烟草专卖零售许可证许可类事项申请表.经营地址',\
\ '烟草专卖零售许可证许可类事项申请表.经营者', '烟草专卖零售许可证许可类事项申请表.证件号', '营业执照.统一社会信用代码', '营业执照.注册日期',\
\ '营业执照.类型', '营业执照.经营场所', '营业执照.经营者', '个体工商户经营者、法定代表人或其他组织负责人的身份证明.身份证号',\
\ '个体工商户经营者、法定代表人或其他组织负责人的身份证明.姓名', '营业执照.名称']\n return all(present(name)\
\ for name in required_fields)\nif any(word in apply_type for word in ['新办',\
\ '延续', '变更']):\n required_fields = ['烟草专卖零售许可证许可类事项申请表.经营地址', '烟草专卖零售许可证许可类事项申请表.经营者',\
\ '烟草专卖零售许可证许可类事项申请表.证件号', '烟草专卖零售许可证许可类事项申请表.证件住址', '烟草专卖零售许可证许可类事项申请表.企业类型',\
\ '烟草专卖零售许可证许可类事项申请表.统一社会信用代码', '烟草专卖零售许可证许可类事项申请表.有效期限', '烟草专卖零售许可证许可类事项申请表.企业名称',\
\ '烟草专卖零售许可证许可类事项申请表.群体类型', '营业执照.名称', '营业执照.统一社会信用代码', '营业执照.注册日期', '营业执照.类型',\
\ '营业执照.经营场所', '营业执照.经营者', '个体工商户经营者、法定代表人或其他组织负责人的身份证明.姓名', '个体工商户经营者、法定代表人或其他组织负责人的身份证明.性别',\
\ '个体工商户经营者、法定代表人或其他组织负责人的身份证明.民族', '个体工商户经营者、法定代表人或其他组织负责人的身份证明.住址', '个体工商户经营者、法定代表人或其他组织负责人的身份证明.身份证号']\n\
\ return all(present(name) for name in required_fields)\nreturn True\n"
error: 主体资格材料不完整
logic: '1'
messages:
pass: 申请人主体资格材料齐全,请进一步检查准确性。
fail: 申请人主体资格材料不齐全,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第十三条
- 《烟草专卖许可证管理办法》第二十一条
type: deterministic
- group: 审查与决定
rules:
- rule_id: JZ-XK-005
name: 烟草专卖许可证颁发合规性
desc: 融合 审查与决定 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\napply_type = str(fields.get('卷宗封面.申请类型') or '').strip()\ndecision =\
\ str(fields.get('卷宗封面.行政决定') or '').strip()\nif not present('卷宗封面.申请类型')\
\ or not present('卷宗封面.行政决定'):\n return False\nif any(word in apply_type\
\ for word in ['新办', '补办', '延续', '变更']) and ('准予' in decision):\n copy_text\
\ = str(fields.get('烟草专卖零售许可证(正、副本).副本') or '').strip()\n return present('烟草专卖零售许可证(正、副本).许可证号')\
\ and ('副本' in copy_text or copy_text == '有')\nreturn True\n"
error: 应颁发正副本的案件未识别到完整许可证信息
logic: '1'
messages:
pass: 已颁发加盖印章的烟草专卖许可证正副本。
fail: 未全部颁发加盖印章的烟草专卖许可证,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第二十三条
- 《烟草专卖许可证管理办法》第二十四条
type: deterministic
- rule_id: JZ-XK-006
name: 实地核查执法人员人数合规性
desc: 融合 审查与决定 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\ndef yes(name):\n return str(fields.get(name) or '').strip() == '有'\n\
apply_type = str(fields.get('卷宗封面.申请类型') or '').strip()\nif not apply_type:\n\
\ return False\nneed_check = any(word in apply_type for word in ['新办',\
\ '延续', '变更', '恢复营业', '歇业'])\nif not need_check:\n return True\nreturn\
\ present('烟草专卖零售许可证实地核查记录表.标题') and yes('烟草专卖零售许可证实地核查记录表.核查人员签名1') and yes('烟草专卖零售许可证实地核查记录表.核查人员签名2')\
\ and yes('烟草专卖零售许可证实地核查记录表.被核查方签名')\n"
error: 需实地核查的案件缺少核查记录表或签名人数不足
logic: '1'
messages:
pass: 无需实地核查或实地核查执法人员人数符合要求。
fail: 缺少实地核查记录表或实地核查执法人员人数不足,应至少有两名执法人员,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第三十八条
type: deterministic
- group: 期限与程序履行
rules:
- rule_id: JZ-XK-001
name: 送达回证信息完整性
desc: 融合 期限与程序 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\ndef yes(name):\n return str(fields.get(name) or '').strip() == '有'\n\
base_required = ['送达回证.受送达人', '送达回证.送达文书名称', '送达回证.送达文书编号', '送达回证.送达日期', '送达回证.送达地点']\n\
if not all(present(name) for name in base_required):\n return False\nif\
\ not yes('送达回证.送达人签名1') or not yes('送达回证.送达人签名2'):\n return False\nmethod\
\ = str(fields.get('送达回证.送达方式') or '').strip()\nif any(word in method for\
\ word in ['直接送达', '代收送达', '留置送达']):\n return yes('送达回证.收件人签名') or yes('送达回证.收件人盖章')\n\
if '公告送达' in method:\n return present('公告.编号')\nif '挂号信' in method:\n \
\ return present('挂号信回执.正文')\nreturn False\n"
error: 送达回证主数据或方式对应附件不完整
logic: '1'
messages:
pass: 送达回证填写完整。
fail: 送达回证填写不完整,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第二十三条
- 《烟草专卖许可证管理办法》第六十一条
type: deterministic
- rule_id: JZ-XK-004
name: 烟草专卖许可证颁发时效合规性
desc: 融合 期限与程序 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "apply_type = str(fields.get('卷宗封面.申请类型') or '').strip()\nif not apply_type:\n\
\ return False\nif '收回' in apply_type:\n return True\ndecision_date\
\ = parse_date(fields.get('许可决定书.落款日期'))\nserved_date = parse_date(fields.get('送达回证.送达日期'))\n\
if decision_date is None or served_date is None:\n return False\ndelta\
\ = (served_date - decision_date).days\nreturn delta >= 0 and delta <= 10\n"
error: 许可证颁发或送达时效超限
logic: '1'
messages:
pass: 烟草专卖许可证已在规定时效内颁发。
fail: 烟草专卖许可证颁发超出规定时效,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第二十三条
type: deterministic
- rule_id: JZ-XK-008
name: 延长审批期限告知文件校验
desc: 融合 期限与程序 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "def present(name):\n return fields.get(name) not in (None, '', [],\
\ {})\napply_type = str(fields.get('卷宗封面.申请类型') or '').strip()\nif not apply_type:\n\
\ return False\nif ('注销' in apply_type) or ('收回' in apply_type):\n return\
\ True\nlimit_text = str(fields.get('烟草专卖零售许可证受理单.承诺办结时限') or '').strip()\n\
body_date = parse_date(fields.get('许可决定书.正文日期'))\nsign_date = parse_date(fields.get('许可决定书.落款日期'))\n\
if not limit_text or body_date is None or sign_date is None:\n return False\n\
digits = ''.join(ch for ch in limit_text if ch.isdigit())\nif not digits:\n\
\ return False\nlimit_days = int(digits)\ndelta = (sign_date - body_date).days\n\
if delta <= limit_days:\n return True\nreturn present('延长审批期限批准书.标题')\n"
error: 审批时长超出承诺办结时限且缺少延长审批期限批准书
logic: '1'
messages:
pass: 文档检查通过,符合规范要求。
fail: 文档存在以下问题,请修改后重新提交。
references_laws:
- 《烟草专卖许可证管理办法》第二十三条
type: deterministic
- group: 卷宗档案管理
rules:
- rule_id: JZ-XK-002
name: 行政许可案件归档合规性
desc: 融合 卷宗档案 组下对应评查点,使用 code 规则进行确定性判断。
risk: medium
score: 10
stages:
- id: '1'
check: code
lang: python
code: "filing_date = parse_date(fields.get('卷内备考表.立卷时间'))\ndecision_date = parse_date(fields.get('卷宗封面.行政决定日期'))\n\
if filing_date is None or decision_date is None:\n return False\ndelta\
\ = (filing_date - decision_date).days\nreturn delta >= 0 and delta <= 60\n"
error: 立卷时间早于行政决定日期或归档超期
logic: '1'
messages:
pass: 行政许可案件已及时归档并制作案卷。
fail: 行政许可案件未及时归档,请核对。
references_laws:
- 《烟草专卖许可证管理办法》第三十八条
type: deterministic