docs(education): record migration closure evidence

This commit is contained in:
2026-07-31 16:26:39 +08:00
parent 184452404d
commit c8a221acbc
13 changed files with 77 additions and 49 deletions

View File

@@ -239,6 +239,7 @@ yudao-module-education/src/main/resources/db/migration/education/
- `V4080` 增加第 20 条目录引用边 `education_question_version.question_id → education_question.id`,并为版本表增加第 12 个 ownership/scope 守卫;版本归属必须与题目完全一致。该迁移还建立 draft-first 生命周期、不可变题目版本、同事务追加式审计及历史已发布内容的 fail-closed 预检。
- `V4090` 增加 Question Placement 乐观版本、PUBLIC 管理拒绝、发布后放置冻结、发布前可用节点约束,以及 `education:question:classify` 权限种子。
- `V4100` 增加租户 Content Node 的 `DRAFT → ACTIVE → ARCHIVED` 生命周期、统一 `authoring_version` CAS、同事务追加式审计和 entry/parent 结构约束;不写入权限或角色种子。
- `V4110` 增加租户 Manual Question Collection 生命周期、ordered replace-all membership 和受保护的生命周期/成员变更 token`V4210` 通过向前 migration 将物理删除保护扩展到历史 PUBLIC 题集。
- `V4120` 增加租户 Category 与 bounded Practice Blueprint 的 `DRAFT → ACTIVE → ARCHIVED` 生命周期、统一 `authoring_version` CAS、事务内追加式审计、独立 RBAC 和学生端路由可见性约束;不授予任何角色。
- V4080/V4090 在平台 `system_menu` 已存在时条件写入 Education 权限种子;固定 ID 已被不同 permission 占用时迁移失败,且迁移不会向角色写入授权关系。
-`education_answer_idempotency``education_submit_idempotency` 在首次接管时保留,后续清理必须使用更高版本的独立向前 migration。
@@ -247,6 +248,8 @@ yudao-module-education/src/main/resources/db/migration/education/
首次接管已有 PostgreSQL 平台库时使用既定的 `4009` baseline。任何已存在 Education 表的环境都必须先核对实际表结构和 `flyway_schema_history`,不能仅凭表名视为兼容,也不能伪造 V4010/V4020 执行历史。
Flyway 必须使用显式的 `FLYWAY_USER`/`FLYWAY_PASSWORD` 迁移所有者账号,且该账号必须与 master 运行时 datasource 账号不同。运维先创建两个互不继承的 LOGIN role由 Flyway role 拥有目标 schema 和 migration 对象,再仅向 runtime role 授予业务表所需权限;不得授予、继承或拥有 V4080/V4100/V4110 的四张 `*_token` 表。应用启动会检查当前 runtime role 及其成员角色既不是这些表的 owner也没有 INSERT/UPDATE/DELETE/TRUNCATE 权限;缺表、同角色、继承 owner 或错误授权都会 fail closed。角色创建、密码轮换与 schema 授权由部署平台预置,不由 migration 创建或转移。
编译后确认 migration 已打包:
```bash