# 新增人员全系统权限检查清单

当新增销售人员时，需逐系统确认权限隔离和数据匹配。

## 检查清单

| # | 系统 | 文件/数据 | 检查项 | 命令示例 |
|---|------|----------|--------|---------|
| 1 | 人员清单 | `数据/pricing/_personnel.json` | name/dept/region/role/price_level/status 是否正确 | `python3 -c "import json; d=json.load(open('数据/pricing/_personnel.json')); [print(p) for p in d['personnel'] if '新姓名' in p['name']]"` |
| 2 | 工作台硬编码 | `工具/宝锐统一工作平台.html` | PERSONNEL 数组中 region 是否与 _personnel.json 一致 | `grep "新姓名" 工具/宝锐统一工作平台.html` |
| 3 | 作战室 salespeople | `数据/diag_salespeople.json` | 存在且 region/dept/customers/amount 正确 | 同上 Python 脚本 |
| 4 | 作战室 KPIs | `数据/diag_kpis.json` | 存在且 annual_target 非 0（如有目标） | 同上 |
| 5 | 作战室 customers | `数据/diag_customers.json` | salespeople 列表包含该人员 | `python3 -c "json.load(open('数据/diag_customers.json')).count(lambda c: '新姓名' in c.get('salespeople',[]))"` |
| 6 | 客户价格表映射 | `数据/pricing/_dept_sp_custs.json` | 部门下有该人员→客户映射 | `grep -c "新姓名" 数据/pricing/_dept_sp_custs.json` |
| 7 | 客户价格表登录 | `工具/客户价格表.html` | 动态加载 _personnel.json，在职人员自动出现 | 打开页面验证下拉框 |
| 8 | 飞书推送 open_id | 飞书后台 | `batch_get_id` 能否解析该人员邮箱为 open_id | 调 `POST /contact/v3/users/batch_get_id` 验证 |

## 常见陷阱

1. **区域不一致**：`_personnel.json` 说"江苏"，HTML 硬编码说"华东" → 以 `_personnel.json` 为准，统一修改
2. **KPI 年度目标=0**：新入职或调岗人员可能尚未分配年度目标 → 确认后补入 `diag_kpis.json`
3. **3年数据**：新人员可能从历史订单中继承数据（ERP 按 `销售员` 列匹配）→ 根据业务决定是否屏蔽历史数据
4. **飞书 open_id 不可解析**：即使邮箱正确，App 通讯录权限范围外的用户 `batch_get_id` 返回 `user_id: None` → 需在飞书后台扩大 App 通讯录可见范围
