合规资质有效性验证
触发条件
合作方年度续约审查、采购供应商年度合规审查、资质类合作前置审核。
关键词:资质核验、合作续约、电信许可、行政许可、到期监控
输入要求
用户输入的企业标识可能是以下三种形式之一,Step 0 会按形式分流,不要急着把用户原话当成 searchKey 喂给后续步骤:
| 输入形式 | 示例 | 是否需要 L0 实体锚定 |
|---|---|---|
完整企业名(含组织形式后缀:有限公司 / 股份有限公司 / 集团 / 合伙企业 / 个体工商户 / 事务所 / 中心 等) |
北京字节跳动科技有限公司 / 腾讯科技(深圳)有限公司 |
❌ 跳过 L0,直接当 searchKey |
| 统一社会信用代码(USCC) 18 位大写字母+数字 | 91110108551385082Q |
❌ 跳过 L0,直接当 searchKey |
| 企业简称 / 曾用名 / 品牌名 / 模糊指代 | 字节 / 抖音 / 今日头条 / 乐视 / 阿里 |
✅ 必须先走 L0,由用户在候选中确认唯一企业,再拿 creditCode 作为 searchKey |
经过 Step 0 锚定后,下文 Step 1+ 的
searchKey都指精确企业名或 USCC,调用方式不变。
执行流程
Step 0: 实体锚定(条件性 · L0 工具:search_companies)
目的:用户给的常常是简称、曾用名、模糊指代,下游所有步骤都依赖精确企业;先用 L0 把它消歧成唯一 creditCode,避免后续步骤在错主体上反复烧 token。
判定与分流:
若 userInput 匹配 USCC 正则
^[0-9A-Z]{18}$→ 跳过 L0,searchKey = userInput若 userInput 含组织形式后缀(
有限公司/股份/集团/合伙企业/事务所/个体工商户/分公司等)且长度 ≥ 6 → 跳过 L0,searchKey = userInput否则(简称 / 曾用名 / 品牌名 / 任何看起来不完整的字符串)→ 必须走 L0:
- 调用
search_companies(searchKey: userInput) - 在返回
items[]中默认按regStatus ∈ {存续, 在业, 在营, 开业}过滤,按regCapital倒序取 Top 5 作为候选展示 - 候选 = 1 → 自动锚定,
searchKey = items[0].creditCode - 候选 ≥ 2 → 暂停执行,向用户输出候选清单(
name/creditCode/regStatus/regLocation/legalPersonName)请求确认,待回复后取选定企业的creditCode作为searchKey - 候选 = 0 → 终止流程,提示"未找到匹配企业,请提供更完整的名称或换关键词"
- 调用
对用户的话术(候选 ≥ 2 时):
你说的「{userInput}」匹配到 N 家企业,请确认是哪一家:
# 企业名称 USCC 状态 法定代表人 注册地 1 … … 存续 … … 2 … … 存续 … … 回复编号(1-N)以继续,或回复"都不是"重新输入。
Step 1: 主体核验
get_company_registration_info
Step 2: 资质证书全集
get_qualifications— 资质证书(含等级 / 有效期 / 状态)get_administrative_license— 行政许可(决定文书号 / 有效期)get_telecom_license— 电信业务许可(业务类别 / 范围)
Step 3: 历史失效(识别"曾经持有但已失效")
get_historical_admin_license— 历史行政许可(已过期)
Step 4: 关联资产合法性
get_construction_qualifications— 建筑资质(如适用)
输出格式
# 资质有效性核验 — {name}
## 一、当前有效资质
| 证书类型 | 证书编号 | 等级 | 发证日期 | 有效期至 | 距到期 |
|---------|---------|------|---------|---------|--------|
⚠️ **临期证书(< 90 天)**: {n} 张
🚨 **已过期证书**: {n} 张
## 二、行政许可
| 许可名称 | 决定文书号 | 许可机关 | 有效期至 |
|---------|----------|---------|---------|
## 三、电信业务许可
(业务类别 / 业务范围 / 发证日期 / 有效期)
## 四、建筑资质(如适用)
(资质类别 / 等级 / 项目能力)
## 五、历史失效资质(参考)
(曾持有但已过期的证书清单)
## 六、续约决策
- 资质合规等级: A / B / C
- 是否可以续约: ✓ / ⚠️ 需补证 / ❌ 不建议
- 待补证清单: ...
- 监控重点: 临期证书 {n} 张
错误处理
- 若 Step 0 候选 = 0 → 终止流程,提示"未找到匹配企业,请提供更完整的名称或 USCC",不要带着错主体往下跑
- 若 Step 0 候选 ≥ 2 而用户在合理时间内未回复 → 暂存上下文,不要自行选择第一条作为锚定(错锚定的代价远大于等待)
示例
输入: searchKey = "某通信工程公司"
新输入形态参考(Step 0 引入后的三种典型):
例 1(USCC 直通,跳过 L0):
输入: userInput = "91110108551385082Q" → Step 0 判定 USCC,searchKey = userInput,直接进 Step 1。
例 2(完整企业名直通,跳过 L0):
输入: userInput = "北京字节跳动科技有限公司" → Step 0 判定含 有限公司 后缀且长度 ≥ 6,searchKey = userInput,直接进 Step 1。
例 3(简称,必走 L0):
输入: userInput = "字节" → Step 0 调 search_companies (searchKey: "字节"),过滤存续后取 Top 5,向用户列出候选请求确认;用户回复"1"(北京字节跳动科技有限公司)→ searchKey = items[0].creditCode,再进 Step 1。