用途:为构建生产级 Frappe 企业应用(如 CRM、Helpdesk、HRMS 等多实体系统)提供架构模式参考,适用于设计 SLA 驱动工作流、分配与队列管理、审计与活动日志、以及邮件/电话/CRM 等外部系统集成。
主要能力:
- 数据建模:以规范化 DocType 为核心,用 Link 字段建立关系,用子表承载活动、时间线与明细行,目标类型可变时用 Dynamic Link。
- 状态机:可选 Workflow DocType(基于角色的状态转换)、docstatus 提交流(0 草稿、1 已提交、2 已取消),或自定义 status 字段加校验。
- 权限:用 User Permissions 做行级过滤并结合 Role Permissions;RPC 方法内需用 frappe.has_permission 显式复查。
- 活动轨迹:通过 Activity Log 或自定义子表记录变更,如用 has_value_changed 捕获状态变化。
- SLA:定义 SLA DocType(实体类型、响应时间、解决时间、升级规则),创建时计算 response_by 与 resolution_by,并用定时任务检查超期。
- 分配与队列:支持轮询分配(按 current_load 排序)与 Assignment Rules 自动分配。
- 通知与升级:用 Notification DocType 配置 SLA 临近超期、分配变更、状态流转、客户回复等通知,并设置多级升级链。
- 外部集成:集中在 integrations 模块,用 frappe.enqueue 后台任务同步邮件等数据。
使用方式:按资料中的步骤顺序推进——先设计数据模型,再实现状态机、权限、活动轨迹、SLA、分配队列、通知升级与集成;完成后按验证清单核对工作流转换、API 权限、活动日志、SLA 计算、通知触发与集成同步。
适用场景:CRM、Helpdesk、HRMS 及类似多实体、SLA 驱动、需要审计与外部集成的企业应用。
限制与注意事项:前端须使用 Frappe UI(Vue 3 + TailwindCSS),不使用原生 JS 或 jQuery;工作流应尽量线性并考虑回滚与取消、挂起等异常状态;外部调用需 try/except、日志与重试;并发更新用 for_update=True 加锁;SLA 需按 UTC 存储比较并处理时区;批量操作使用 frappe.enqueue;角色名避免硬编码。资料未提供具体收费、价格或平台信息。