---
name: huawei-cloud-icp-preapproval-check
description: Use when 用户提供营业执照图片，或提供单位名称、经营范围和备案省份，要求检查 ICP 备案前置审批关键词及涉及/不涉及材料。
---

# ICP 备案前置审批检查

## 概述

本 Skill 用于核对单位名称和经营范围是否命中华为云 ICP 备案规则中的前置审批关键词。根据匹配结果，自动输出需提交的前置审批材料清单（含审批类型、审批文件、批复单位、"不涉及"承诺书模板及操作提示）。

**与 `huawei-cloud-icp-rule-consult` 的区别**：`icp-rule-consult` 是通用的 ICP 备案规则咨询 Skill（流程、材料、变更、接入、注销等 130+ 问答），而本 Skill 专注于前置审批关键词的精准匹配和材料清单生成，不处理备案流程等其他咨询问题。两者职责互不重叠。

## 前置条件

- Python 3.8+，字面命令 `python` 指向真实解释器
- 所有规则数据随包静态携带，无需联网、无需 API Key
- OCR 兜底（可选）：需提前安装 `rapidocr_onnxruntime`，详见"营业执照 OCR 兜底"章节

> **CLI 说明**：本 Skill 不提供 KooCLI 命令，全部功能通过 Python 脚本实现，因此不涉及 `--cli-region` 参数。

## 核心边界

仅依据用户提供的单位名称、完整经营范围和备案省份，使用本 skill 内的华为云备案规则做关键词初筛。不得写成行政许可、法律结论或备案通过保证。全国行业规则决定审批类型、证件和批复单位；省级规则决定属地关键词和“不涉及”模板。名称明确为通用“不涉及前置审批”模板时，可供全国明确词和复核词命中的任一类别在同省使用；带教育、文化、金融、新闻等类别限定的模板仍只用于原类别。禁止跨省套用模板。

## 工作流（4 步）

### Step 1: 确认输入完整性

必须同时具备单位名称、完整经营范围和备案省份。三项齐全后进入下一步；缺失时向用户索取，不猜测。

### Step 2: OCR 识别（可选）

用户提供了营业执照图片但未提供文本字段时，优先使用智能体原生 OCR 识别三项内容；不支持或识别失败时，运行 Python OCR 脚本作为兜底。

```text
python <技能目录>/scripts/ocr_license.py --image <营业执照图片路径> --pretty
```

OCR 输出 `province_candidates` 需人工确认；地址省份不一定等于备案省份。

### Step 3: 运行前置审批检查

使用校验后的文本输入运行随附检查脚本，执行全局和行业关键词比对。

```text
python <技能目录>/scripts/check_preapproval.py --company-name <单位名称> --province <备案省份> --province-source <省份来源> -- <经营范围原文>
```

### Step 4: 输出结果

完整原样返回脚本标准输出，包含基本信息表、前置审批材料表和免责声明。命中时逐行列出审批类型、命中文档、材料、审批文件、批复单位、承诺书模板和提示信息；未命中时保留表头并提示"未命中当前华为云备案规则中的关键词"。

结果异常情况：
- 输出"未提供…对应模板"且用户要求排查不一致时，先运行 `--diagnose` 诊断
- 脚本失败时只转述标准错误，不做猜测

1. 文本输入必须同时包含单位名称、完整经营范围和备案省份；营业执照图片必须可靠识别三项，不能猜字。
2. 省份来源只传 `用户提供` 或 `执照识别`。
3. 单位名称和经营范围同等参与判断。同一材料行合并两处命中词并稳定去重。
4. `不含、不包括、不涉及、不提供` 控制的后续片段、`xxx除外` 以及句首/括号内用于排除主体类型的 `非……广播电台/电视台/出版单位/新闻单位/媒体` 短语不参与经营范围匹配；只排除该表达控制的内容。普通业务修饰语如 `非营利性网络出版服务` 不因出现 `非` 而排除。
5. 网站/App 名称、内容和功能不在输入时保留人工核实边界，不补写业务。
6. 省级字面规则或省级专项政策与全国规则覆盖同一处文字时，优先显示省级结果，不再另行显示该处文字触发的全国类别。同一全国关键词在单位名称或经营范围中还有未被省级词覆盖的独立出现位置时，仍保留全国结果。优先级按文字位置判断，不因命中任意省级规则就关闭全部全国规则。
7. 备案省份为吉林或四川时，吉林和四川不匹配药品和医疗器械类前置审批；`药`、`药品`、`医疗器械`、`互联网药品信息服务` 和 `药品信息服务` 均不生成该类别结果。
8. `图书管理服务` 在全国范围内不参与前置审批关键词匹配；只屏蔽这一完整短语，独立出现的 `图书`、`互联网图书`、`网络出版服务` 等出版业务词仍按规则判断。
9. 江西省“增值电信业务、道路运输”规则将 `道路货物运输` 作为 `道路运输` 的省级匹配别名；该别名不用于其他省份。

## 执行

所有环境只使用已安装的 Python 3.8+，并要求字面命令 `python` 指向真实解释器。不要搜索其他解释器、安装软件或派生第二个 Python 进程。

运行时只读取随包的 `references/huawei-rules.json`，不会联网、不会自动刷新规则，也不会写入 `references/`。官网来源清单和最近一次人工官网核验记录见 `references/official-sources.md`。

分析命令：

```text
python <技能目录>/scripts/check_preapproval.py --company-name <单位名称> --province <备案省份> --province-source <省份来源> -- <经营范围原文>
```

尖括号是说明占位符，动态值必须作为独立参数安全传递。命令失败时只转述标准错误，不把规则错误当成未命中。

正常分析输出“未提供…对应模板”但同一输入在其他安装中存在模板，或用户要求排查跨机器结果不一致时，必须先运行：

```text
python <技能目录>/scripts/check_preapproval.py --diagnose
```

完整转述该命令的标准输出或标准错误后才能判断根因。规则 JSON 的全国类别主键固定为 `categories[].id`；加载后的 Python 字段为 `Category.category_id`，加载器负责将前者映射为后者。不得修改规则 schema 来对齐 dataclass 字段，不得在未运行诊断时声称字段不一致，不得在命令失败后自行推测模板状态。

### 营业执照 OCR 兜底

1. 智能体支持图片 OCR 时，优先由智能体读取营业执照，并确认单位名称、完整经营范围和备案省份。
2. 智能体不支持 OCR，或原生图片识别失败时，运行随包的 Python OCR 脚本：

```text
python <技能目录>/scripts/ocr_license.py --image <营业执照图片路径> --pretty
```

3. OCR 脚本使用本地 `rapidocr_onnxruntime`，输出 JSON，包括 `company_name`、`scope`、`province_candidates`、`warnings` 和 `raw_text`。它只做文字识别和候选字段提取，不做规则判断，也不联网上传图片。
4. OCR 依赖必须提前安装，分析过程中不得自动安装软件：

```text
python -m pip install -r <技能目录>/requirements-ocr.txt
```

5. 省份候选必须人工确认；营业执照住所省份不一定等于备案省份。缺少或不确定字段时，不得猜测，改为向用户索取确认后再运行检查脚本。

OCR 输出确认后，仍必须把字段传给现有 `check_preapproval.py`，并完整原样返回该脚本标准输出；OCR JSON 不是 ICP 分析结果。

## 固定输出

成功时完整原样返回脚本标准输出，始终保留：

```text
# ICP 备案前置审批关键词核对结果

## 1. 基本信息
## 2. 前置审批材料
```

基本信息表头：

```text
| 单位名称 | 经营范围 | 备案省份 | 规则版本 | 核对日期 |
```

材料表头固定为六列：

```text
| 前置审批类型 | 命中关键词 | 审批文件 | 批复单位 | 不涉及承诺书 | 提示 |
```

单位名称和经营范围中的命中词使用 Markdown 行内代码 `` `命中词` ``。一种前置审批类型只显示一行；第二列显示该材料行的全部实际命中关键词，按稳定顺序去重，不得混入排除片段。同一 filing type 合并时仍保留 category ownership，分别保留材料、批复单位、模板和关键词归属。一条官网规则的多个模板按官网顺序全部展示。

模板选择顺序为：同省同类别专用模板优先；没有专用模板且没有官网排除规则时，回退到同省通用模板。通用模板名称仅识别 `不涉及前置审批承诺书`、`不涉及前置审批项承诺书` 和 `不涉及相关审批的承诺书` 这三类明确命名，稳定去重，不根据相同 URL 猜测通用性。仍无可用模板时精确显示 `未提供{province}{categoryLabel}对应模板`；无备案省份时显示 `未提供备案省份，无法匹配同省对应模板`。省级独立规则不编造全国许可证或机关。

未命中时保留表头并显示 `未命中当前华为云备案规则中的关键词`，不得改写为“无需前置审批”。免责声明固定为：

```text
本结果仅依据单位名称、经营范围和华为云备案规则进行关键词初筛，不构成行政许可或法律结论，不保证备案通过。
```

免责声明作为无标题普通段落。

分析成功时，必须严格使用上述固定输出格式，并将脚本标准输出完整原样回复。不得以任何理由改用摘要、说明性段落、项目列表或其他格式，也不得省略、重排、合并或改写任何标题、表头、材料行及免责声明；命中和未命中均不可例外。只有命令失败时才使用规定的错误输出格式。

## 发行版资料

本发行包包含已人工核验的静态规则和官方来源记录，不包含开发测试目录和维护索引。用户可运行以下命令校验随包规则的结构和引用：

```text
python <技能目录>/scripts/check_preapproval.py --validate-only
```

官网规则变更应在开发项目中完成来源复核、全量测试和发行打包；不应直接在已安装的发行包中手工替换单个文件。运行时不会下载页面、替换规则、创建备份或回滚文件。
