4.5 KiB
4.5 KiB
公海池模块迁移方案 — 01 概述
编写日期:2026-05-31 状态:待审核
迁移范围
本次迁移涉及 CRM 系统中的 3 个子模块:
| 模块 | 功能概述 | 涉及表 |
|---|---|---|
| 公海池客户列表 | 公海池中客户的查看、领取、分配、查看详情 | crm_customer(status=pool) |
| 公海池操作记录 | 记录放入/领取/分配/回收等操作的流水 | crm_customer_pool |
| 公海池规则管理 | 自动回收规则的 CRUD + 定时执行 | crm_customer_pool_rule |
注意:公海池统计(
CrmCustomerPoolStatisticsController)本次 不迁移,作为后续独立任务。
涉及的数据库表
共 2 张业务表(公海池客户复用 crm_customer 主表的 status 字段):
| 序号 | 表名 | 说明 | 原始 DDL 位置 |
|---|---|---|---|
| 1 | crm_customer_pool |
公海池操作记录表 | docs/sql/sx.sql 第 859 行 |
| 2 | crm_customer_pool_rule |
公海池自动回收规则表 | docs/sql/sx.sql 第 892 行 |
crm_customer 主表中的公海池相关字段(status, into_pool_time, into_pool_by, into_pool_reason, claim_time, assign_time, assign_by, protect_time)已在客户管理模块迁移时处理。
现有 shanxia2.0 代码存在的问题
⚠️ 现有公海池代码存在多处违反迁移指南的问题,需全部修正。
| # | 问题 | 影响 |
|---|---|---|
| 1 | crm_customer_pool 字段名被改(from_user_id→before_owner_user_id 等) |
数据语义违反原 CRM |
| 2 | crm_customer_pool_rule 字段名被改(pool_name→rule_name 等) |
数据语义违反原 CRM |
| 3 | crm_customer_pool_rule.rule_type 值被改(no_follow→follow_time) |
字典值违反原 CRM |
| 4 | crm_customer_pool_rule.status 类型+值被改(varchar→smallint) |
字典值违反原 CRM |
| 5 | 缺少公海池规则管理前端页面 | 功能缩减 |
| 6 | 缺少公海池操作记录查看页面 | 功能缩减 |
| 7 | poolRule.ts API URL 与后端路由不匹配 |
Bug |
| 8 | 原有"公海池"页面位于 customer/pool/ 子目录 |
应为独立路由 |
迁移策略
方法论
采用「先清理旧代码,再从原 CRM 拷贝,然后逐段适配」:
- 清理:删除现有 shanxia2.0 中不符合规范的公海池代码
- 拷贝:从 CRM 前端源码拷贝 Vue 组件到 shanxia2.0
- 适配:逐行阅读后按需修改,适配门户 UI 规范(Fresh Mint)
- 后端:DDL 回归 sx.sql 原始设计,Model/Schema/CRUD/API 全部重写
数据库适配规则
按 docs/crm-migration/ref-database-rules.md 执行 7 项公共字段适配,业务字段与 sx.sql 完全一致。
本次核心修正:
crm_customer_pool字段名回归:from_user_id,to_user_id,reason,create_by_namecrm_customer_pool_rule字段名回归:pool_name,timeout_days,sortrule_type值回归:no_follow/no_dealstatus值回归:enable/disable(varchar)
字典数据一致性
| 字典类型 | 字典值(与 sx.sql 一致) |
|---|---|
crm_pool_operation_type |
into / claim / assign / recycle |
crm_pool_rule_type |
no_follow / no_deal |
crm_pool_rule_status |
enable / disable |
前端文件映射
| 原 CRM 文件 | shanxia2.0 目标文件 | 功能说明 |
|---|---|---|
crm/pool/index.vue |
views/crm/customer/pool/index.vue |
公海池客户列表 |
crm/pool/components/claimDialog.vue |
views/crm/customer/pool/components/ClaimDialog.vue |
领取弹窗 |
crm/pool/components/assignDialog.vue |
views/crm/customer/pool/components/AssignDialog.vue |
分配弹窗 |
| — | views/crm/customer/pool/components/RuleDialog.vue |
规则新增/编辑弹窗(新页面) |
| — | api/crm/pool.ts |
公海池 API(统一文件) |
后端文件清单
| 文件 | 路径 | 说明 |
|---|---|---|
| Model | backend/app/models/crm_models.py |
修正 CrmCustomerPool 和 CrmCustomerPoolRule |
| Schema | backend/app/schemas/crm/customer_pool.py |
重写,字段名回归 |
| Schema | backend/app/schemas/crm/pool_rule.py |
重写,字段名回归 |
| CRUD | backend/app/crud/crm/customer_pool.py |
重写 |
| CRUD | backend/app/crud/crm/pool_rule.py |
重写 |
| API | backend/app/api/crm.py |
修正路由 |
| Task | backend/app/tasks/customer_pool.py |
修正定时任务 |
| DDL | docs/sql/incremental_crm_customer_pool.sql |
增量 SQL 脚本 |