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

81 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 开发日志:2026-06-16 M01-B 数据库迁移与兼容层
## 1. 本次目标
建立首批正式数据库迁移、验证 SQL、最小 seed、旧表兼容映射和后端 MySQL 连接池基础。
## 2. 本次完成
- 新增 `2026061601_m01b_core_schema` 的 up/down/verify SQL。
- 新增 `qipai_tenants``qipai_stores``qipai_rooms``qipai_members``qipai_orders``qipai_payments``qipai_devices``qipai_audit_logs``qipai_legacy_table_mappings`
- 新增最小脱敏 seed,记录旧表到新表的首批映射。
- 新增 `backend/src/db/mysql.ts`,用 `mysql2/promise` 生成连接池配置。
- 新增迁移契约测试和连接池契约测试,并接入 `npm test``check-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.sql``database/migrations/2026061601_m01b_core_schema.down.sql``database/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
- commit`3add64b`
- push 命令:git push origin main
- push 结果:本轮最终推送后复核
- push 时间:2026-06-16
- HEAD 与 origin/main 是否一致:本轮最终推送后复核
- 失败原因与重试命令:无