refactor: integrate model platform backend

This commit is contained in:
Winnie
2026-07-30 13:43:29 +08:00
parent baee7a60e1
commit 6d6c70cea8
97 changed files with 19724 additions and 2146 deletions
+71
View File
@@ -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`
- MySQL8.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。