Scert/doc/构建版本与数据库支持矩阵.md

5.0 KiB
Raw Blame History

构建版本与数据库支持矩阵

核查日期:2026 年 9 月 27 日。本文区分代码支持、隔离测试和正式生产准入,不把驱动存在视为兼容性验收。

一、工具链与依赖

项目 当前固定来源 当前核查值 发布要求
Go backend/go.mod、backend/go.sum 模块内 go1.26.6 windows/amd64 在模块内记录实际版本,不使用仓库根目录的版本推断
工具链选择 go env GOTOOLCHAIN auto 自动选择仍必须与模块要求一致,不得降低版本绕过失败
Node.js 本机 node --version v24.19.0 当前验证基线;后续升级需重跑测试和构建
npm 本机 npm.cmd --version 11.17.0 使用锁文件安装;Windows 使用 npm.cmd
Vue frontend/package-lock.json 3.5.41 发布以锁文件为准,不以 package.json 的范围猜测实际版本
Vite 同上 6.4.3 同上
Vue 构建插件 同上 5.2.4 同上
SQLite Go 驱动 backend/go.mod modernc.org/sqlite v1.37.0 驱动版本不等于数据库引擎版本
MySQL Go 驱动 同上 github.com/go-sql-driver/mysql v1.9.3 不代表 MySQL 所有服务端版本均通过验收
PostgreSQL Go 驱动 同上 github.com/jackc/pgx/v5 v5.9.2 同上
编译目标 build/build-release.ps1 windows/amd64、linux/amd64 核心二进制 CGO_ENABLED=0、-trimpath

核查命令:

cd backend
go version
go env GOVERSION GOTOOLCHAIN GOOS GOARCH
go mod verify
go test -p 1 -count=1 -timeout=3m ./...
go vet -p=1 ./...
cd ../frontend
node --version
npm.cmd --version
npm.cmd ci
npm.cmd test
npm.cmd run build

本轮未重新执行 npm.cmd ci;已执行现有依赖下的前端测试、构建和生产依赖审计。发布前仍需在独立干净环境按锁文件安装,记录操作系统实际版本和发布清单。

二、数据库支持矩阵

数据库 预期定位 代码现状 本轮验证 尚未满足的正式验收
SQLite 单机、开发、轻量部署 驱动、初始化、迁移 1~9、CLI 备份恢复 临时独立库从版本 0~9 升级、重复迁移、非法历史和新版数据库拒绝 并发读写/锁、服务重启、完整业务数据升级恢复
MySQL 5.7 历史兼容目标,仍保留实现 独立方言、迁移 1~9、部分 DDL 重入检查 文件/嵌入/登记一致性、已有单元测试 指定版本真实实例的初始化、升级、失败重入、备份恢复和业务回归
MySQL 8.0 正式生产支持目标 同上 同上 同上;不能用 5.7 或 SQLite 测试替代
PostgreSQL 正式生产支持目标,实际服务端版本待本轮复核 独立方言、迁移 1~9、严格 TLS 和官方备份恢复工具接入 文件/嵌入/登记一致性、凭据/TLS 单元测试 当前版本真实集群、初始化、升级、失败回滚、备份恢复和业务回归

正式支持目标不等于已经生产放行。旧文档中的 PostgreSQL 实机记录仅作为线索,不替代当前候选版本复测;本轮没有连接外部 MySQL/PostgreSQL,也没有清空生产数据库。

三、迁移与降级边界

  1. 三种数据库必须提供相同编号和名称的迁移,SQL 内容允许因方言不同而不同。
  2. migration_catalog_test.go 检查源码目录、嵌入资源和 latestMigrationVersion;新增文件忘记登记或嵌入时必须失败。
  3. Migrate 在执行后续迁移前读取完整有序版本历史;版本高于程序支持范围或历史不连续时拒绝启动,不自动删除或修补版本记录。
  4. MySQL 的 DDL 重入和 PostgreSQL 的事务回滚必须用对应引擎验证,不能通过文件数量一致推断行为一致。
  5. 当前不存在通用向下迁移承诺。降级须使用兼容程序及对应已验证备份,在隔离环境验证后再操作,禁止通过删除 schema_migrations 绕过拒绝。

四、真实实例验收步骤

每个数据库和声明支持的服务端版本独立执行以下步骤,保存版本、候选提交、命令退出码和脱敏证据:

  1. 建立明确归属的隔离空库和最小权限账户,验证 TLS 与主机身份;不使用现有业务库。
  2. 按正式初始化入口完成配置;创建用户、域名、DNS 账户、服务器和任务,验证权限隔离。
  3. 从支持的旧版本数据库升级,检查数据、索引、默认值、归属和任务状态;重复执行不产生额外变更。
  4. 注入迁移中断,在恢复后确认重入/回滚;新版数据库被旧程序拒绝且原数据保持不变。
  5. 按该数据库的 CLI 备份恢复流程在另一隔离空库恢复;验证敏感配置和证书关联,篡改备份必须拒绝。
  6. 重启服务验证持久化,完成前后端业务回归;记录未执行、跳过和失败项,不汇总为通过。

MySQL/PostgreSQL 没有当前实机证据的格子保持待验收。本矩阵不授权清理共享数据库或同机其他服务。