writeOff/docs/通知事件触发时机备忘录.md
haomingming db10401b13 0529
2026-05-29 10:38:34 +08:00

8.5 KiB
Raw Blame History

通知事件触发时机备忘录

本文用于记录当前项目内通知事件码的实际触发时机,便于后续配置“通知策略中心”、排查通知链路和补齐模板。

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_FINALAuditService.resolveAuditResultText() 仍兼容识别该旧码

3. 预留未接入事件

事件码 当前状态 说明 建议
FINANCE_CONFIRMED 前端已展示,后端未发现实际触发点 当前代码扫描只发现状态文案和通知策略下拉选项,未发现自动派发逻辑 后续确定“财务确认”的真实业务动作后,再补后端触发点和变量定义

4. 审核事件变量说明

4.1 审核任务分配类

AUDIT_TASK_ASSIGNED 当前由 MeetingService.triggerAuditTaskAssignedNotification() 统一派发,变量如下:

变量名 含义
meetingId 会议 ID
meetingTopic 会议主题
auditNode 当前审核节点,如 INIT_REVIEWRE_REVIEWFINAL_REVIEW
auditTaskId 审核任务 ID
assigneeUserId 被分配审核人的用户 ID

4.2 审核结果类

AUDIT_APPROVED_FINALAUDIT_REJECTEDAUDIT_RETURNED 当前由 AuditService.triggerAuditNotification() 派发,变量如下:

变量名 含义
meetingId 会议 ID
meetingTopic 会议主题
auditNode 触发该动作的审核节点
auditTaskId 审核任务 ID
result 结果文案,当前可能为“通过”“不通过”“退回”
opinion 审核意见

5. 当前落地口径

  1. “提醒审核人员”统一使用 AUDIT_TASK_ASSIGNED,由通知策略决定站内信、邮件等发送方式。
  2. “审核结果提醒提交人”当前拆分为三个结果事件:AUDIT_APPROVED_FINALAUDIT_REJECTEDAUDIT_RETURNED
  3. 复审通过本身不会直接通知提交人,因为流程仍未结束;它会触发下一节点的 AUDIT_TASK_ASSIGNED,通知下一位审核人。
  4. 复审或终审拒绝时,当前实现是重置到首审并重新派发首审任务,因此会触发 AUDIT_TASK_ASSIGNED,但不会额外触发 AUDIT_REJECTED
  5. 前端当前默认接收人规则已对齐:
    • AUDIT_TASK_ASSIGNED -> AUDITOR
    • AUDIT_APPROVED_FINAL -> SUBMITTER
    • AUDIT_REJECTED -> SUBMITTER
    • AUDIT_RETURNED -> SUBMITTER
    • USER_CREATED -> TARGET_USER

6. 后续建议

  1. 在“通知策略中心”中为上述事件分别配置默认模板,避免事件已触发但无可用策略。
  2. 若业务上希望“复审拒绝/终审拒绝”同时通知提交人,需要补充一个新的结果事件,或调整现有拒绝分支逻辑。
  3. 若后续启用 FINANCE_CONFIRMED,应先明确触发动作、接收人、变量字段,再补后端派发。

7. 建议通知文案模板

7.1 使用说明

  1. 系统当前通知模板占位符语法为 ${变量名}
  2. 以下模板均只使用当前后端已实际传递的变量,可以直接用于现有通知模板配置。
  3. auditNode 当前是英文枚举值,如 INIT_REVIEWRE_REVIEWFINAL_REVIEW。如果希望直接展示“初审 / 复审 / 终审”中文名称,建议后续补充 auditNodeName 变量。
  4. 以下内容更适合站内信和邮件;如果后续要接短信,建议再单独准备精简版。

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 模板命名建议

  1. AUDIT_TASK_ASSIGNED:会议审核任务提醒
  2. AUDIT_REJECTED:会议初审拒绝通知
  3. AUDIT_RETURNED:会议退回修改通知
  4. AUDIT_APPROVED_FINAL:会议终审通过通知