2.2 KiB
2.2 KiB
模块迁移方案 — 05 特殊场景
模板说明:描述定时任务、导入导出、状态机、事件触发等特殊业务场景。如果模块无特殊场景,写"无"即可。 参考范例:
docs/客户管理及公海池迁移方案.md第五章
定时任务
任务 1:[任务名称]
| 项目 | 内容 |
|---|---|
| 触发频率 | [如:每天凌晨 1 点] |
| 说明 | [业务描述] |
| Java 源码 | shanxia/crm/backend/.../XxxTask.java |
业务逻辑:
- [步骤1]
- [步骤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 |
门户导出步骤(强制):
- 从 Java
CrmXxxVo复制带@ExcelDictFormat(dictType="...")的字段映射。 - 在
crm_export_columns.py用ExportColumn("列标题", "camelCaseField", dict_type="...")声明。 - 路由:
rows, _ = list_xxx(...)→return export_rows_to_xlsx_response(...)。 - 前端:
exportXxx使用responseType: 'blob'(见ref-frontend-diff.md)。
非字典列(姓名、手机号等)只写 ExportColumn("标题", "field") 即可。布尔列可用 formatter=_yes_no(参考联系人导出)。
状态机 / 业务流程
流程 1:[流程名称]
状态A → (触发条件) → 状态B → (触发条件) → 状态C
| 转换 | 触发条件 | 伴随操作 |
|---|---|---|
| A→B | [条件] | [更新哪些字段/写入哪些记录] |
事件触发器
触发器 1:[名称]
| 触发时机 | 伴随操作 | Java 源码 |
|---|---|---|
| [如:新增跟进记录后] | [如:更新客户最后跟进时间/跟进次数] | ... |