Skip to content

release: 准备 Smart Bill Manager v0.2.4 - #79

Merged
tuoro merged 12 commits into
mainfrom
codex/v0.2.4-integration
Aug 10, 2026
Merged

release: 准备 Smart Bill Manager v0.2.4#79
tuoro merged 12 commits into
mainfrom
codex/v0.2.4-integration

Conversation

@tuoro

@tuoro tuoro commented Aug 10, 2026

Copy link
Copy Markdown
Owner

概要

准备 Smart Bill Manager v0.2.4 发布候选,集中收紧启动迁移、邮箱密钥一致性、服务边界、OCR 生命周期和生产部署门禁。

主要变更

数据迁移与邮箱密钥

  • 启动时先检查 schema_migrations,遇到程序不支持的未来数据库版本时,在修改业务 schema 前拒绝启动。
  • 新增邮件日志身份迁移:按所有者、邮箱配置、邮箱目录和消息 UID 识别重复项,在单一事务中保留质量最高的记录,并无损合并全部发票关联和可保留元数据后才移除冗余副本。
  • 对无效历史 JSON、更新/删除行数异常和唯一索引校验失败统一回滚,失败时不写入迁移记录。
  • 历史邮箱密码迁移在写入任何新密文前验证全部已有密文;密钥缺失、损坏或不匹配时阻止启动,不生成替代密钥,也不留下明密文混合状态。

服务边界与 OCR 生命周期

  • 将 Dashboard 近期支付及发票计数下沉到支付服务和仓储,统一执行所有者、草稿和关联发票边界。
  • 行程导出使用可识别的领域错误,handler 不再直接匹配错误字符串。
  • 支付与发票服务共享由应用持有的 OCR worker,启动、识别和关闭归入同一生命周期。
  • OCR worker 关闭进入终态后拒绝新请求,可中断排队、启动、管道读写与自动重启,并确保子进程只回收一次。
  • CLI fallback 与 worker 的同一关闭状态绑定:worker 关闭、请求取消或超时后不再启动 CLI;已在途 CLI 会被取消并纳入停机等待,覆盖关闭与 fallback 注册之间的竞态。

依赖、Compose 与发布文档

  • 将传递依赖 nanoid 从 3.3.16 更新到 3.3.18,并恢复高危依赖审计门禁。
  • 新增 docker-compose.production.yml,固定 NODE_ENV=production,空 JWT_SECRET 在解析阶段即失败,后端继续要求至少 32 个字符的持久密钥。
  • 将前端版本、锁文件和 GHCR 镜像示例更新为 0.2.4。
  • 修正从 v0.1.0 升级的可执行顺序:拉取新代码前仅用旧版基础 Compose 停机和备份;拉取后再创建或更新 .env、设置持久 JWT、校验 production override 并启动。
  • CHANGELOG 明确本版本没有删表、删列或丢弃业务关联的破坏性迁移。

本地验证

  • 目标 OCR shutdown/fallback 竞态测试连续 100 轮通过。
  • CGO_ENABLED=0 go test -count=1 ./... 通过。
  • CGO_ENABLED=0 go vet ./...CGO_ENABLED=0 go build ./... 通过。
  • npm cinpm audit --audit-level=high(0 漏洞)、零警告 lint、58/58 前端测试和生产构建通过。
  • 基础 Compose 成功解析为 development;production override 在空 JWT 时正确失败,并在有效 JWT 时解析为 production。
  • git diff --check main...HEAD 通过。

GitHub Actions 验证

最终验证:Build and Publish Docker Image / run 31367138420

  • CGO_ENABLED=1 的完整 SQLite 集成测试通过,后端整体覆盖率为 38.7%,达到不低于 35.0% 的门槛。
  • 前端依赖审计为 0 vulnerabilities,零警告 lint、58/58 测试和生产构建通过。
  • Buildx 使用本次 PR 提交构建并加载完整镜像;PR 事件未登录容器仓库,也未推送镜像。
  • production Compose 使用满足长度要求的非敏感 CI JWT 启动同一构建镜像,容器通过 GET /api/health 进入 healthy;验证结束后容器、网络和数据卷均已清理。

本 PR 已转为 Ready for Review;不在此流程中打 tag、创建 Release 或合并。

@tuoro
tuoro marked this pull request as ready for review August 10, 2026 08:18
@tuoro
tuoro merged commit 3a070f7 into main Aug 10, 2026
2 checks passed
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.

1 participant