78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# 模块迁移方案 — 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 源码 |
|
||
|---------|---------|----------|
|
||
| [如:新增跟进记录后] | [如:更新客户最后跟进时间/跟进次数] | `...` |
|