chore: initial commit — leaudit-platform project skeleton

17-table PostgreSQL schema with full Chinese column comments,
FastAPI project structure (admin/common/modules),
DSL rule files, and schema migration scripts.
This commit is contained in:
wren
2026-04-27 16:48:22 +08:00
commit 535d97a70c
142 changed files with 25219 additions and 0 deletions
@@ -0,0 +1 @@
cases: []
+410
View File
@@ -0,0 +1,410 @@
metadata:
type_id: 行政卷宗.行政许可.歇业
name: 烟草专卖零售许可证-歇业办理
version: '1.0'
last_updated: '2026-04-18'
parent: 行政卷宗.行政许可
inherits_from: [base.common, base.administrative_case]
classification_keywords: [歇业, 烟草专卖零售许可证, 歇业申请]
description: '烟草专卖零售许可证歇业办理卷宗审核。
覆盖:申请材料、受理、实地核查、审批决定、许可证处理、送达、归档。
'
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: JZG-XK-SQ
rules:
- rule_id: JZ-XK-SQ-001
name: 代理人授权委托书文件校验
desc: 若未找到授权委托书,则扣分。
risk: medium
score: 10
scope: [烟草专卖零售许可证许可类事项申请表, 委托书]
stages:
- {id: '1', check: required, field: 烟草专卖零售许可证许可类事项申请表.委托代理人}
- {id: '2', check: required, field: 委托书.被授权委托人}
- {id: '3', check: required, field: 烟草专卖零售许可证许可类事项申请表.联系人}
logic: (3 AND (NOT 1)) OR (1 AND 2)
messages: {pass: 找到对应的授权委托书。, fail: 未出具授权委托书,请核对。}
references_laws: [《烟草专卖许可证管理办法》第九条, 《烟草专卖许可证管理办法》第四十一条]
type: deterministic
- rule_id: JZ-XK-SQ-002
name: 申请人主体资格材料完整性
desc: 若对应的资格材料文件不存在,则扣分。
risk: medium
score: 10
scope: [卷宗封面, 烟草专卖零售许可证许可类事项申请表, 营业执照, 个体工商户经营者、法定代表人或其他组织负责人的身份证明]
stages:
- {id: '1', check: contains, field: 卷宗封面.申请类型, any_of: [补办, 歇业, 停业, 恢复营业]}
- id: '2'
check: required
fields:
- 烟草专卖零售许可证许可类事项申请表.企业名称
- 烟草专卖零售许可证许可类事项申请表.经营地址
- 烟草专卖零售许可证许可类事项申请表.经营者
- 烟草专卖零售许可证许可类事项申请表.证件号
- 营业执照.统一社会信用代码
- 营业执照.注册日期
- 营业执照.类型
- 营业执照.经营场所
- 营业执照.经营者
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.身份证号
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.姓名
- 营业执照.名称
- {id: '3', check: contains, field: 卷宗封面.申请类型, any_of: [新办, 延续, 变更]}
- id: '4'
check: required
fields:
- 烟草专卖零售许可证许可类事项申请表.经营地址
- 烟草专卖零售许可证许可类事项申请表.经营者
- 烟草专卖零售许可证许可类事项申请表.证件号
- 烟草专卖零售许可证许可类事项申请表.证件住址
- 烟草专卖零售许可证许可类事项申请表.企业类型
- 烟草专卖零售许可证许可类事项申请表.统一社会信用代码
- 烟草专卖零售许可证许可类事项申请表.有效期限
- 烟草专卖零售许可证许可类事项申请表.企业名称
- 烟草专卖零售许可证许可类事项申请表.群体类型
- 营业执照.名称
- 营业执照.统一社会信用代码
- 营业执照.注册日期
- 营业执照.类型
- 营业执照.经营场所
- 营业执照.经营者
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.姓名
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.性别
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.民族
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.住址
- 个体工商户经营者、法定代表人或其他组织负责人的身份证明.身份证号
- {id: '5', check: required, fields: [卷宗封面.申请类型, 卷宗封面.行政决定]}
logic: ((1 AND 2) OR (3 AND 4) OR (NOT (1 AND 3))) AND 5
messages: {pass: 申请人主体资格材料齐全,请进一步检查准确性。, fail: 申请人主体资格材料不齐全,请核对。}
references_laws: [《烟草专卖许可证管理办法》第十三条, 《烟草专卖许可证管理办法》第二十一条]
type: deterministic
- group: JZG-XK-SL
rules:
- rule_id: JZ-XK-SL-001
name: 受理通知书日期记载准确性
desc: 若签收时间处没有完整手写年月日,则扣分。
risk: medium
score: 10
scope: [卷宗封面, 烟草专卖零售许可证受理单]
stages:
- {id: '1', check: contains, field: 卷宗封面.申请类型, all_of: [注销, 收回]}
- {id: '2', check: required, field: 烟草专卖零售许可证受理单.签收时间}
logic: ((NOT 1) AND 2) OR 1
messages: {pass: 受理通知书日期记载完整。, fail: 受理通知书日期记载不准确,请核对。}
references_laws: [《烟草专卖许可证管理办法》第二十一条, 《烟草专卖许可证管理办法》第二十二条]
type: deterministic
- group: JZG-XK-HC
rules:
- rule_id: JZ-XK-HC-001
name: 实地核查执法人员人数合规性
desc: 新办、延续、变更、恢复营业、歇业类许可需实地核查,核查记录表应至少有两名执法人员签名及被核查方签名,缺少则扣分。
risk: medium
score: 10
scope: [烟草专卖零售许可证许可类事项申请表, 烟草专卖零售许可证实地核查记录表]
stages:
- {id: '1', check: contains, field: 烟草专卖零售许可证许可类事项申请表.申请类型, any_of: [新办, 延续, 变更, 恢复营业, 歇业]}
- id: '2'
check: required
fields:
- 烟草专卖零售许可证实地核查记录表.标题
- 烟草专卖零售许可证实地核查记录表.核查人员签名1
- 烟草专卖零售许可证实地核查记录表.核查人员签名2
- 烟草专卖零售许可证实地核查记录表.被核查方签名
- {id: '3', check: required, field: 烟草专卖零售许可证许可类事项申请表.申请类型}
logic: 1 OR ((NOT 1) AND 2) AND 3
messages: {pass: 无需实地核查或实地核查执法人员人数符合要求。, fail: 缺少实地核查记录表或实地核查执法人员人数不足,应至少有两名执法人员,请核对。}
references_laws: [《烟草专卖许可证管理办法》第三十八条]
type: deterministic
- group: JZG-XK-SP
rules:
- rule_id: JZ-XK-SP-001
name: 烟草专卖许可证颁发时效合规性
desc: 若两个时间之间的差值大于60天,则扣分。
risk: medium
score: 10
scope: [卷宗封面, 许可决定书, 送达回证]
stages:
- id: '1'
check: ai
prompt: '请判断 {{送达回证.送达日期}} 是否晚于 {{许可决定书.落款日期}},且差值小于10天;
若早于或差值大于10天为不符合。
'
- {id: '2', check: contains, field: 卷宗封面.申请类型, value: 收回}
- {id: '3', check: required, field: 卷宗封面.申请类型}
logic: (1 OR 2) AND 3
messages: {pass: 烟草专卖许可证已在规定时效内颁发。, fail: 烟草专卖许可证颁发超出规定时效,请核对。}
references_laws: [《烟草专卖许可证管理办法》第二十三条]
type: ai_rule
- rule_id: JZ-XK-SP-002
name: 延长审批期限告知文件校验
desc: 若未找到延长审批期限告知书,则扣分。
risk: medium
score: 10
scope: [卷宗封面, 烟草专卖零售许可证受理单, 延长审批期限批准书, 许可决定书]
stages:
- id: '1'
check: ai
prompt: '请判断 {{许可决定书.落款日期}} 减去 {{许可决定书.正文日期}},
是否在 {{烟草专卖零售许可证受理单.承诺办结时限}} 的工作日数内,
差值超过承诺办结时间为不符合。
'
- {id: '2', check: required, field: 延长审批期限批准书.标题}
- {id: '3', check: contains, field: 卷宗封面.申请类型, none_of: [注销, 收回]}
- id: '4'
check: required
fields:
- 烟草专卖零售许可证受理单.承诺办结时限
- 卷宗封面.申请类型
- 卷宗封面.行政决定
- 许可决定书.落款日期
- 许可决定书.正文日期
logic: 1 OR ((NOT 1) AND 2) OR (3 AND 4)
messages: {pass: 文档检查通过,符合规范要求。, fail: 文档存在以下问题,请修改后重新提交。}
references_laws: [《烟草专卖许可证管理办法》第二十三条]
type: ai_rule
- group: JZG-XK-XZ
rules:
- rule_id: JZ-XK-XZ-001
name: 烟草专卖许可证颁发合规性
desc: 若所有许可证图片中,均未找到"副本"字样,则扣分。
risk: medium
score: 10
scope: [卷宗封面, 烟草专卖零售许可证(正、副本)]
stages:
- {id: '1', check: contains, field: 卷宗封面.申请类型, all_of: [新办, 补办, 延续, 变更]}
- {id: '2', check: required, fields: [烟草专卖零售许可证(正、副本).许可证号, 烟草专卖零售许可证(正、副本).副本]}
- {id: '3', check: required, fields: [卷宗封面.申请类型, 卷宗封面.行政决定]}
logic: ((1 AND 2) OR (NOT 1)) AND 3
messages: {pass: 已颁发加盖印章的烟草专卖许可证正副本。, fail: 未全部颁发加盖印章的烟草专卖许可证,请核对。}
references_laws: [《烟草专卖许可证管理办法》第二十三条, 《烟草专卖许可证管理办法》第二十四条]
type: deterministic
- group: JZG-XK-SD
rules:
- rule_id: JZ-XK-SD-001
name: 送达回证信息完整性
desc: 若基础字段有漏填,则扣分。 若受送达人处无签名或盖章,则扣分。
risk: medium
score: 10
scope: [送达回证, 挂号信回执, 公告]
stages:
- id: '1'
check: required
fields:
- 送达回证.受送达人
- 送达回证.送达文书名称
- 送达回证.送达文书编号
- 送达回证.送达日期
- 送达回证.送达地点
- 送达回证.送达人签名1
- 送达回证.送达人签名2
- {id: '2', check: contains, field: 送达回证.送达方式, any_of: [直接送达, 代收送达, 留置送达]}
- {id: '3', check: required, fields: [送达回证.收件人签名, 送达回证.收件人盖章], logic: or}
- {id: '4', check: contains, field: 送达回证.送达方式, value: 公告送达}
- {id: '5', check: required, field: 公告.编号}
- {id: '6', check: contains, field: 送达回证.送达方式, value: 挂号信}
- {id: '7', check: required, field: 挂号信回执.正文}
logic: 1 AND (2 AND 3) OR (4 AND 5) OR (6 AND 7)
messages: {pass: 送达回证填写完整。, fail: 送达回证填写不完整,请核对。}
references_laws: [《烟草专卖许可证管理办法》第二十三条, 《烟草专卖许可证管理办法》第六十一条]
type: deterministic
- group: JZG-XK-GD
rules:
- rule_id: JZ-XK-GD-001
name: 行政许可案件归档合规性
desc: 若两个时间之间的差值大于60天,则扣分。
risk: medium
score: 10
scope: [卷宗封面, 卷内备考表]
stages:
- id: '1'
check: ai
prompt: '请判断 {{卷内备考表.立卷时间}} 是否晚于 {{卷宗封面.行政决定日期}},
且差值小于60天;早于或差值超过60天为不符合。
'
messages: {pass: 行政许可案件已及时归档并制作案卷。, fail: 行政许可案件未及时归档,请核对。}
references_laws: [《烟草专卖许可证管理办法》第三十八条]
type: ai_rule