# 数据源隔离与校准 (2026-07-29)

## 核心认知
`shipment_status.json` 仅包含有顺丰快递单号的**已发货订单**（近90天），不是全部销售订单。
ERP 导出的 `diag_kpis.json` / `kpi_dashboard.json` 才是权威销售数据。

## 数据源对照

| 用途 | 权威源 | 非权威源 |
|------|--------|---------|
| 销售额 | `kpi_dashboard.json` / `diag_kpis.json` | `shipment_status.json`（仅物流） |
| 订单数 | `diag_kpis.json.orders` | `shipment_status.json`（仅发货） |
| 月度明细 | `kpi_dashboard.json.h1_months` | — |
| 客户清单 | `_key_customers.json`（从 `diag_customers.json` 生成） | — |

## KPI 达成率"累计达成"隔离

❌ 错误：`fullYearTax = dash.total_h1 + prog.total`（公司汇总 → 所有人看到同一数字）
✅ 正确：非管理员用 `getKPI().ytd + getKPI().current`（个人 H1 + 个人 H2 当月）

## _key_customers.json 补充

当新销售员的客户在 `_key_customers.json` 中缺失时：
```python
from diag_customers.json → 过滤 salespeople 含该销售员的客户
→ 构建 entry {name, salesperson, total, sales_2024/2025/2026, ...}
→ 追加到 _key_customers.json
```

## 三年逐月数据隔离

非管理员：按 `(用户年度销售额 / 全公司年度销售额)` 比例分摊到各月
管理员：直接用 `three_year_monthly.json` 全公司数据

## 客诉双重过滤

非管理员：
1. area 过滤（`USER_AREA_MAP[dept全称]` → 客诉区域）
2. operator/creator 过滤（用户名在 operator 或 creator 中）
