feat: MVP-2 数据迁移与 API Key 核心能力 #41

Closed
opened 2026-08-24 12:01:50 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:需求
  • 所属 Epic:#3
  • 所属 MVP / 版本:#35 / MVP-2
  • 阶段:已完成

原始需求

  • 来源:用户对话与已验收 #36/#37
  • 提出时间:2026-08-24
  • 脱敏摘要:面向现有受控用户交付安全的 API Key、OpenAPI 生成接口、限流、审计和必要管理页面;不开放注册、不自动删除数据、不增加计费或每日配额。

设计与原型门禁

  • 修改类型:生产实现
  • 已确认技术设计:Wiki Architecture-and-Code-Map,revision 1e8fea6c058d6d23f4a40183dd51708c8a4dae84
  • 已确认原型:prototypes/37/v1/index.html,#37 revision b65c47e5f701f67a8a06972e4f3e02c1f7bbd554
  • 状态:已确认(用户,2026-08-24)

依赖与并行

  • 前置工单:#36、#37(均已完成)
  • 是否允许并行:否;本任务是后续生产实现的数据和核心契约基础。

要解决什么

交付迁移 000006_mvp2_openapi_governance 与 internal/core API Key 核心能力:api_keys、api_audit_events、generations.available_at、索引/约束、管理权限 seed,以及随机令牌、仅哈希落库、状态判定和 repository 契约。

做什么 / 不做什么

  • 做:可逆 MySQL 迁移;API Key public_id/secret 格式、SHA-256 与常量时间校验;创建/列表/改名/撤销所需核心模型和 GORM repository;迁移及核心单元/集成测试。
  • 不做:HTTP 路由、页面、限流执行、上游调用、管理员 UI;不保存或回显数据库中的完整 Key。

子项目影响

  • 影响:migrations/、internal/core,必要的 repository 适配。
  • 跨子项目:是;共享契约以 #36 和迁移 SQL 为事实来源。
  • internal/core 不得 import Gin 或 go-admin。

验收标准

  • 完整 Key 只在创建结果内存值出现一次,数据库只有 SHA-256、前缀和元数据。
  • 撤销、到期、用户归属和唯一约束行为有测试。
  • 000006 up/down 在空库和含 MVP-1 数据库验证,down 明确数据丢失风险且不自动执行生产回退。
  • generations.available_at 和迁移 seed/索引可逆,生产未使用 AutoMigrate。
  • Go 测试、迁移静态检查、MySQL 集成验证和 Harness 检查通过。

文档影响

  • 更新 Architecture-and-Code-Map、Business-Rules-and-Glossary、Local-Development-and-Verification 与 Deployment-and-Operations 中实际迁移/配置入口;若实现未改变已确认设计,只更新“已实现”状态和命令。

风险和回退

迁移 down 会删除 API Key 与安全审计数据,属于需人工确认的数据丢失操作;本任务只在隔离 MySQL 验证 down,不对生产执行。回退代码提交不替代数据库回退评估。

实施与验证结果(2026-08-24)

  • 实现提交:98625ff;补充归属与唯一性验证:2871aba,均已推送 main。
  • go test ./...、go vet ./...、go -C admin test ./... 全部通过。
  • 独立 MySQL 8.4.8 数据库 chorus_mvp2_test 顺序完成迁移 up/down/up、非空数据 down 拒绝和 API Key 仓储事务测试;测试库已删除,未连接当前服务库或真实 Provider。
  • python dev_scripts/harness.py sync --check、check --strict 与 42 项 Harness 单测通过。
  • 核心 Wiki revision:Architecture f0a042b18061ece7423e3e7bb4219f84df78d71e;Business Rules 00ab703e701a3b9cb4107a3fb9a48fef6acea27d;Local Verification 9661a72756f4c6d53eabd454df03625d382f1ac0;Deployment 2eb4eb745005bbc3c7467b1202e4f0b779525224。
  • 任务归档:Task-41-MVP-2-数据迁移与-API-Key-核心能力,最终 revision 9134d168e2aa1e6918cb4542983227b79aa8def0。
  • 未验证:生产/共享数据库迁移与回退;HTTP、页面、限流和管理 UI 属后续工单。

用户验收

  • 用户于 2026-08-24 明确确认 #41 验收通过。
  • 验收归档提交:701e609。
## 基本信息 - 类型:需求 - 所属 Epic:#3 - 所属 MVP / 版本:#35 / MVP-2 - 阶段:已完成 ## 原始需求 - 来源:用户对话与已验收 #36/#37 - 提出时间:2026-08-24 - 脱敏摘要:面向现有受控用户交付安全的 API Key、OpenAPI 生成接口、限流、审计和必要管理页面;不开放注册、不自动删除数据、不增加计费或每日配额。 ## 设计与原型门禁 - 修改类型:生产实现 - 已确认技术设计:Wiki Architecture-and-Code-Map,revision `1e8fea6c058d6d23f4a40183dd51708c8a4dae84` - 已确认原型:`prototypes/37/v1/index.html`,#37 revision `b65c47e5f701f67a8a06972e4f3e02c1f7bbd554` - 状态:已确认(用户,2026-08-24) ## 依赖与并行 - 前置工单:#36、#37(均已完成) - 是否允许并行:否;本任务是后续生产实现的数据和核心契约基础。 ## 要解决什么 交付迁移 `000006_mvp2_openapi_governance` 与 `internal/core` API Key 核心能力:`api_keys`、`api_audit_events`、`generations.available_at`、索引/约束、管理权限 seed,以及随机令牌、仅哈希落库、状态判定和 repository 契约。 ## 做什么 / 不做什么 - 做:可逆 MySQL 迁移;API Key public_id/secret 格式、SHA-256 与常量时间校验;创建/列表/改名/撤销所需核心模型和 GORM repository;迁移及核心单元/集成测试。 - 不做:HTTP 路由、页面、限流执行、上游调用、管理员 UI;不保存或回显数据库中的完整 Key。 ## 子项目影响 - 影响:`migrations/`、`internal/core`,必要的 repository 适配。 - 跨子项目:是;共享契约以 #36 和迁移 SQL 为事实来源。 - `internal/core` 不得 import Gin 或 go-admin。 ## 验收标准 - [x] 完整 Key 只在创建结果内存值出现一次,数据库只有 SHA-256、前缀和元数据。 - [x] 撤销、到期、用户归属和唯一约束行为有测试。 - [x] 000006 up/down 在空库和含 MVP-1 数据库验证,down 明确数据丢失风险且不自动执行生产回退。 - [x] `generations.available_at` 和迁移 seed/索引可逆,生产未使用 AutoMigrate。 - [x] Go 测试、迁移静态检查、MySQL 集成验证和 Harness 检查通过。 ## 文档影响 - [x] 更新 Architecture-and-Code-Map、Business-Rules-and-Glossary、Local-Development-and-Verification 与 Deployment-and-Operations 中实际迁移/配置入口;若实现未改变已确认设计,只更新“已实现”状态和命令。 ## 风险和回退 迁移 down 会删除 API Key 与安全审计数据,属于需人工确认的数据丢失操作;本任务只在隔离 MySQL 验证 down,不对生产执行。回退代码提交不替代数据库回退评估。 ## 实施与验证结果(2026-08-24) - 实现提交:`98625ff`;补充归属与唯一性验证:`2871aba`,均已推送 `main`。 - `go test ./...`、`go vet ./...`、`go -C admin test ./...` 全部通过。 - 独立 MySQL 8.4.8 数据库 `chorus_mvp2_test` 顺序完成迁移 up/down/up、非空数据 down 拒绝和 API Key 仓储事务测试;测试库已删除,未连接当前服务库或真实 Provider。 - `python dev_scripts/harness.py sync --check`、`check --strict` 与 42 项 Harness 单测通过。 - 核心 Wiki revision:Architecture `f0a042b18061ece7423e3e7bb4219f84df78d71e`;Business Rules `00ab703e701a3b9cb4107a3fb9a48fef6acea27d`;Local Verification `9661a72756f4c6d53eabd454df03625d382f1ac0`;Deployment `2eb4eb745005bbc3c7467b1202e4f0b779525224`。 - 任务归档:`Task-41-MVP-2-数据迁移与-API-Key-核心能力`,最终 revision `9134d168e2aa1e6918cb4542983227b79aa8def0`。 - 未验证:生产/共享数据库迁移与回退;HTTP、页面、限流和管理 UI 属后续工单。 ## 用户验收 - 用户于 2026-08-24 明确确认 #41 验收通过。 - 验收归档提交:`701e609`。
Author
Owner

实现与验证已完成,当前状态为待验收。提交:98625ff、2871aba;任务归档 revision:303c052b19d660f3bc7aa6b228709d6429dd54dd。未对生产/共享数据库执行迁移或回退。

实现与验证已完成,当前状态为待验收。提交:`98625ff`、`2871aba`;任务归档 revision:`303c052b19d660f3bc7aa6b228709d6429dd54dd`。未对生产/共享数据库执行迁移或回退。
ila closed this issue 2026-08-24 14:19:29 +08:00
Author
Owner

用户已确认验收通过。任务归档最终 revision:9134d168e2aa1e6918cb4542983227b79aa8def0;验收镜像提交:701e609。#41 已完成并同步至 #35 与 #3。

用户已确认验收通过。任务归档最终 revision:`9134d168e2aa1e6918cb4542983227b79aa8def0`;验收镜像提交:`701e609`。#41 已完成并同步至 #35 与 #3。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/chorus#41