# ERP → KA 对比数据管道

从逐年ERP订单Excel生成KA客户3年对比JSON。

## 文件结构

三个Excel文件结构略有差异，均需用 pandas 的 sheet_name 参数指定正确Sheet：

| 文件 | 数据Sheet | 行数 | 客户列 | 金额列 | 日期列 | 日期格式 |
|------|----------|------|--------|--------|--------|---------|
| 2024全年订单 | Sheet1 | 26,661 | 客户(4) | 价税合计(12) | 合同日期(0) | serial number |
| 2025全年订单 | Sheet1 | 30,630 | 客户(3) | 价税合计(12) | 合同月份(0) | YYYY-MM |
| 2026年1-6月 | Sheet1 | 16,629 | 客户(4) | 价税合计(13) | 合同月份(0) | YYYY-MM |

## 关键陷阱

1. **Sheet名反了** ⚠️：Excel中 Sheet1 是原始数据（26k行），Sheet2 是销售人员元数据（42行）。Sheet名具有误导性，必须用 `pd.ExcelFile().sheet_names` 逐个检查行数和列名。
2. **2026的价税合计在col 13**（比2024/2025多一列"单据状态"），列索引偏移。
3. **序列日期**：`45657` → `datetime(1899,12,30)+timedelta(days=int(v))`
4. **YYYY-MM 格式**：补充为 `YYYY-MM-01`
5. **2025有3个数据Sheet**（Sheet1全量 + 1-5月 + 6月），用Sheet1即可覆盖全年
6. **验证**：月度和=年度总额必须逐条通过

## 客户匹配

从 `客户清单/诊断原料&生命科学客户清单20260630.xls` 的「大客户销售部」Sheet读取82家KA客户名单，按客户名精确匹配。

## 输出格式

```json
[{
  "name": "客户名称",
  "group": "",
  "salesperson": "赵云浩",
  "y2024": 5178599.0, "y2024_m": [12],
  "y2025": ..., "y2025_m": [12],
  "y2026": ..., "y2026_m": [12],
  "total": ...
}]
```

## 2026-07-09 运行结果
- 匹配52家有交易（82家名单中30家零交易）
- 2024: ¥1,591万 | 2025: ¥1,753万 | 2026 H1: ¥807万
- **大客户部KPI H1覆盖率: 103%**（KA略超KPI，因含部分非KPI订单）

## 增量更新（待建）
KA JSON生成后，增量管道每天从 MCP 拉新订单，匹配客户名后追加月度数据。
