将 015–023 双文件冲突线性化为 015–050;提供已有库 schema_migrations 修复脚本;admin Playwright 对齐 /psy/admin/ 预览路径。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.3 KiB
2.3 KiB
Migration renumber — merge collision fix (2026-08-13)
Problem
main(产品 ECR-009…016)与 Ops 线(ECR-013A…040)合并后,000015–000023 各有两套 migration。
本仓 internal/db.Migrate 以完整文件名为 version,两边都可能被执行,但同号双文件易误导运维,也不兼容 golang-migrate。重编号消除歧义并固定依赖顺序。
Canonical sequence (after fix)
| Ver | Name | Origin |
|---|---|---|
| 015 | ops_commerce | main Ops-D |
| 016 | ops_system | main Ops-E |
| 017 | unique_self_profile | main ECR-011 |
| 018 | admin_rbac | Ops ECR-013A |
| 019 | account_lifecycle | Ops ECR-013B |
| 020 | membership_plans | Ops |
| 021 | redemption_codes | Ops |
| 022 | ask_ops_read | Ops |
| 023 | content_safety_filter | Ops |
| 024 | ask_quality_feedback | Ops |
| 025 | ai_system_prompts | Ops |
| 026 | crisis_policies | Ops |
| 027 | user_avatar | main ECR-015 |
| 028 | mbti_label | main |
| 029 | mbti_questions | main |
| 030 | oejts_mbti | main |
| 031 | mbti_full_60 | main |
| 032 | home_daily_tips | main ECR-014 |
| 033–050 | knowledge…ops_hardening | Ops ECR-023…040 + hardening |
000001–000014 未改。
Fresh database
# API 使用 internal/db.Migrate(version = 完整 stem,如 000018_admin_rbac)
cd apps/api && go run ./cmd/server # 或集成测试 setup 会 Migrate
空库应写入 50 条 schema_migrations(已在 yuxingu_mig_check 验证)。
Already-applied databases(必做)
本仓 version 键是 完整文件名(非纯数字)。重编号后若不改 schema_migrations,会把已执行过的 SQL 再跑一遍。
对已有库先执行修复脚本:
psql "$DATABASE_URL" -f scripts/repair-schema-migrations-renumber.sql
然后再启动 API / Migrate。
A. 可丢弃的开发库
重建库后 Migrate。
B. 需保留数据
- 跑
scripts/repair-schema-migrations-renumber.sql - 再 Migrate(只会补尚未有的 stem)
- 若曾手改脏数据,对照
SELECT version FROM schema_migrations ORDER BY version与本表核对
分叉两边「同号不同义」时,必须以实际 DDL为准。
Doc debt
ESS / Spec 里仍可能写旧号(如「migration 000015 = RBAC」)。以本文件与 apps/api/migrations/ 文件名为准;后续 ECR 文档可逐步改引用。