模板说明:描述定时任务、导入导出、状态机、事件触发等特殊业务场景。如果模块无特殊场景,写"无"即可。 参考范例:
docs/客户管理及公海池迁移方案.md第五章
| 项目 | 内容 |
|---|---|
| 触发频率 | [如:每天凌晨 1 点] |
| 说明 | [业务描述] |
| Java 源码 | shanxia/crm/backend/.../XxxTask.java |
业务逻辑:
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 |
门户导出步骤(强制):
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(参考联系人导出)。
状态A → (触发条件) → 状态B → (触发条件) → 状态C
| 转换 | 触发条件 | 伴随操作 |
|---|---|---|
| A→B | [条件] | [更新哪些字段/写入哪些记录] |
| 触发时机 | 伴随操作 | Java 源码 |
|---|---|---|
| [如:新增跟进记录后] | [如:更新客户最后跟进时间/跟进次数] | ... |