Page:
Task-20-MVP-1-可逆迁移与-admin-基线
Pages
Architecture-and-Code-Map
Audience-Document-Template
Business-Rules-and-Glossary
Common-Changes
Delivery-Documentation-Guide
Deployment-Template
Deployment-and-Operations
Development-Workflow
Existing-Project-Adoption-Guide
Home
Local-Development-and-Verification
New-Project-Documentation-Setup
Product-Requirements-Overview
Project-Profile
Task-1-完善技术基线与实施约束
Task-10-实现-Provider-协议、mock-上游与内嵌-worker
Task-11-实现-portal-认证、异步提交与鉴权查询
Task-12-按确认原型实现-portal-用户界面
Task-13-完成-MVP-0-集成验收与运行闭环
Task-14-增加-Windows-本地开发启动脚本
Task-15-将现有-worker-接入-portal-运行与优雅退出
Task-16-明确-MVP-1-路由与-Provider-技术设计
Task-17-制作-MVP-1-管理端运营原型
Task-18-制作-MVP-1-用户端增强原型
Task-19-MVP-1-多上游可用性与运营管理
Task-2-制作-MVP-0-用户端生成页原型
Task-20-MVP-1-可逆迁移与-admin-基线
Task-21-MVP-1-路由核心与故障转移
Task-22-MVP-1-多-Provider-协议安全调用与-Worker-原子尝试
Task-23-MVP-1-管理端-API、凭据轮换与连通性审计
Task-24-go-admin-MVP-1-运营界面
Task-25-MVP-1-portal-提交契约与游标历史
Task-26-MVP-1-portal-用户界面
Task-27-MVP-1-集成验收
Task-28-安全管理员-bootstrap-命令
Task-29-管理端改为账号密码登录
Task-30-Provider-API-Key-明文存储与回显变更
Task-31-完全移除用户点数展示与需求
Task-32-移除-admin-ui-残留验证码登录交互
Task-33-修复-admin-ui-生产构建-runtime-资源缺失
Task-34-修复-admin-ui-SCSS-变量导入生产白屏
Task-36-MVP-2-API治理技术设计
Task-37-MVP-2-API-Key页面原型
Task-38-统一本地服务启停
Task-39-Supervisor-托管本地服务
Task-4-MVP-0-单上游安全异步生成闭环
Task-40-修复管理端动态菜单视图路径
Task-41-MVP-2-数据迁移与-API-Key-核心能力
Task-42-用户-API-Key-生命周期与-Portal-页面
Task-43-OpenAPI-v1-认证与生成接口
Task-44-实现三维限流与生成队列延后
Task-45-实现-API-安全审计与管理端-API
Task-46-交付管理端-API-Key-治理页面
Task-47-执行-MVP-2-跨模块集成验收
Task-48-简化单人开发工作流
Task-5-准备-MVP-0-可复现开发与测试环境
Task-50-用户端仅账号密码登录
Task-51-终端用户密码最小长度调整为-6-位
Task-52-规范化管理端-API-Key-幂等撤销时间响应
Task-53-修复-MVP-2-Portal-E2E-审计数据清理顺序
Task-55-Provider-出站端口白名单配置
Task-56-Portal-YAML-运行配置
Task-58-图片生成-300-秒受控复验
Task-59-管理端分组导航与适用系统模块原型
Task-6-初始化-Go-项目骨架与可逆数据库迁移
Task-60-??-images_edits-??????.-
Task-60-对齐-images_edits-图片编辑协议.-
Task-61-修正生成尝试状态展示
Task-65-完善生成记录耗时和时间展示
Task-66-建立管理端四分组菜单与权限-migration
Task-67-适配管理端系统-API-与管理员保护
Task-68-实现四分组导航与系统管理页面
Task-69-管理端系统模块集成与安全回归
Task-7-实现核心领域模型、状态规则和-Prompt-渲染
Task-8-实现-SSRF-安全-HTTP、AES-GCM-密钥信封和受保护本地存储
Task-9-实现-MySQL-8-SKIP-LOCKED-租约队列、attempt-原子记录和最终-CAS
Task-Archive-Template
Troubleshooting
unnamed
Clone
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.
20 MVP-1 可逆迁移与 admin 基线
- 类型:需求
- 所属 Epic:#3
- 所属 MVP / 版本:#19 / MVP-1
- 状态:已完成
- 日期:2026-08-21
- Gitea 工单:#20
- 实现提交:
6035ac4d9a4da2f52f5dc05f4e7a9e3791f39b95
背景与目标
为已确认的 MVP-1 提供唯一的生产表结构演进路径:建立可运行的 go-admin 最小系统基线,并在保留 MVP-0 数据的前提下引入 Provider 凭据版本、模型能力、路由池、熔断 runtime、连通性审计和生成记录增量字段。生产启动仍不得使用 GORM AutoMigrate。
最终方案
000002_admin_baseline固化 go-adminf06540883b41d03782bb6b2c4150f298f328c6b6所需身份、权限及 CRUD 元数据sys_*表;不创建管理员账号或已知密码。回退前通过数据库 guard 确认不存在管理员业务数据。000003_mvp1_routing先创建新表并回填凭据信封/能力,再增加引用和约束,最后清空旧providers.api_key_enc。回退先恢复活动凭据到旧列,再移除新引用和表;不支持的x-goog-api-key降级会在改表前拒绝。000004_mvp1_admin_seed只按稳定的角色键、菜单路径和 API handle 写入或删除 Chorus 角色、菜单、API、菜单关联和 Casbin 权限。sys_casbin_rule保留 go-admin 的 512 字符字段,使用生成的 SHA-256 列去重,避免utf8mb4复合唯一索引超过 MySQL 3072 字节上限。
修改文件
migrations/000002_admin_baseline.{up,down}.sql:审查后的 go-admin 基线和管理员数据回退 guard。migrations/000003_mvp1_routing.{up,down}.sql:凭据、路由、熔断、审计和 MVP-0 增量字段的可逆演进。migrations/000004_mvp1_admin_seed.{up,down}.sql:Chorus 管理角色、菜单、API 和权限种子。migrations/migrations_test.go:迁移编号、关键表/约束、禁用 AutoMigrate、稳定种子键和 guard 的静态契约检查。migrations/mysql_integration_test.go:显式开启的 MySQLup/down/up集成验证。
验收结果
| 验收标准 | 结果 |
|---|---|
| 空 MySQL 8 与含 MVP-0 fixture 的 up/down/up | 通过 |
| 凭据信封回填、active credential 与 down 恢复 | 通过 |
| 路由、能力、审计、generation 增量字段及外键/索引 | 通过 |
| 管理菜单/API/权限种子按稳定键可逆 | 通过 |
| 生产未引入 AutoMigrate 或真实 Provider 调用 | 通过 |
测试
- MySQL 8 隔离库:
up -> legacy MVP-0 fixture -> up -> down 3 -> up通过;验证 provider credential 回填/恢复、MVP-0 generation 保留、能力、admin 种子和 schema。 - MySQL 8 空库:
up -> down -all -> up通过,最终版本4;无终端用户、1 个 Chorus 角色、18 个 Chorus API 种子。 go build ./...、go vet ./...、go test -count=1 ./...、go test -race -count=1 ./migrations通过。python dev_scripts/harness.py check --strict和python -m unittest discover -s tests -v(42 项)通过。- 未验证部分:尚未接入 go-admin 二进制、管理 API 或管理 UI;由 #21-#24 继续实现。未调用真实 Provider,未使用真实用户或生产数据。
遗留问题
无。本工单不实现路由算法、上游调用、管理 API 或页面逻辑。
相关提交
6035ac4d9a4da2f52f5dc05f4e7a9e3791f39b95feat: 增加 MVP-1 可逆迁移与 admin 基线 (#20)
验收结论
- 用户于 2026-08-21 明确确认 #20 验收通过。
- 迁移与验证证据见本页的验收结果和测试;未导出 docs/task/。