通知事件触发时机备忘录
本文用于记录当前项目内通知事件码的实际触发时机,便于后续配置“通知策略中心”、排查通知链路和补齐模板。
1. 已实现事件
| 事件码 |
业务含义 |
触发时机 |
触发位置 |
业务对象 |
主要变量 |
默认接收人建议 |
备注 |
AUDIT_TASK_ASSIGNED |
审核任务已分配 |
会议提交后创建首个审核任务时触发 |
backend/src/main/java/com/writeoff/module/meeting/service/MeetingService.java:477 |
MEETING |
meetingId meetingTopic auditNode auditTaskId assigneeUserId |
AUDITOR |
仅在存在明确审核人时触发,实际派发封装在 MeetingService.triggerAuditTaskAssignedNotification() |
AUDIT_TASK_ASSIGNED |
审核任务已分配 |
某一审核节点通过后,创建下一审核节点任务时触发 |
backend/src/main/java/com/writeoff/module/audit/service/AuditService.java:294 |
MEETING |
meetingId meetingTopic auditNode auditTaskId assigneeUserId |
AUDITOR |
适用于初审通过进入复审、复审通过进入终审 |
AUDIT_TASK_ASSIGNED |
审核任务已分配 |
复审或终审拒绝后,流程回到首节点并重新创建首节点任务时触发 |
backend/src/main/java/com/writeoff/module/audit/service/AuditService.java:336 |
MEETING |
meetingId meetingTopic auditNode auditTaskId assigneeUserId |
AUDITOR |
这里是“重新发起首审任务”的提醒,不是给提交人的结果通知 |
AUDIT_APPROVED_FINAL |
终审通过 |
审核通过且不存在下一审核节点时触发 |
backend/src/main/java/com/writeoff/module/audit/service/AuditService.java:288 |
MEETING |
meetingId meetingTopic auditNode auditTaskId result opinion |
SUBMITTER |
当前用于“最终审核通过”通知提交人;result 固定解析为“通过” |
AUDIT_REJECTED |
审核拒绝 |
初审节点执行拒绝,且本轮审核直接结束时触发 |
backend/src/main/java/com/writeoff/module/audit/service/AuditService.java:312 |
MEETING |
meetingId meetingTopic auditNode auditTaskId result opinion |
SUBMITTER |
当前只在初审拒绝时触发;result 固定解析为“不通过” |
AUDIT_RETURNED |
审核退回 |
审核人员执行“退回修改”动作时触发 |
backend/src/main/java/com/writeoff/module/audit/service/AuditService.java:350 |
MEETING |
meetingId meetingTopic auditNode auditTaskId result opinion |
SUBMITTER |
与“拒绝”分开建码;result 固定解析为“退回” |
USER_CREATED |
用户创建成功 |
新用户创建完成后自动触发 |
backend/src/main/java/com/writeoff/module/system/service/SystemUserService.java:778 |
USER |
email validFrom validTo tenantCode tenantName loginPath |
TARGET_USER |
与会议审核无关,但已是现网实际触发事件 |
2. 兼容保留事件
| 事件码 |
当前状态 |
说明 |
备注 |
AUDIT_APPROVED |
兼容保留,不再作为主触发事件 |
前端通知策略页和状态文案仍保留该选项,用于兼容历史策略或历史数据 |
后端审核主流程已改为触发 AUDIT_APPROVED_FINAL;AuditService.resolveAuditResultText() 仍兼容识别该旧码 |
3. 预留未接入事件
| 事件码 |
当前状态 |
说明 |
建议 |
FINANCE_CONFIRMED |
前端已展示,后端未发现实际触发点 |
当前代码扫描只发现状态文案和通知策略下拉选项,未发现自动派发逻辑 |
后续确定“财务确认”的真实业务动作后,再补后端触发点和变量定义 |
4. 审核事件变量说明
4.1 审核任务分配类
AUDIT_TASK_ASSIGNED 当前由 MeetingService.triggerAuditTaskAssignedNotification() 统一派发,变量如下:
| 变量名 |
含义 |
meetingId |
会议 ID |
meetingTopic |
会议主题 |
auditNode |
当前审核节点,如 INIT_REVIEW、RE_REVIEW、FINAL_REVIEW |
auditTaskId |
审核任务 ID |
assigneeUserId |
被分配审核人的用户 ID |
4.2 审核结果类
AUDIT_APPROVED_FINAL、AUDIT_REJECTED、AUDIT_RETURNED 当前由 AuditService.triggerAuditNotification() 派发,变量如下:
| 变量名 |
含义 |
meetingId |
会议 ID |
meetingTopic |
会议主题 |
auditNode |
触发该动作的审核节点 |
auditTaskId |
审核任务 ID |
result |
结果文案,当前可能为“通过”“不通过”“退回” |
opinion |
审核意见 |
5. 当前落地口径
- “提醒审核人员”统一使用
AUDIT_TASK_ASSIGNED,由通知策略决定站内信、邮件等发送方式。
- “审核结果提醒提交人”当前拆分为三个结果事件:
AUDIT_APPROVED_FINAL、AUDIT_REJECTED、AUDIT_RETURNED。
- 复审通过本身不会直接通知提交人,因为流程仍未结束;它会触发下一节点的
AUDIT_TASK_ASSIGNED,通知下一位审核人。
- 复审或终审拒绝时,当前实现是重置到首审并重新派发首审任务,因此会触发
AUDIT_TASK_ASSIGNED,但不会额外触发 AUDIT_REJECTED。
- 前端当前默认接收人规则已对齐:
AUDIT_TASK_ASSIGNED -> AUDITOR
AUDIT_APPROVED_FINAL -> SUBMITTER
AUDIT_REJECTED -> SUBMITTER
AUDIT_RETURNED -> SUBMITTER
USER_CREATED -> TARGET_USER
6. 后续建议
- 在“通知策略中心”中为上述事件分别配置默认模板,避免事件已触发但无可用策略。
- 若业务上希望“复审拒绝/终审拒绝”同时通知提交人,需要补充一个新的结果事件,或调整现有拒绝分支逻辑。
- 若后续启用
FINANCE_CONFIRMED,应先明确触发动作、接收人、变量字段,再补后端派发。
7. 建议通知文案模板
7.1 使用说明
- 系统当前通知模板占位符语法为
${变量名}。
- 以下模板均只使用当前后端已实际传递的变量,可以直接用于现有通知模板配置。
auditNode 当前是英文枚举值,如 INIT_REVIEW、RE_REVIEW、FINAL_REVIEW。如果希望直接展示“初审 / 复审 / 终审”中文名称,建议后续补充 auditNodeName 变量。
- 以下内容更适合站内信和邮件;如果后续要接短信,建议再单独准备精简版。
7.2 AUDIT_TASK_ASSIGNED
- 模板名称:会议审核任务提醒
- 适用场景:会议提交审核后、审核通过流转到下一节点后、复审/终审拒绝后重新回到初审时
subjectTemplate:会议审核任务待处理
titleTemplate:会议《${meetingTopic}》待您审核
contentTemplate:
您有一条新的会议审核任务待处理。
会议主题:${meetingTopic}
会议ID:${meetingId}
当前审核节点:${auditNode}
审核任务ID:${auditTaskId}
请尽快登录系统完成审核处理。
7.3 AUDIT_REJECTED
- 模板名称:会议初审拒绝通知
- 适用场景:初审拒绝时触发
subjectTemplate:会议初审未通过通知
titleTemplate:您提交的会议《${meetingTopic}》初审未通过
contentTemplate:
您提交的会议审核未通过。
会议主题:${meetingTopic}
会议ID:${meetingId}
处理节点:${auditNode}
审核结果:${result}
审核意见:${opinion}
请根据审核意见修改后重新提交。
7.4 AUDIT_RETURNED
- 模板名称:会议退回修改通知
- 适用场景:退回修改时触发
subjectTemplate:会议已退回修改
titleTemplate:您提交的会议《${meetingTopic}》已退回修改
contentTemplate:
您提交的会议已被退回修改。
会议主题:${meetingTopic}
会议ID:${meetingId}
处理节点:${auditNode}
审核结果:${result}
审核意见:${opinion}
请根据审核意见完成修改后再次提交审核。
7.5 AUDIT_APPROVED_FINAL
- 模板名称:会议终审通过通知
- 适用场景:最后一个审核节点通过时触发
subjectTemplate:会议终审通过通知
titleTemplate:您提交的会议《${meetingTopic}》已审核通过
contentTemplate:
您提交的会议已完成审核并通过。
会议主题:${meetingTopic}
会议ID:${meetingId}
通过节点:${auditNode}
审核结果:${result}
审核意见:${opinion}
您可以继续后续业务处理。
7.6 模板命名建议
AUDIT_TASK_ASSIGNED:会议审核任务提醒
AUDIT_REJECTED:会议初审拒绝通知
AUDIT_RETURNED:会议退回修改通知
AUDIT_APPROVED_FINAL:会议终审通过通知