v1.2.1 — 产品级加固
⚠️ 升级必读(部署行为变更)
- 容器改为非 root 运行(
node, uid 1000)。若宿主./data目录属主不是 uid 1000(群晖等 NAS 常见),升级后首次启动前执行一次:sudo chown -R 1000:1000 ./data,否则数据无法写入
🐳 Docker 产品级加固
- 优雅退出:
docker stop/restart时正确处理 SIGTERM——停止接新连接、SQLite WAL 落盘后退出(消除强制终止的数据库损坏风险) - 健康检查:镜像内置
HEALTHCHECK(/health 探活,30s 间隔),docker ps可见 healthy 状态 - 资源与日志限制:compose 默认 cpus 1.0 / mem 512M / 日志 10M×3(防长期运行日志吃满磁盘)
🔒 健壮性
- 数据并发保护:掉落统计双写源(采集增量 + 手动导入)改原子读改写(
state.mutate),并发时不再丢更新 - SSE 心跳:30s 心跳防 NAT/反向代理静默掐断长连接(半开连接会静默丢推送)
- 前端请求超时:所有 API 请求 30s 超时(防无限挂起)
- 批量购买前置校验:未设预算池 / 可用额度不足时直接 toast(带行动指引与金额明细),不再打开模态
📖 文档
- README 中英新增:数据备份与恢复(热备/稳备/损坏重建)、升级与回滚、安全注意事项(HTTP 明文警示 + Caddy 反代配置)、FAQ 五类排查
♿ 体验
- 对比度达 WCAG AA(次级文字双主题提亮);模态焦点管理(打开聚焦、关闭归还触发元素);toast 读屏可感知(aria-live);错误文案附行动指引(余额/预算/令牌)
- 持有卡片「锁定中」更名「冷却中」(与手动锁定区分概念,中英)
🐳 镜像:doc2page/mcard:1.2.1(amd64)
变更对比:v1.2.0...v1.2.1