Skip to content

feat(notification): add optional verified email delivery - #1004

Open
XiaoSeS wants to merge 5 commits into
mainfrom
feat/issue978-notification-email-20261022
Open

XiaoSeS wants to merge 5 commits into
mainfrom
feat/issue978-notification-email-20261022

Conversation

@XiaoSeS

@XiaoSeS XiaoSeS commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

当前保持 Draft,严格验收收尾中。复核发现的无界历史清理已修复并推送 b388c544;新增真实 PostgreSQL 清理上限与竞争验证,以及同提交镜像/新库迁移、4 万条记录实际调度清理。新版全量源检查已通过,验收矩阵增量结果仍在汇总;CI 收尾前不作可合并结论。

需求与范围

Closes #978

新增可选业务邮件通知,复用部署方 SMTP。升级后平台邮件与用户四类邮件偏好默认关闭;邮箱需独立验证,既有登录、注册和站内通知保持兼容。

产品行为

  • 用户按发布、审核、提升、举报类别选择关闭/即时/摘要;摘要默认每小时,后台可配置 5–1440 分钟。
  • 同一用户跨技能、跨类别合成摘要;邮件最多预览 50 条,完整明细登录后按权限分页查看。
  • SMTP 故障恢复时,将可确认未发送的到期摘要按用户合并;明确临时故障从首次失败起默认最多 24 小时退避重试。
  • 永久拒绝直接失败;发送结果未知不自动重发,人工重试须确认重复风险。
  • 主动关闭有持久取消边界,重新开启不补发关闭期间的历史事件;已取得发送授权的当前尝试无法承诺撤回。
  • 后台提供投递状态与受限重试;SMTP 凭证只从部署配置/Secret 注入,不在后台显示。

实现与文档

  • PostgreSQL 持久队列、租约与发送授权;统一锁顺序;有限分页整理和取消扫尾;独立 SMTP 执行器。
  • 邮箱修订号与用途隔离的收件证明;跨账号、账号合并、邮箱修改及权限变化检查。
  • API 契约、生成前端类型、用户页面、系统配置、Compose/Helm 参数。
  • 接入说明:邮件通知,包含部署、验邮、摘要、故障处理及回退限制。
  • 需求与设计:OpenSpec。

验证范围

测试结果与当前实现提交绑定。新版提交在完整 Java 21+Go 工具链下单次全量后端 2812 项:0 失败、0 错误、30 项既有跳过。旧提交首轮缺 Go 的原始失败及恢复记录单独保留,没有移植为新版执行结论。前端 1179 项通过,类型检查、Lint、生产构建及 Helm 配置契约通过。

首轮矩阵覆盖 17 项需求、33 个功能场景及 1 个正常流程回归;旧提交的 28 项执行记录已保留,但“全部场景充分验证”的结论已撤回。严格复核正在逐项绑定补验及新提交证据。完成独立代码 Review、真实 PostgreSQL 状态/事务/竞争测试,以及本地精确提交镜像 Compose 验收。Chromium 共 8 项验证跨批次通过,包含验邮、偏好、配置并发 409、子路径、明细分页与跨账号隔离;本地真实 SMTP 验证即时、自然窗口摘要、451 自动恢复、550 失败、DATA 后断线 UNKNOWN,以及实际 RCPT 与收件头一致。

明确限制

  • 本地 SMTP 接受不等于真实企业邮箱收件;SPF/DKIM/DMARC、反垃圾策略须由部署方验证。
  • 既有业务提交后异步通知入箱仍是 best-effort;尚未将全部业务事件改造成事务 outbox。
  • 历史清理已改为持久标记与有限页删除,不再整组无界级联;候选查询扫描量仍可能随历史增长,未承诺容量 SLA。
  • Helm 已验证配置契约,未冒称完成真实集群部署;受控旧写入回退验证不等于启动旧应用镜像。

补充验证:租约到期前/恰好到期/到期后共 12 个数据库分区;真实准备中服务重启保留 151 项、150 个来源和原重试期限;新版容器实际分轮清理 40000 项/1040 来源,并验证未完成及未到期组保护、部分清理的详情与重试拒绝。上述证据分别标明原提交或新提交,不混用版本。

本 PR 不包含发布或生产部署。

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
…delivery

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
@XiaoSeS
XiaoSeS marked this pull request as ready for review October 22, 2026 11:02
@XiaoSeS
XiaoSeS marked this pull request as draft October 22, 2026 11:24
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
@XiaoSeS
XiaoSeS marked this pull request as ready for review October 22, 2026 12:07

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Add opt-in SMTP email delivery for new notifications

1 participant