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/digest(CRON_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。