Files
qipai/docs/db-changelog/2026-06-16-M01-B-core-schema.md
T
2026-06-18 09:55:47 +08:00

2.2 KiB
Raw Blame History

数据库变更:2026-06-16 M01-B 核心 schema 基线

背景

M01-B 开始建立正式数据库迁移与旧表兼容层。旧 SQL 仅作为表意、字段类别和业务关系参考,不导入旧 INSERT 数据、文件 URL、日志或生产配置。

Up

  • database/migrations/2026061601_m01b_core_schema.up.sql
  • 新增迁移记录表:qipai_schema_migrations
  • 新增核心业务表:qipai_tenantsqipai_storesqipai_roomsqipai_membersqipai_ordersqipai_paymentsqipai_devicesqipai_audit_logs
  • 新增兼容映射表:qipai_legacy_table_mappings

Down

  • database/migrations/2026061601_m01b_core_schema.down.sql
  • 仅用于空库、本地开发库或预生产演练库回滚;生产含业务数据后必须先备份并按运维流程人工确认。

数据迁移说明

  • 首期只提供 schema 与脱敏 seed,不迁移真实旧数据。
  • 旧表映射写入 database/seeds/2026061601_m01b_minimal_seed.sql
  • 金额字段统一使用整数分,例如 total_amount_centspaid_amount_centsamount_cents
  • 时间字段统一 DATETIME(3),内部按 UTC 保存,业务日期后续按门店 timezone 计算。
  • 业务表包含 tenant_id;可逻辑删除的表包含 deleted_at

验证方式

npm --prefix backend test
powershell -ExecutionPolicy Bypass -File scripts/dev/windows/check-backend.ps1

backend/tests/migration-contract.test.mjs 会检查 up/down/verify/seed 文件包含核心表、tenant_id、整数分金额字段、DATETIME(3) 和旧表映射。

2026-06-18 MySQL 8 空库往返验证

  • 环境:WSL Ubuntu 26.04 原生临时副本,MySQL 8.4.9;该结果不代替 Ubuntu 24.04 生产验收。
  • 顺序:up → verify → down → up → verify
  • 结果:首次及再次 up 均恢复 10 张核心表和迁移版本 2026061601down 后 10 张表全部移除。
  • 语句数:up 11、verify 3、down 10
  • 清理:随机临时数据库与最小权限临时账号在正常和模拟异常退出后均删除,残留计数为 0/0
  • 入口:在 WSL 原生测试副本执行 bash scripts/dev/wsl/mysql-migration-roundtrip.sh
  • 部署影响:无;未连接生产数据库,未修改部署菜单和正式 schema。