fix: 修复菜单结构只读列表关联字段错误 #71

Closed
opened 2026-08-27 09:17:31 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:缺陷修复 / Admin API
  • 所属 Epic:#3
  • 所属 MVP / 版本:#35 / MVP-2 后续可用性优化
  • 阶段:已完成
  • 关联工单:#67、#69
  • 设计证据:复用 #59 已确认菜单原型和 #67 只读系统 API 设计;本任务只恢复既有确认行为,无新增 UI 设计

原始需求

  • 来源:用户对话与 2026-08-27 真实本地运行验收
  • 提出时间:2026-08-27
  • 脱敏摘要:按已确认方案修复“菜单结构”页面列表接口错误,重新部署并完成真实页面复验。

复现与根因

  • 当前本机数据库已成功升级至 migration 9,四分组和 13 个入口已出现。
  • 打开“菜单结构”时,Admin API 报错:GORM 查询了不存在的连接字段 sys_menu_api_rule.sys_menu_menu_id。
  • SysMenu.SysApi 仅声明 many2many:sys_menu_api_rule,GORM 默认推导与 migration 管理的实际字段 menu_id / sys_api_id 不一致。

目标

明确 SysMenu.SysApi 的多对多连接字段,使菜单列表和详情能够只读加载关联 API,并重新完成四组 13 个入口的真实运行验收。

已确认方案

  • 在模型关系上明确 foreignKey:MenuId、joinForeignKey:menu_id、references:Id、joinReferences:sys_api_id。
  • 增加针对真实连接表字段的服务测试,覆盖菜单列表预加载关联 API。
  • 不新增或修改 migration,不恢复菜单写路由,不改变权限、安全或 UI 布局。
  • 重新构建 Admin API、更新 Supervisor、重启并登录真实页面复验。
  • 检查菜单结构、接口清单、登录日志和其余 10 个入口,不调用真实 Provider。

非目标

  • 不修改菜单分组、名称、排序或权限矩阵。
  • 不修改 Admin UI 页面。
  • 不修改 Portal、生成链路、Provider 或用户数据。
  • 不执行 migration down 或重复 migration 9。

验收标准

  • 菜单列表/详情预加载 SysApi 时使用 menu_id 和 sys_api_id。
  • 针对连接表字段的回归测试失败前可复现、修复后通过。
  • Admin Go 测试、vet 和构建通过。
  • Supervisor 使用新 Admin API,三个 Chorus 服务正常运行。
  • 四组 13 个入口在真实登录页面均可打开,“菜单结构”不再报接口错误。
  • 浏览器无模块加载错误或控制台错误。
  • 未泄露凭据、账号、生产数据,未调用真实 Provider。

风险与回退

  • 风险:关联标签错误可能继续导致预加载失败,或影响角色菜单关联读取。
  • 回退:回退本工单模型提交并重新构建 Admin API;migration 9 不回退。
  • 修复只改变 ORM 关联映射,不写数据库数据。

文档影响

无长期文档影响:不改变接口、数据结构、业务规则、运行命令或菜单设计,只修复 ORM 对现有 schema 的错误映射。

## 基本信息 - 类型:缺陷修复 / Admin API - 所属 Epic:#3 - 所属 MVP / 版本:#35 / MVP-2 后续可用性优化 - 阶段:已完成 - 关联工单:#67、#69 - 设计证据:复用 #59 已确认菜单原型和 #67 只读系统 API 设计;本任务只恢复既有确认行为,无新增 UI 设计 ## 原始需求 - 来源:用户对话与 2026-08-27 真实本地运行验收 - 提出时间:2026-08-27 - 脱敏摘要:按已确认方案修复“菜单结构”页面列表接口错误,重新部署并完成真实页面复验。 ## 复现与根因 - 当前本机数据库已成功升级至 migration 9,四分组和 13 个入口已出现。 - 打开“菜单结构”时,Admin API 报错:GORM 查询了不存在的连接字段 `sys_menu_api_rule.sys_menu_menu_id`。 - `SysMenu.SysApi` 仅声明 `many2many:sys_menu_api_rule`,GORM 默认推导与 migration 管理的实际字段 `menu_id` / `sys_api_id` 不一致。 ## 目标 明确 `SysMenu.SysApi` 的多对多连接字段,使菜单列表和详情能够只读加载关联 API,并重新完成四组 13 个入口的真实运行验收。 ## 已确认方案 - 在模型关系上明确 `foreignKey:MenuId`、`joinForeignKey:menu_id`、`references:Id`、`joinReferences:sys_api_id`。 - 增加针对真实连接表字段的服务测试,覆盖菜单列表预加载关联 API。 - 不新增或修改 migration,不恢复菜单写路由,不改变权限、安全或 UI 布局。 - 重新构建 Admin API、更新 Supervisor、重启并登录真实页面复验。 - 检查菜单结构、接口清单、登录日志和其余 10 个入口,不调用真实 Provider。 ## 非目标 - 不修改菜单分组、名称、排序或权限矩阵。 - 不修改 Admin UI 页面。 - 不修改 Portal、生成链路、Provider 或用户数据。 - 不执行 migration down 或重复 migration 9。 ## 验收标准 - [x] 菜单列表/详情预加载 `SysApi` 时使用 `menu_id` 和 `sys_api_id`。 - [x] 针对连接表字段的回归测试失败前可复现、修复后通过。 - [x] Admin Go 测试、vet 和构建通过。 - [x] Supervisor 使用新 Admin API,三个 Chorus 服务正常运行。 - [x] 四组 13 个入口在真实登录页面均可打开,“菜单结构”不再报接口错误。 - [x] 浏览器无模块加载错误或控制台错误。 - [x] 未泄露凭据、账号、生产数据,未调用真实 Provider。 ## 风险与回退 - 风险:关联标签错误可能继续导致预加载失败,或影响角色菜单关联读取。 - 回退:回退本工单模型提交并重新构建 Admin API;migration 9 不回退。 - 修复只改变 ORM 关联映射,不写数据库数据。 ## 文档影响 无长期文档影响:不改变接口、数据结构、业务规则、运行命令或菜单设计,只修复 ORM 对现有 schema 的错误映射。
Author
Owner

2026-08-27 开始实施。已核对 #67、#69 均为进行中,migration 9 已在当前本机数据库成功应用且 dirty=0。代码知识图谱工具在当前会话不可用,按仓库规则回退到定点文件读取。工作区中的本地配置和截图属于既有无关改动,将保留且不纳入提交。

2026-08-27 开始实施。已核对 #67、#69 均为进行中,migration 9 已在当前本机数据库成功应用且 `dirty=0`。代码知识图谱工具在当前会话不可用,按仓库规则回退到定点文件读取。工作区中的本地配置和截图属于既有无关改动,将保留且不纳入提交。
Author
Owner

实施完成,待验收(2026-08-27)

  • 提交:ee4f87d,已推送到 origin/main。
  • 在 SysMenu.SysApi 明确 menu_id/sys_api_id 关联字段;没有修改 migration、接口契约、权限或 UI。
  • 新增使用实际连接表字段的服务回归测试。
  • go -C admin test ./...、go -C admin vet ./...、go -C admin build ./... 和 git diff --check 通过。
  • 新 Admin API 已更新到 Supervisor;Admin API、Admin UI、Portal 均为 Running。
  • 真实登录页面的“菜单结构”已加载四组菜单数据,不再出现 Unknown column 或接口错误;浏览器控制台无 error。
  • 新 Admin API 启动后的服务日志无 error/panic/fatal。
  • 未调用真实 Provider,未修改或输出凭据、账号和用户数据。
  • 无长期文档影响,不更新 Wiki,不创建任务快照。

当前阶段:待验收。

## 实施完成,待验收(2026-08-27) - 提交:`ee4f87d`,已推送到 `origin/main`。 - 在 `SysMenu.SysApi` 明确 `menu_id/sys_api_id` 关联字段;没有修改 migration、接口契约、权限或 UI。 - 新增使用实际连接表字段的服务回归测试。 - `go -C admin test ./...`、`go -C admin vet ./...`、`go -C admin build ./...` 和 `git diff --check` 通过。 - 新 Admin API 已更新到 Supervisor;Admin API、Admin UI、Portal 均为 Running。 - 真实登录页面的“菜单结构”已加载四组菜单数据,不再出现 `Unknown column` 或接口错误;浏览器控制台无 error。 - 新 Admin API 启动后的服务日志无 error/panic/fatal。 - 未调用真实 Provider,未修改或输出凭据、账号和用户数据。 - 无长期文档影响,不更新 Wiki,不创建任务快照。 当前阶段:待验收。
Author
Owner

用户验收通过

  • 验收时间:2026-08-27 14:57:05 +08:00
  • 验收人:用户
  • 结论:用户明确确认本工单通过验收,接受当前实现、部署与已记录的验证结果。
  • 文档:沿用工单中已经完成的 Wiki/镜像处理;没有新的长期事实变化。
  • 状态:已完成,关闭工单。
## 用户验收通过 - 验收时间:2026-08-27 14:57:05 +08:00 - 验收人:用户 - 结论:用户明确确认本工单通过验收,接受当前实现、部署与已记录的验证结果。 - 文档:沿用工单中已经完成的 Wiki/镜像处理;没有新的长期事实变化。 - 状态:已完成,关闭工单。
ila closed this issue 2026-08-27 14:57:23 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/chorus#71