Files
qipai/docs/devlogs/2026-06-16-M01-B-数据库迁移与兼容层.md
T

3.3 KiB
Raw Blame History

开发日志:2026-06-16 M01-B 数据库迁移与兼容层

1. 本次目标

建立首批正式数据库迁移、验证 SQL、最小 seed、旧表兼容映射和后端 MySQL 连接池基础。

2. 本次完成

  • 新增 2026061601_m01b_core_schema 的 up/down/verify SQL。
  • 新增 qipai_tenantsqipai_storesqipai_roomsqipai_membersqipai_ordersqipai_paymentsqipai_devicesqipai_audit_logsqipai_legacy_table_mappings
  • 新增最小脱敏 seed,记录旧表到新表的首批映射。
  • 新增 backend/src/db/mysql.ts,用 mysql2/promise 生成连接池配置。
  • 新增迁移契约测试和连接池契约测试,并接入 npm testcheck-backend.ps1
  • 调整连接池凭据字段传递方式,避免误触明文秘密扫描。
  • 更新 release manifest dry-run,使其识别迁移文件已存在但尚未执行。

3. 修改文件

  • backend/package.json
  • backend/src/config.ts
  • backend/src/db/mysql.ts
  • backend/tests/migration-contract.test.mjs
  • backend/tests/mysql-pool-contract.test.mjs
  • database/migrations/2026061601_m01b_core_schema.*.sql
  • database/seeds/2026061601_m01b_minimal_seed.sql
  • scripts/dev/windows/check-backend.ps1
  • scripts/dev/windows/check-release-manifest.ps1
  • scripts/dev/windows/check-repo-completeness.ps1
  • scripts/setup/deploy-business.sh

4. 数据库变化

  • 是否有变化:是。
  • 迁移文件:database/migrations/2026061601_m01b_core_schema.up.sqldatabase/migrations/2026061601_m01b_core_schema.down.sqldatabase/migrations/2026061601_m01b_core_schema.verify.sql
  • 种子文件:database/seeds/2026061601_m01b_minimal_seed.sql
  • 回滚方式:空库或演练库可执行 down SQL;生产含业务数据后必须先备份并人工确认。

5. API 变化

  • 新增:无。
  • 修改:无。
  • 删除:无。
  • 兼容旧接口:本轮只建立旧表映射,不暴露业务 API。

6. 前端变化

  • 小程序:无。
  • 后台管理端:无。

7. 部署变化

release manifest dry-run 已能记录 databaseMigration=PROJECT_PRESENT_MIGRATION_NOT_RUN。生产迁移执行入口尚未接入菜单,不能视为生产数据库已变更。

8. 测试结果

  • npm --prefix backend test:通过。
  • powershell -ExecutionPolicy Bypass -File scripts/dev/windows/check-backend.ps1:通过。
  • powershell -ExecutionPolicy Bypass -File scripts/dev/windows/check-secrets.ps1:通过。
  • npm audit --omit=dev(在 backend/ 执行):通过,生产依赖审计 0 漏洞。

9. 欠缺 / 风险

  • 尚未连接真实 MySQL 执行 up/down/verify。
  • Kysely 当前安全修复版要求 Node 22;本轮先使用 mysql2/promise 连接池,后续若升级运行时再评估 Kysely。
  • 旧数据迁移脚本未生成,真实旧库兼容读取 Repository 仍待下一步实现。

10. 下一步

为 M01-B 增加迁移执行器或 MySQL dry-run 环境,并建立旧表兼容读取 Repository 的第一批查询。

11. Git 与 Gitea 推送信息

  • 远端:ssh://git@git.txyundm.cn:2222/panda/qipai.git
  • 分支:main
  • commit3add64b
  • push 命令:git push origin main
  • push 结果:本轮最终推送后复核
  • push 时间:2026-06-16
  • HEAD 与 origin/main 是否一致:本轮最终推送后复核
  • 失败原因与重试命令:无