| name | tyc-spend-analysis |
| description | 采购支出分析 — 品类 / 供应商支出分布 + 供应商整合机会 + 价格基准,年度采购战略必备 |
| category | supply |
| version | 1 |
采购支出分析
触发条件
采购年度支出复盘、品类战略制定、供应商整合决策、采购节约目标拆解、RFQ 策略前研究时触发。
关键词:支出分析、品类支出、供应商整合、价格基准、集中度、采购战略
输入要求
用户输入的采购方企业标识可能是以下三种形式之一,Step 0 会按形式分流,不要急着把用户原话当成 buyer 喂给后续步骤:
| 输入形式 | 示例 | 是否需要 L0 实体锚定 |
|---|
完整企业名(含组织形式后缀:有限公司 / 股份有限公司 / 集团 / 合伙企业 / 个体工商户 / 事务所 / 中心 等) | 北京字节跳动科技有限公司 / 腾讯科技(深圳)有限公司 | ❌ 跳过 L0,直接当 buyer |
| 统一社会信用代码(USCC) 18 位大写字母+数字 | 91110108551385082Q | ❌ 跳过 L0,直接当 buyer |
| 企业简称 / 曾用名 / 品牌名 / 模糊指代 | 字节 / 抖音 / 今日头条 / 乐视 / 阿里 | ✅ 必须先走 L0,由用户在候选中确认唯一企业,再拿 creditCode 作为 buyer |
经过 Step 0 锚定后,下文 Step 1+ 的 buyer 都指精确企业名或 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_suppliers_and_customers <buyer> — 本方已合作供应商清单
Step 2: 供应商深度画像(并发,对 Step 1 的供应商)
对每个供应商:
get_company_registration_info <vendor> — 工商基础
get_company_scale <vendor> — 规模(判断大 / 小供应商)
get_financial_data <vendor> — 财务能力
get_products_info <vendor> — 主营业务(判断品类归属)
get_bidding_info <vendor> — 中标记录(判断客户结构)
get_risk_overview <vendor> — 风险
Step 3: 市场基准 / 潜在替代供应商
若指定 category:
search_companies_by_industry_region <category> --region <region> — 同品类市场
- 对 TOP 20 并发调
get_company_scale / get_risk_overview,作为基准池
Step 4: 同行业同品类标杆
search_companies_by_ranking — 行业榜单
search_bids <category> — 同品类招投标市场行情
Step 5: 整合信号分析
- 单一品类多供应商 → 标记整合机会
- 规模 / 财务悬殊 → 标记议价空间
- 高风险供应商 → 标记替换必要性
输出格式
# 采购支出分析报告 — {buyer}
> 分析品类: {category / 全品类} · 地域: {region / 全国}
> 出具: {ISO8601}
## 一、供应商池概览
| 维度 | 数据 |
|------|------|
| 已合作供应商数量 | {n} 家 |
| 品类分布(TOP 5) | ... |
| 地域分布(TOP 5) | ... |
| 规模分布 | 大 {n} / 中 {n} / 小 {n} |
## 二、品类支出画像
| 品类 | 供应商数 | 集中度(TOP 3 占比)| 整合潜力 |
|------|---------|-------------------|---------|
| 品类 A | {n} | {ratio} | 高(建议整合至 2 家)|
| 品类 B | {n} | {ratio} | 中 |
| 品类 C | {n} | {ratio} | 低 |
## 三、供应商分层(Kraljic 矩阵思路)
| 分层 | 供应商 | 建议策略 |
|-----|-------|---------|
| 战略 | ... | 长期合作 + 联合研发 |
| 杠杆 | ... | 多源竞标 + 议价 |
| 瓶颈 | ... | 库存缓冲 + 替代开发 |
| 一般 | ... | 集中采购 + 标准化 |
## 四、整合机会 TOP 10
| # | 品类 | 当前 N 家 | 建议合并至 M 家 | 预估节约 | 理由 |
|---|------|---------|----------------|---------|------|
| 1 | ... | 5 | 2 | 12-18% | 规模差异大 / 价差明显 |
## 五、高风险供应商(建议替换)
| 供应商 | 风险项 | 当前占比 | 备选替代 | 切换紧迫度 |
|--------|-------|---------|---------|-----------|
| ... | 失信 / 被执行 / 经营异常 | ... | 市场池 TOP 3 | 紧急 / 本季度 / 年度 |
## 六、市场基准(若指定 category)
| 基准项 | 本方数据 | 行业 TOP 3 平均 | 差距 |
|--------|---------|---------------|------|
| 供应商规模(参保人数)| ... | ... | ... |
| 财务稳健性(资产规模)| ... | ... | ... |
| 合规健康度(风险数)| ... | ... | ... |
## 七、RFQ / 招标建议
- 品类 A: 建议集中 RFQ,3 家参标,预计节约 {ratio}
- 品类 B: 分层议价(战略 / 一般)
- 高风险 5 家: 立即启动替代供应商开发
## 八、年度目标拆解
- 年度节约目标: {amount}
- 按品类拆分: 品类 A {x} / 品类 B {y} / 品类 C {z}
- 里程碑: Q1 整合 → Q2 签约 → Q3 切换 → Q4 复盘
错误处理
- 若 Step 0 候选 = 0 → 终止流程,提示"未找到匹配企业,请提供更完整的名称或 USCC",不要带着错主体往下跑
- 若 Step 0 候选 ≥ 2 而用户在合理时间内未回复 → 暂存上下文,不要自行选择第一条作为锚定(错锚定的代价远大于等待)
suppliers-and-customers 无数据 → 输出"供应商池未公开,建议结合 ERP 导入"提示
- 品类无法识别 → 标注"品类识别需结合 ERP 数据"
- 市场基准
_empty → 省略第六章
示例
输入: buyer = "某大型制造企业", category = "精密铸件", region = "长三角"
新输入形态参考(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。
与其他 Skill 的关系
- 供应商周报 →
/tyc-supply-chain-brief(采购周报)
- 单供应商风险 →
/tyc-supply-risk / /tyc-vendor
- 新供应商开发 →
/tyc-new-supplier