Files
shanxia2.0/docs/crm-migration/plan-template/05-special.md
T
2026-06-01 08:21:21 +08:00

2.2 KiB
Raw Blame History

模块迁移方案 — 05 特殊场景

模板说明:描述定时任务、导入导出、状态机、事件触发等特殊业务场景。如果模块无特殊场景,写"无"即可。 参考范例:docs/客户管理及公海池迁移方案.md 第五章


定时任务

任务 1:[任务名称]

项目 内容
触发频率 [如:每天凌晨 1 点]
说明 [业务描述]
Java 源码 shanxia/crm/backend/.../XxxTask.java

业务逻辑:

  1. [步骤1]
  2. [步骤2]

Python 实现位置:backend/app/tasks/{module}.py


导入导出

导入

项目 内容
模板字段 [列出 Excel 列]
校验规则 [唯一性、必填、格式]
Java 源码 ...

导出

项目 内容
导出字段 [列出 Excel 列]
字典列 [字段 → dict_type,对照 Java *Vo 的 @ExcelDictFormat]
Java 源码 ...Controller.export + CrmXxxVo.java
门户实现 backend/app/utils/crm_export_columns.py 增加 XXX_EXPORT_COLUMNS;路由调用 export_rows_to_xlsx_response

门户导出步骤(强制):

  1. 从 Java CrmXxxVo 复制带 @ExcelDictFormat(dictType="...") 的字段映射。
  2. 在 crm_export_columns.py 用 ExportColumn("列标题", "camelCaseField", dict_type="...") 声明。
  3. 路由:rows, _ = list_xxx(...) → return export_rows_to_xlsx_response(...)。
  4. 前端:exportXxx 使用 responseType: 'blob'(见 ref-frontend-diff.md)。

非字典列(姓名、手机号等)只写 ExportColumn("标题", "field") 即可。布尔列可用 formatter=_yes_no(参考联系人导出)。


状态机 / 业务流程

流程 1:[流程名称]

状态A → (触发条件) → 状态B → (触发条件) → 状态C
转换 触发条件 伴随操作
A→B [条件] [更新哪些字段/写入哪些记录]

事件触发器

触发器 1:[名称]

触发时机 伴随操作 Java 源码
[如:新增跟进记录后] [如:更新客户最后跟进时间/跟进次数] ...