# 登录鉴权：CloudBase DB → 硬编码迁移（2026-07-28）

## 背景

原登录流程分两路：
- 赵云浩/张立娅：硬编码绕过 CloudBase，本地比对 `biori2026` + `_personnel.json` 校验
- 其他用户：查询 CloudBase `user_roles` 集合验证密码

## 问题

CloudBase 匿名登录不稳定、`user_roles` 中非管理员的密码与 `biori2026` 不一致（宋学伟登录失败），且 DB 查询增加延迟依赖。

## 最终架构

**所有用户统一硬编码验证，不走 CloudBase DB：**

```javascript
function doLogin() {
  // 1. 密码硬编码比对 biori2026
  if (pwd !== 'biori2026') { /* 密码错误 */ return; }

  // 2. 从 personnel.json 获取角色/部门
  fetch('../数据/pricing/_personnel.json')
    .then(function(data) {
      var found = data.personnel.find(p => p.name === name);
      if (found) {
        // 角色映射：personnel 中文职衔 → 系统角色
        var role = found.role;
        if (name === '刘新元' || role === '销售总监') role = 'admin';
        else if (role === '销售经理') role = 'manager';
        else role = 'sales';
        finishLogin({name, role, dept: found.dept, email: found.email});
      } else {
        // 不在人员表中也允许登录，默认 sales
        finishLogin({name, role: 'sales'});
      }
    });
}
```

## 角色映射规则

| personnel.json 职衔 | 系统角色 |
|---------------------|---------|
| 销售总监 / 销售管理负责人 / 刘新元 | `admin` |
| 销售经理 / 大客户经理 | `manager` |
| 其他（销售工程师等） | `sales` |

## CloudBase 保留用途

`user_roles` 集合仅用于 `loadUserList()` 填充登录下拉框（含角色图标），登录验证不再依赖 DB。
