refactor: integrate model platform backend
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# Migrations
|
||||
|
||||
MySQL 8 的 Alembic 迁移目录。
|
||||
|
||||
当前数据库设计基线位于 `4/model_platform_schema.sql`。
|
||||
|
||||
## V1 基线
|
||||
|
||||
- Alembic:`1.18.5`
|
||||
- 基线版本:`20260724_0001`
|
||||
- 迁移文件:`versions/20260724_0001_v1_schema_baseline.py`
|
||||
- 业务表:26 张
|
||||
- 外键:71 个
|
||||
- 索引:94 个
|
||||
- `upgrade()`:可以从空 MySQL 8 数据库建立完整 V1 Schema。
|
||||
- `downgrade()`:按反向依赖顺序删除 26 张业务表。
|
||||
|
||||
现有 `model_platform` 数据库原本由 V1 DDL 建立,结构校验一致后已使用
|
||||
`alembic stamp head` 接管,没有重复执行建表。
|
||||
|
||||
## 常用命令
|
||||
|
||||
所有命令必须通过环境变量传入连接串,仓库中不保存数据库密码:
|
||||
|
||||
```powershell
|
||||
$env:DATABASE_URL = "mysql+asyncmy://<user>:<password>@<host>:3306/<database>?charset=utf8mb4"
|
||||
alembic -c alembic.ini current
|
||||
alembic -c alembic.ini check
|
||||
alembic -c alembic.ini upgrade head
|
||||
```
|
||||
|
||||
迁移发布后不得直接修改旧版本;表结构变化应新增 revision,并评审自动生成的
|
||||
数据类型、约束、索引、默认值和回滚顺序。
|
||||
|
||||
## 第 8 小步验收记录
|
||||
|
||||
- 执行日期:2026-07-24
|
||||
- 目标服务:Docker Compose `mysql`
|
||||
- 数据库:`model_platform`
|
||||
- MySQL:8.0.36
|
||||
- 空库升级:通过
|
||||
- 模型与数据库结构校验:26 张表、71 个外键、差异 0
|
||||
- `alembic check`:`No new upgrade operations detected`
|
||||
- 回滚到 base:通过,剩余业务表 0
|
||||
- 临时测试数据库:验收后已删除
|
||||
- 现有开发库版本:`20260724_0001 (head)`
|
||||
|
||||
## 第 9 小步数据迁移
|
||||
|
||||
旧版 `文件1/platform_data/system.json` 已通过
|
||||
`data/migrate_system_json.py` 事务化迁移到 MySQL:
|
||||
|
||||
- `roles`:2 行;
|
||||
- `permissions`:13 行;
|
||||
- `role_permissions`:21 行;
|
||||
- `users`:4 行;
|
||||
- `audit_logs`:26 行。
|
||||
|
||||
迁移工具默认 dry-run,显式 `--apply` 才写库;重复执行不会重复写入。
|
||||
|
||||
## 第 10 小步 Workspace 迁移
|
||||
|
||||
旧版 `文件1/server.py` 中的 `WORKSPACE_DEFINITIONS` 已通过
|
||||
`data/migrate_legacy_workspaces.py` 事务化迁移到 MySQL:
|
||||
|
||||
- `workspaces`:2 行;
|
||||
- `workspace_members`:4 行;
|
||||
- 已有 `audit_logs.workspace_id`:按用户唯一 Workspace 关系补齐 26 行。
|
||||
|
||||
迁移工具使用 AST 读取静态常量,不执行旧版服务代码;默认 dry-run,显式
|
||||
`--apply` 才写库。重复执行与后端镜像内隔离 dry-run 的变更数均为 0。
|
||||
Reference in New Issue
Block a user