feat(server): 完成 F15 邮件通知(SMTP/Nodemailer)\n\n- 新增 email 服务(EMAIL_ENABLED + SMTP_* 配置)\n- 待办/审批/付款/密码重置触发可选邮件,失败降级不阻塞\n- 更新 server/README 邮件配置说明,并推进 CSV 状态为 DONE
这个提交包含在:
+14
-1
@@ -65,7 +65,20 @@ npm run seed:trialrun
|
||||
- 解锁:`POST /api/users/:id/unlock`(权限:`system.users`)。
|
||||
- 弱密码拦截:
|
||||
- 采用 `zxcvbn` 评分,默认 `score < 2` 拒绝(返回 `VALID_001.details.password`)。
|
||||
- 可通过 `WEAK_PASSWORD_CHECK_ENABLED=false` 关闭(不建议生产关闭)。
|
||||
- 可通过 `WEAK_PASSWORD_CHECK_ENABLED=false` 关闭(不建议生产关闭)。
|
||||
|
||||
### 2.3.2 邮件通知(可选,F15)
|
||||
- 默认关闭:`EMAIL_ENABLED=false`
|
||||
- 开启后支持触发邮件(失败降级不阻塞主流程):
|
||||
- 新待办分配(workflow.task_assigned)
|
||||
- 审批结果(approved/rejected/returned)
|
||||
- 付款完成(reimbursement.paid)
|
||||
- 密码重置(forgot-password / reset-password)
|
||||
- 需要配置 SMTP:
|
||||
- `SMTP_HOST`、`SMTP_PORT`(默认 587)、`SMTP_SECURE`(465 通常为 true)
|
||||
- `SMTP_USER`、`SMTP_PASS`(按 SMTP 服务要求)
|
||||
- `EMAIL_FROM`(发件人地址)
|
||||
- `EMAIL_BASE_URL`(可选,邮件内“查看详情”链接的站点前缀;为空则尝试使用 `APP_ORIGIN` 的第一个值)
|
||||
|
||||
### 2.4 启动服务
|
||||
```bash
|
||||
|
||||
在新工单中引用
屏蔽一个用户