# 新用户上线检查清单

当新增销售人员到工作台生态时，必须逐项完成以下配置。

## 先决条件

- 用户在飞书系统中已存在（有 `xxx@biori.com` 邮箱）
- 用户已加入企业通讯录（否则 `batch_get_id` 返回无 open_id）
- 飞书 App 通讯录权限范围覆盖该用户

## 必改 5 处（缺一不可）

### 1. `销售工作台服务.py` 的 `DEFAULT_USERS` 字典

路径：`脚本/销售工作台服务.py` 约第 217 行

```python
'songxuewei@biori.com': {'name': '宋学伟', 'role': 'sales', 'dept': '诊断原料销售拓展部'},
```

⚠️ **这是登录验证的唯一入口**。缺失 → "邮箱未注册或密码错误"。密码硬编码 `biori2026`。

### 2. `_personnel.json`（定价系统 + 授权源）

路径：`数据/pricing/_personnel.json`

```json
{"name":"宋学伟","dept":"销售拓展部","role":"销售工程师","region":"江苏","product_line":"诊断原料","price_level":"v2","status":"在职"}
```

region 必须全局一致。

### 3. `diag_kpis.json`（作战室 KPI）

路径：`数据/diag_kpis.json`

⚠️ `annual_target` 须手动设置，管线不会自动填充。达成率 = diag_revenue / annual_target × 100。

### 4. `USER_DEPTS`（销售工作台订单过滤）

路径：`工具/销售工作台.html` 约 1710 行

```javascript
var USER_DEPTS = {
  '宋学伟': ['诊断原料销售拓展部'],
};
```

注：实际过滤已改用 `creatorEmail` 精确匹配，此映射仅作兼容保留。

### 5. HTML PERSONNEL（统一工作平台 + 销售工作台）

`工具/宝锐统一工作平台.html` PERSONNEL 数组：
```javascript
{name:'宋学伟',dept:'销售拓展部',role:'销售工程师',region:'江苏'},
```

`工具/销售工作台.html` `SALES_UNIT_IS_YUAN`（如适用）：
```javascript
'宋学伟': true,
```

## 验证

```bash
# region 一致性
python3 -c "..."  # 对比 _personnel + diag_kpis + diag_salespeople

# 登录测试
curl -s -X POST http://127.0.0.1:8765/api/login \
  -H "Content-Type: application/json" \
  -d '{"email":"songxuewei@biori.com","password":"biori2026"}'

# JS 语法
node --check <(sed -n '/<script>/,/<\/script>/p' 工具/销售工作台.html)
```

## 常见陷阱

| 陷阱 | 现象 | 修复 |
|------|------|------|
| DEFAULT_USERS 漏加 | 登录"邮箱未注册或密码错误" | 添加 + 重启服务 |
| region 不一致 | 各系统显示不同区域 | 统一为江苏 |
| annual_target=0 | 作战室 KPI 无目标 | 手动设置 |
| 服务器未重启 | DEFAULT_USERS 修改不生效 | `kill` 后重启 |
| 中文名当邮箱 | 登录失败 | 用拼音邮箱，不是 `宋学伟@biori.com` |
| 旧端口 8766 僵尸进程 | 连到旧版服务器 | `lsof -ti:8766 \| xargs kill` |
| state.user 格式不兼容 | 订单不过滤/页面崩溃 | 加 `getUserName()` 等兼容函数 |

## 相关

- `references/dual-auth-pitfall.md` — state.user 新旧格式兼容
