Skip to content

v0.4.0(2026-09-05)

主题:Admin 运营闭环 + 数据层测试 + 集成接线

v0.4.0 聚焦三件事:把 admin 后台补成可日常运营的闭环(联系消息、聚合看板、webhook 日志), 把数据访问层与 API 的测试补齐,并把通知体系从"仅站内"扩展到邮件通道。

主要新功能

两步验证(TOTP/MFA)

  • 全流程:注册时绑定二维码 → 验证码确认 → 可解除。
  • 登录挑战页 /auth/mfa:已验证 TOTP 因子的用户登录后强制 aal2 验证。
  • 备用恢复码:生成与兑换,前后端均有单测覆盖。

通知体系与邮件 Worker

  • 通知类型扩展(deployment / security_alert 等),邀请、角色变更、支付成功等 服务端事件会跨用户创建通知。
  • 邮件偏好联动矩阵:总开关 emailNotifications + 按类型细分开关, 只影响邮件通道,站内通知中心全量展示。
  • 通知邮件 Worker:外部 cron 调用 POST /api/cron/digestCRON_SECRET 鉴权), 拉取待发通知经 Resend 发送并回执 markEmailSent。同一用户的通知合并为一封 摘要邮件;失败批次下一次 cron 自动重试(详见 docs/design/email-templates.md)。
  • 侧边栏未读 badge 轮询、单条/全部已读、读取失败错误态与空态引导。

联系消息运营闭环

  • contact_messages 表(迁移 012)+ 处理状态机(迁移 015,状态单向流转)。
  • Admin 收件箱:搜索、状态筛选、分页;垃圾内容启发式拒收。
  • 联系页补充结构化数据(SEO)。

Admin 后台增强

  • 聚合看板新增联系消息与 webhook 事件统计。
  • 用户列表服务端分页、webhook payload 查看、审计元数据 details 查看。

登录安全

  • 登录失败分级锁定(邮箱滑动窗口 5 次 / 15 分钟)。
  • 登录审计日志(成功/失败/MFA/兑换/OAuth)。
  • 邮箱未确认时提供重发确认邮件入口。

其他

  • 数据保留策略(迁移 014):pg_cron 守卫调度 + webhook 事件清理函数。
  • API 质量收敛:错误格式统一 jsonNoStore、日志 trace-id、health DB 自检、 checkout 幂等/重复订阅拦截、未知 webhook 事件 Sentry 告警。
  • ⌘K 命令面板、面包屑导航、QueryErrorState 错误重试、EmptyState 统一空态、 离线横幅、路由进度条、定价页月/年切换。
  • SEO:博客动态 OG 分享图、RSS feed、PWA manifest、sitemap 真实 lastmod。

变更

  • TanStack Table v9 原生迁移:移除 legacy 桥,显式 features + 行模型槽位(ADR-009); DataTable 全面国际化(751 个翻译键)。
  • Bundle 基线 2467kB → 2603kB(功能增量,无新依赖)。
  • 硬编码路由收敛到 ROUTES 常量。

修复

  • webhook events action 补 admin 守卫(防绕过入口越权读取)。
  • 年付节省金额浮点精度取整;面包屑命名空间缺键。
  • 恢复码相关构建问题(use server 文件导出限制、node:crypto 动态导入)。
  • 迁移 011 补 profiles lower(email) 函数索引(EXPLAIN 复审发现 Seq Scan)。

测试

  • Repository 层 7 模块单测全覆盖;API 路由与 actions 单测补齐。
  • safe-redirect fuzz、date 边界、CSV 注入变体等边界用例。
  • a11y 与 trace-id / CSP nonce 的 E2E 断言。

完整变更清单见仓库根目录 CHANGELOG.md

基于 MIT 协议开源