| name | tyc-construction-bid |
| description | 建筑工程投标资质核查(TYC 独有),资质证书/注册人员/工程业绩/不良行为一站式核验 |
| category | industry |
| version | 1 |
建筑工程投标资质核查(TYC 独有扩展)
触发条件
EPC 总包招投标审查、PPP 项目资格预审、设计施工监理资质核验、建造师挂靠风险排查。
关键词:建筑资质、投标资格、注册建造师、四库一平台、不良行为
输入要求
用户输入的企业标识可能是以下三种形式之一,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_construction_qualifications (searchKey) — 资质类别/等级/证书号/有效期
Step 2: 注册人员
get_construction_registered_personnel — 注册建造师/工程师/执业印章号
Step 3: 工程业绩
get_construction_projects — 工程项目(项目编号/属地/类别/中标日期/合同金额)
Step 4: 不良行为
get_construction_bad_conduct — 失信行为 / 违规记录
Step 5: 主体合规
get_company_registration_info
get_administrative_penalty
get_dishonest_info
输出格式
# 建筑投标资质核查 — {name}
## 一、企业建筑资质
| 资质类别 | 资质名称 | 资质证书号 | 等级 | 发证日期 | 有效期至 | 状态 |
|---------|---------|-----------|------|---------|---------|------|
⚠️ 临期资质: {n}
🚨 已失效: {n}
## 二、注册人员
| 姓名 | 注册类别 | 注册号 | 注册专业 | 证书编号 |
|------|---------|--------|---------|---------|
注册建造师人数: {n}
(用于资质达标的关键人员核查)
## 三、工程业绩
| 项目编号 | 项目名称 | 属地 | 类别 | 建设单位 | 中标日期 | 合同金额 |
|---------|---------|------|------|---------|---------|---------|
业绩规模: {总金额} 元 / {总项目数} 个
## 四、不良行为记录
| 诚信记录编号 | 查看事由 | 实施部门 | 发布有效期 | 决定内容 |
|------------|---------|---------|----------|---------|
🚨 不良行为是否影响投标资格: 是 / 否
## 五、综合主体合规
- 行政处罚: {n}
- 失信记录: {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。