# P0-4:用户同步 > **前置**:部门(step-02)、角色菜单(step-03) > **规则**:`user_no` = 中文名;管理员保留 `admin` > **映射表**:[../mappings/user_mapping.csv](../mappings/user_mapping.csv) --- ## 1. 目标 将 sx `bx_user`、sx CRM `sys_user`、dibang `users` 合并写入门户 `sys_user`,并生成全局 `user_mapping.csv` 供 P1/P2 使用。 --- ## 2. 执行前检查 ```sql -- 目标库:确认仅 admin 存在 SELECT id, user_no, nick_name FROM sys_user WHERE del_flag = 0; -- 源库 sx:统计有效用户 SELECT COUNT(*) FROM bx_user WHERE del_flag = 0; SELECT COUNT(*) FROM sys_user WHERE del_flag = '0'; -- 源库 dibang:活跃账号 SELECT id, username, role FROM users WHERE is_active = 1; ``` 人工审核 [02-user-unification.md](../02-user-unification.md) §3.1(吴九华手机号等)。 --- ## 3. 执行步骤(计划) | 步骤 | 操作 | 状态 | |------|------|------| | 1 | 备份目标库 `mysqldump shanxia2.0` | 未执行 | | 2 | 审核并定稿 `user_mapping.csv` | 初稿已生成 | | 3 | 开发/运行 `backend/scripts/migrate_users.py --dry-run` | 待开发 | | 4 | 写入 `sys_user` + `sys_user_role` | 未执行 | | 5 | 回填 `user_mapping.csv` 的 `new_user_id` | 未执行 | | 6 | 验收:中文名登录 + 角色菜单 | 未执行 | --- ## 4. 验收标准 - [ ] `sys_user` 有效用户数 = 映射表行数(约 25 员工 + admin,地磅账号按需) - [ ] 每名员工可用 **中文名** `user_no` 登录 - [ ] `admin` 仍可登录且为超级管理员 - [ ] 地磅操作员可登录且仅见地磅菜单 - [ ] `user_mapping.csv` 中每条 bx/crm 源 ID 均有 `new_user_id` - [ ] 无重复 `user_no`(冲突已按手机后四位处理) --- ## 5. 执行日志模板 执行后在 `logs/` 新建 `YYYY-MM-DD-HHMM-users.md`: ```markdown ## 批次:YYYY-MM-DD HH:MM ### 环境 - 目标库: - 操作人: ### 执行命令 (粘贴命令,密码脱敏) ### 行数对比 | 表 | 执行前 | 执行后 | 预期 | |----|--------|--------|------| ### 抽样登录 | user_no | 结果 | ### 问题与处理 ```