Files
shanxia2.0/docs/data-migration/00-master-plan.md
T
2026-07-13 20:26:43 +08:00

4.3 KiB
Raw Blame History

生产数据同步总体规划

编写日期: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
超级管理员 保留 admin 账号(不按中文名改)
租户编号 统一 shanxia2.0
主键 ID(全局) 原系统 id 原样迁入:bigint/int → 同值 VARCHAR 字符串;详见 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
  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