# KA客户3年对比 · 数据管道

## 数据流
```
ERP导出xlsx (3个文件: 2024/2025/2026H1)
  → Python pandas 读取 + 列名自动检测
  → 匹配 82家KA客户名单 (Excel/大客户销售部)
  → 按月聚合 (2024-01 ~ 2026-06)
  → ka_3year.json
  → HTML热力图矩阵
```

## KA客户名单来源
文件: `~/Desktop/hermas输入-工作台数据库/客户清单/诊断原料&生命科学客户清单20260630.xls`
Sheet: "大客户销售部"
- A列: 编号(跳过第1行标题)
- B列: 集团简称
- C列: 客户名称  ← 匹配键
- D列: 销售员 (赵云浩/张立娅)

82家，匹配后实际有交易的约52家。

## ERP文件列映射

### 2024全年订单.xlsx → Sheet1 (26661行)
- 客户: 第5列 (E), 价税合计: 第13列 (M), 合同月份: 第2列 (B, YYYY-MM), 合同日期: 第1列 (A, serial number)

### 2025全年订单.xlsx → Sheet1 (30630行)
- 客户: 第4列 (D), 价税合计: 第13列 (M), 合同月份: 第1列 (A, YYYY-MM)

### 2026年1-6月订单.xlsx → Sheet1 (16629行)
- 客户: 第5列 (E), 价税合计: 第14列 (N), 合同月份: 第1列 (A, YYYY-MM)

## 坑
1. **Sheet名映射混乱**: 文件中Sheet2可能是元数据而非数据，Sheet1才是原始订单。必须遍历所有sheet找到含"客户"+"价税合计"列的才是数据sheet
2. **列位置不一致**: 三份文件的价税合计分别在M列/N列，客户在D列/E列，必须根据实际列名而非硬编码索引
3. **日期格式**: 2024文件合同日期是Excel serial number，需 `datetime(1899,12,30)+timedelta(days=serial)`
4. **2025文件有分表**: 除Sheet1全量数据外，还有1-5月和6月两张分表，可能重复计数

## 后续增量管道（MCP）
每天从飞书MCP拉新增订单 → 匹配客户名(需关联查询,60s timeout) → 追加到当月数据 → 更新ka_3year.json
