fix: 修复 MVP-2 Portal E2E 审计数据清理顺序 #53

Closed
opened 2026-08-25 10:57:37 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:缺陷
  • 所属 Epic:#3
  • 所属 MVP / 版本:#35 / MVP-2
  • 来源集成验收:#47
  • 阶段:已完成

原始需求

  • 来源:执行 #47 的 Portal 四视口 E2E 清理
  • 提出时间:2026-08-25
  • 脱敏摘要:API Key E2E 会写 api_audit_events,fixture 清理仍先删除 api_keys,触发 RESTRICT 外键并遗留合成测试数据。

要解决什么

恢复 Portal E2E fixture 的可重复清理能力,使 MVP-2 安全审计数据按外键依赖顺序删除。

做什么 / 不做什么

  • 做:清理目标合成用户的 API 安全审计后,再删除 API Key、generation 和用户;重跑 fixture 清理与 E2E。
  • 不做:改变生产删除策略、自动删除业务数据、放宽外键或操作非 fixture 合成数据。

设计证据

  • 复用 #42 Portal E2E fixture 和 #45 API 安全审计外键设计。
  • 非产品 UI 变化,不需要新增原型。

验收标准

  • 含 API Key 生命周期审计的 E2E 合成用户可以完整清理。
  • 清理只按精确 fixture 用户和 portal-e2e-* 稳定键执行。
  • 四视口 Portal E2E 通过,清理后再次运行不受上次数据影响。

风险与回退

清理代码只在 E2E fixture 中运行且要求显式测试 DSN;必须先按用户 ID 删除审计,不扩大到全表。回退不会影响生产代码,但会恢复测试数据残留。

文档影响

  • 无长期文档影响:现有文档已规定 fixture 使用构造数据并负责清理,本修复恢复该既有行为。## 实施结果(2026-08-25)

  • Portal E2E fixture 按精确合成用户 ID 先删除 api_audit_events,再删除 API Key、生成记录和用户。

  • 未放宽生产外键,未增加自动业务数据删除,清理范围仍限定于 E2E 构造数据和 portal-e2e-* 稳定键。

  • 提交:d198cc4(已推送 origin/main)。

验证结果

  • 375/768/1024/1440 四视口 Playwright:9 通过、3 条按既有视口条件跳过。
  • 修复后完整 E2E 再次通过;fixture cleanup 连续执行两次均成功。
  • Portal 前端构建、Go 全量和相关 race 测试通过;未调用真实 Provider。

待验收

  • 阶段:已完成
  • 无长期文档影响:恢复文档已规定的 fixture 清理行为。
  • Wiki 任务归档 revision:cc3cb3357c3111ddf88dedf842d0a28a72c08366。

人工验收

  • 结果:通过

  • 确认人:用户

  • 确认时间:2026-08-25

  • 验收完成后的 Wiki 任务归档 revision:e725ccce74076c69ae2986c2e8f3c16754023f47。

## 基本信息 - 类型:缺陷 - 所属 Epic:#3 - 所属 MVP / 版本:#35 / MVP-2 - 来源集成验收:#47 - 阶段:已完成 ## 原始需求 - 来源:执行 #47 的 Portal 四视口 E2E 清理 - 提出时间:2026-08-25 - 脱敏摘要:API Key E2E 会写 `api_audit_events`,fixture 清理仍先删除 `api_keys`,触发 RESTRICT 外键并遗留合成测试数据。 ## 要解决什么 恢复 Portal E2E fixture 的可重复清理能力,使 MVP-2 安全审计数据按外键依赖顺序删除。 ## 做什么 / 不做什么 - 做:清理目标合成用户的 API 安全审计后,再删除 API Key、generation 和用户;重跑 fixture 清理与 E2E。 - 不做:改变生产删除策略、自动删除业务数据、放宽外键或操作非 fixture 合成数据。 ## 设计证据 - 复用 #42 Portal E2E fixture 和 #45 API 安全审计外键设计。 - 非产品 UI 变化,不需要新增原型。 ## 验收标准 - [x] 含 API Key 生命周期审计的 E2E 合成用户可以完整清理。 - [x] 清理只按精确 fixture 用户和 `portal-e2e-*` 稳定键执行。 - [x] 四视口 Portal E2E 通过,清理后再次运行不受上次数据影响。 ## 风险与回退 清理代码只在 E2E fixture 中运行且要求显式测试 DSN;必须先按用户 ID 删除审计,不扩大到全表。回退不会影响生产代码,但会恢复测试数据残留。 ## 文档影响 - 无长期文档影响:现有文档已规定 fixture 使用构造数据并负责清理,本修复恢复该既有行为。## 实施结果(2026-08-25) - Portal E2E fixture 按精确合成用户 ID 先删除 `api_audit_events`,再删除 API Key、生成记录和用户。 - 未放宽生产外键,未增加自动业务数据删除,清理范围仍限定于 E2E 构造数据和 `portal-e2e-*` 稳定键。 - 提交:`d198cc4`(已推送 `origin/main`)。 ## 验证结果 - 375/768/1024/1440 四视口 Playwright:9 通过、3 条按既有视口条件跳过。 - 修复后完整 E2E 再次通过;fixture cleanup 连续执行两次均成功。 - Portal 前端构建、Go 全量和相关 race 测试通过;未调用真实 Provider。 ## 待验收 - 阶段:已完成 - 无长期文档影响:恢复文档已规定的 fixture 清理行为。 - Wiki 任务归档 revision:`cc3cb3357c3111ddf88dedf842d0a28a72c08366`。 ## 人工验收 - 结果:通过 - 确认人:用户 - 确认时间:2026-08-25 - 验收完成后的 Wiki 任务归档 revision:`e725ccce74076c69ae2986c2e8f3c16754023f47`。
Author
Owner

实施与验证完成,提交 d198cc425ac54537d3d76e8baf6a5fbf093919eb,Wiki 归档 cc3cb3357c3111ddf88dedf842d0a28a72c08366。工单保持待验收。

实施与验证完成,提交 `d198cc425ac54537d3d76e8baf6a5fbf093919eb`,Wiki 归档 `cc3cb3357c3111ddf88dedf842d0a28a72c08366`。工单保持待验收。
ila closed this issue 2026-08-25 11:20:02 +08:00
Author
Owner

用户已于 2026-08-25 明确验收通过。工单已关闭,Wiki 任务归档已更新为已完成,revision:e725ccce74076c69ae2986c2e8f3c16754023f47。

用户已于 2026-08-25 明确验收通过。工单已关闭,Wiki 任务归档已更新为已完成,revision:`e725ccce74076c69ae2986c2e8f3c16754023f47`。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/chorus#53