# Tyc Spend Analysis

> 采购支出分析 — 品类 / 供应商支出分布 + 供应商整合机会 + 价格基准，年度采购战略必备

- Skill: `tyc-tech/tyc-spend-analysis` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tyc-tech/tyc-spend-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tyc-tech/tyc-spend-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tyc-tech (https://skillmd.com/u/tyc-tech)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tyc-tech/tyc-spend-analysis

---


# 采购支出分析

## 触发条件

采购年度支出复盘、品类战略制定、供应商整合决策、采购节约目标拆解、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。

**判定与分流**：

1. **若 userInput 匹配 USCC 正则** `^[0-9A-Z]{18}$` → 跳过 L0，`searchKey = userInput`
2. **若 userInput 含组织形式后缀**（`有限公司` / `股份` / `集团` / `合伙企业` / `事务所` / `个体工商户` / `分公司` 等）**且长度 ≥ 6** → 跳过 L0，`searchKey = userInput`
3. **否则**（简称 / 曾用名 / 品牌名 / 任何看起来不完整的字符串）→ **必须走 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: 整合信号分析
- 单一品类多供应商 → 标记整合机会
- 规模 / 财务悬殊 → 标记议价空间
- 高风险供应商 → 标记替换必要性

## 输出格式

```markdown
# 采购支出分析报告 — {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`

