161 lines
8.5 KiB
Markdown
161 lines
8.5 KiB
Markdown
# 通知事件触发时机备忘录
|
||
|
||
本文用于记录当前项目内通知事件码的实际触发时机,便于后续配置“通知策略中心”、排查通知链路和补齐模板。
|
||
|
||
## 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. 当前落地口径
|
||
|
||
1. “提醒审核人员”统一使用 `AUDIT_TASK_ASSIGNED`,由通知策略决定站内信、邮件等发送方式。
|
||
2. “审核结果提醒提交人”当前拆分为三个结果事件:`AUDIT_APPROVED_FINAL`、`AUDIT_REJECTED`、`AUDIT_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_REVIEW`、`RE_REVIEW`、`FINAL_REVIEW`。如果希望直接展示“初审 / 复审 / 终审”中文名称,建议后续补充 `auditNodeName` 变量。
|
||
4. 以下内容更适合站内信和邮件;如果后续要接短信,建议再单独准备精简版。
|
||
|
||
### 7.2 `AUDIT_TASK_ASSIGNED`
|
||
|
||
- 模板名称:会议审核任务提醒
|
||
- 适用场景:会议提交审核后、审核通过流转到下一节点后、复审/终审拒绝后重新回到初审时
|
||
- `subjectTemplate`:`会议审核任务待处理`
|
||
- `titleTemplate`:`会议《${meetingTopic}》待您审核`
|
||
- `contentTemplate`:
|
||
|
||
```text
|
||
您有一条新的会议审核任务待处理。
|
||
会议主题:${meetingTopic}
|
||
会议ID:${meetingId}
|
||
当前审核节点:${auditNode}
|
||
审核任务ID:${auditTaskId}
|
||
请尽快登录系统完成审核处理。
|
||
```
|
||
|
||
### 7.3 `AUDIT_REJECTED`
|
||
|
||
- 模板名称:会议初审拒绝通知
|
||
- 适用场景:初审拒绝时触发
|
||
- `subjectTemplate`:`会议初审未通过通知`
|
||
- `titleTemplate`:`您提交的会议《${meetingTopic}》初审未通过`
|
||
- `contentTemplate`:
|
||
|
||
```text
|
||
您提交的会议审核未通过。
|
||
会议主题:${meetingTopic}
|
||
会议ID:${meetingId}
|
||
处理节点:${auditNode}
|
||
审核结果:${result}
|
||
审核意见:${opinion}
|
||
请根据审核意见修改后重新提交。
|
||
```
|
||
|
||
### 7.4 `AUDIT_RETURNED`
|
||
|
||
- 模板名称:会议退回修改通知
|
||
- 适用场景:退回修改时触发
|
||
- `subjectTemplate`:`会议已退回修改`
|
||
- `titleTemplate`:`您提交的会议《${meetingTopic}》已退回修改`
|
||
- `contentTemplate`:
|
||
|
||
```text
|
||
您提交的会议已被退回修改。
|
||
会议主题:${meetingTopic}
|
||
会议ID:${meetingId}
|
||
处理节点:${auditNode}
|
||
审核结果:${result}
|
||
审核意见:${opinion}
|
||
请根据审核意见完成修改后再次提交审核。
|
||
```
|
||
|
||
### 7.5 `AUDIT_APPROVED_FINAL`
|
||
|
||
- 模板名称:会议终审通过通知
|
||
- 适用场景:最后一个审核节点通过时触发
|
||
- `subjectTemplate`:`会议终审通过通知`
|
||
- `titleTemplate`:`您提交的会议《${meetingTopic}》已审核通过`
|
||
- `contentTemplate`:
|
||
|
||
```text
|
||
您提交的会议已完成审核并通过。
|
||
会议主题:${meetingTopic}
|
||
会议ID:${meetingId}
|
||
通过节点:${auditNode}
|
||
审核结果:${result}
|
||
审核意见:${opinion}
|
||
您可以继续后续业务处理。
|
||
```
|
||
|
||
### 7.6 模板命名建议
|
||
|
||
1. `AUDIT_TASK_ASSIGNED`:会议审核任务提醒
|
||
2. `AUDIT_REJECTED`:会议初审拒绝通知
|
||
3. `AUDIT_RETURNED`:会议退回修改通知
|
||
4. `AUDIT_APPROVED_FINAL`:会议终审通过通知
|