# 生产数据同步总体规划 > **编写日期**:2026-07-12 > **状态**:P0 方案已定稿(用户:中文名登录) > **目标库**:`shanxia2.0`(租户 `tenant_no = 'shanxia2.0'`) --- ## 1. 目标 1. 在门户 2.0 建立**统一用户体系**(`sys_user` + 角色 + 菜单权限) 2. 将 sx 库 CRM、报销生产数据迁入对应 `crm_*`、`bx_*` 表 3. 将地磅库业务数据迁入 `db_*` 表 4. 全过程可审计、可回滚、可重复执行(幂等) --- ## 2. 已确认决策 | 决策项 | 结论 | |--------|------| | 登录账号(`user_no`) | **以中文名为准**(真实姓名);见 [02-user-unification.md](./02-user-unification.md) | | 超级管理员 | 保留 `admin` 账号(不按中文名改) | | 租户编号 | 统一 `shanxia2.0` | | **主键 ID(全局)** | **原系统 id 原样迁入**:`bigint`/`int` → 同值 `VARCHAR` 字符串;详见 [05-id-preservation-policy.md](./05-id-preservation-policy.md) | | 主键例外 | **仅 `sys_user`**:P0 已用门户 UUID,外键经 `user_mapping`;字典 id 按类型+值对齐 | | 密码 | 优先沿用 bx/CRM 的 bcrypt;地磅明文密码**不迁入**,统一重置临时密码 | | 地磅用户 | 并入 `sys_user`,分配「地磅操作员」角色;无中文名的账号单独处理 | --- ## 3. 阶段划分 ``` P0 基础主数据 ├── 字典 sys_dict_data ├── 部门 sys_dept ├── 角色 sys_role + sys_role_menu └── 用户 sys_user + sys_user_role ← 阻塞项,最先人工确认映射表 P1 CRM 业务(~7110 行级 INSERT) └── 产品 → 客户 → 线索 → 商机 → 报价 → 合同(按依赖顺序) P2 报销业务(~857 行) └── 费用项/工作流 → 备用金 → 报销单 → 附件 P3 地磅业务(~4254 行) └── 车辆 → migrate_dibang_data.py(计划/地磅单/出入库) P4 验收 └── 抽样单据 + 登录 + 附件 URL + 行数对账 ``` --- ## 4. 执行原则 1. **先映射、后灌数**:P0 生成 `user_mapping`;业务表 ID 多为恒等映射,见 [05-id-preservation-policy.md](./05-id-preservation-policy.md) 2. **dry-run 优先**:所有脚本支持 `--dry-run`,生产执行前在测试库跑通 3. **只追加日志**:`phase-*/logs/` 按批次追加,不覆盖 4. **备份**:每阶段执行前 mysqldump 目标库 5. **不双写**:切换窗口内旧系统只读对照,不做双向同步 --- ## 5. 脚本与产物 | 产物 | 路径 | 状态 | |------|------|------| | 用户映射表 | `mappings/user_mapping.csv` | 已生成初稿 | | 产品分类 ID 映射 | `mappings/crm_product_category_id_mapping.csv` | ✅ 5 行恒等映射 | | 产品 ID 映射 | `mappings/crm_product_id_mapping.csv` | ✅ 239 行恒等映射 | | 产品编号映射 | `mappings/crm_product_no_mapping.csv` | ✅ 239 行 old→new | | 产品编号统一脚本 | `backend/scripts/renumber_crm_product_no.py` | ✅ 已执行 | | CRM ID 映射 | `mappings/crm_id_mapping.csv` | 待 P1(汇总;多为 source_id=new_id) | | 报销 ID 映射 | `mappings/bx_id_mapping.csv` | 待 P2 | | 地磅迁移脚本 | `backend/scripts/migrate_dibang_data.py` | 已有 | | 用户迁移脚本 | `backend/scripts/migrate_users.py` | 已有 | | 产品分类迁移脚本 | `backend/scripts/migrate_crm_product_category.py` | ✅ 已执行 | | 产品迁移脚本 | `backend/scripts/migrate_crm_product.py` | ✅ 已执行(239 行) | --- ## 6. 风险摘要 | 风险 | 对策 | |------|------| | 中文名重复 | 映射表人工审核;冲突时 `user_no` 追加手机后四位 | | 吴九华等手机号不一致 | 映射表标注,合并时取 bx 或 CRM 较新记录 | | 工作流审批人节点 | 导入用户后重绑 `bx_workflow_node.approver_id` | | CRM `create_by` 为 bigint | 经 `user_mapping` 转为门户 `sys_user.id`(用户表为 P0 例外,不保留源 id) | | 附件 MinIO URL 失效 | P4 前批量 HEAD 检查 | --- ## 7. 相关文档 - CRM 数据注意事项:`docs/superpowers/specs/2026-05-30-crm-migration-design.md` §7 - 地磅数据脚本说明:`docs/db-migration/00-migration-plan.md` §7 - 报销范围:`docs/bx-migration/00-migration-plan.md`(代码移植;数据同步在本目录 P2) - 主键 ID 全局策略:[05-id-preservation-policy.md](./05-id-preservation-policy.md)