# 客户档案全维度数据管道

## 数据源矩阵

| 维度 | 数据源 | 获取方式 | 关联路径 |
|------|--------|---------|---------|
| 价格/采购 | ERP Excel 订单 | Python pandas 本地处理 | 客户名直接匹配 |
| 联系人 | 飞书销售管理 | `list_related_workitem` | 客户→联系人关联 (relation_1715033831836) |
| 商机 | 飞书销售管理 | `get_view_detail` 视图批量 + `list_related_workitem` | 客户→商机关联 (relation_1706630317962) |
| 项目 | 飞书客户项目管理 | `get_view_detail` + `list_related_workitem` | 客户项目流程→客户(销售管理) |
| 客诉 | 飞书售后管理 | 二级跳：客诉→销售订单→客户 | 投诉单→销售订单→客户 |
| 决策链 | 飞书MQL | 商机级别查询 `决策链URL链接` 字段 | work_item_id 精确查询 |
| 决策链(诊断) | 飞书MQL | 客户级别查询 | 客户名称 MQL |

## 二级跳模式（客诉→销售订单→客户）

客诉在售后管理空间，不直接关联客户，需要通过销售订单中转：

```python
# Step 1: 获取客诉列表
complaints = get_view_detail('br-shgl', 'TDWUJhYHg')  # 客诉视图

# Step 2: 客诉→销售订单
for c in complaints:
    orders = list_related_workitem('br-shgl', c['id'], relation_khts_order)

# Step 3: 销售订单→客户（销售管理空间）
for o in orders:
    cust = list_related_workitem('xsguanli', o['id'], relation_order_customer)
```

## 年度销售额正确计算

**错误做法**：从产品级聚合数据按 `years` 字段分摊——一个产品在"2024,2025"都有销售时，total_amt 会被重复计入两年。

**正确做法**：从ERP原始订单按年份直接聚合：
```python
import pandas as pd
for year, fp in [('2024','2024全年订单.xlsx'),('2025','2025全年订单.xlsx'),('2026','2026年1-6月订单.xlsx')]:
    df = pd.read_excel(fp, sheet_name='Sheet1')
    df['year'] = year
    grouped = df.groupby(['客户','year'])['价税合计'].sum()
```

保存为 `数据/cust_yearly.json`，profile 中加 `sales_2026/2025/2024` 字段。

## 集团销售聚合

从客户清单的 `集团简称` 列建立映射，合并同集团所有子公司销售额：

```python
groups = {}  # name → group_name
for sheet in ['大客户销售部','销售拓展部','华北华西','华中华南','华东']:
    df = pd.read_excel('诊断原料&生命科学客户清单.xls', sheet_name=sheet, header=1)
    for _,r in df.iterrows():
        name = r['客户名称']; grp = r['集团简称']
        if name and name != 'nan': groups[name] = grp if grp and grp!='nan' else ''

# 聚合
group_yearly = defaultdict(lambda: defaultdict(float))
for name, grp in groups.items():
    if grp:
        cy = cust_yearly.get(name, {})
        for yr in ['2024','2025','2026']:
            group_yearly[grp][yr] += cy.get(yr, 0)
```

Profile 中同时保存 `sales_2026/2025/2024`（本客户）和 `group_sales_2026/2025/2024`（集团）。

## 生命科学三层架构

生命科学客户使用三层导航：
- **Level 1**: 大学列表（97所）
- **Level 2**: 课题组清单（点击大学进入，如浙江大学→7个课题组）
- **Level 3**: 课题组档案（价格+联系人+商机详情+决策链）

Feishu 客户名格式：`大学名-区域`（如"浙江大学-浙江"），商机名即课题组名。
决策链在**商机级别**查询（非客户级别）。

## 生命科学视图
- 课题组视图: `_rz-opbvg`（350个商机，去重后50个课题组）
- `get_view_detail` 返回字段：`work_item_attribute.work_item_name` 为课题组名
