[W-03][medium] 群页面:详情只显示前 50 个成员,且与后端能力不一致(编号输入框、搜索提示、无确认、失败无原因) #53

Closed
opened 2026-09-30 13:57:04 +08:00 by nixevol · 1 comment
Owner

编号:W-03 严重级:medium 工作线:后台网页(web/) 来源:审查 A-10、A-24
依赖:无 被依赖:无

结论与统一方案

采用审查 A-10、A-24 的方案:

  1. 成员表改为远程分页或"加载更多";可选:后端详情加 member_total(只增不改,同步 admin-api 7.8),由网页线在本 issue 内一并加。
  2. 去掉建群的编号输入框(或禁用并加 HelpTip 说明"由服务器生成",DEVIATIONS A3.3)。
  3. 搜索框占位改为"群名称"。
  4. "移除成员""设为群主"加确认。
  5. 加人失败时把原因翻译成中文显示。

改动文件

web/src/views/GroupsView.vue、web/src/api/admin.ts;可选 internal/admin/groups.go。

与其他问题的交互 / 冲突说明

可选的后端字段由网页线在本 issue 内添加,管理后端线不改 groups.go 的这部分。

验收与测试

后端分页测试;组件测试翻到第 2 页。


问题明细(各区审查原文,证据含文件与行号)

以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。

[A-10] 群详情只显示前 50 个成员

  • 严重级:medium
  • 分类:与PRD不符 / 界面
  • 现象与影响:群上限默认 1000 人。第 50 人之后的成员看不到,也无法在页面上移除或把群主转让给他们。
  • 证据:
    • GroupsView.vue:135-140 的 getGroup(id) 不带分页参数。
    • GroupsView.vue:318 的成员表没有分页。
    • groups.go:142-147,200-206 默认每页 50,并返回 next_cursor。
  • 文档依据:PRD F17"群:……成员增减、转让";F16 成员上限 1000。
  • 为何不是故意设计:界面忽略了 next_cursor。
  • 解决方案:成员表改为远程分页或"加载更多"。后端详情加 member_total 字段(只增不改,同步 admin-api 7.8)。
  • 改动文件:GroupsView.vue、admin.ts;可选 internal/admin/groups.go。
  • 交互/冲突风险:无。
  • 需补测试:后端分页测试;组件测试翻到第 2 页。
  • 置信度:代码阅读确定

[A-24] 群页与后端能力不一致

  • 严重级:low
  • 分类:界面 / 协议一致性
  • 现象与影响:
    • 建群弹窗有"编号"输入框,但后端只要编号非空就返回 400(A3.3)。
    • 搜索框占位写"名称/编号",后端只按名称搜。
    • "移除成员""设为群主"没有确认。
    • 加人失败只列编号,不说原因。
  • 证据:GroupsView.vue:270-272,245,210-224,160-162;groups.go:107-112,33-37。
  • 文档依据:admin-api 7.1"query(名称包含)";DEVIATIONS A3.3。
  • 为何不是故意设计:后端的限制写进了偏差,前端没有跟上。
  • 解决方案:去掉编号框(或禁用并加 HelpTip 说明"由服务器生成");占位改为"群名称",或后端增加按编号前缀搜索;移除和转让加确认;失败原因翻译成中文显示。
  • 改动文件:GroupsView.vue;可选 groups.go。
  • 交互/冲突风险:无。
  • 需补测试:组件测试。
  • 置信度:代码阅读确定

复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。

**编号**:W-03 **严重级**:medium **工作线**:后台网页(web/) **来源**:审查 A-10、A-24 **依赖**:无 **被依赖**:无 ### 结论与统一方案 采用审查 A-10、A-24 的方案: 1. 成员表改为远程分页或"加载更多";可选:后端详情加 `member_total`(只增不改,同步 admin-api 7.8),由网页线在本 issue 内一并加。 2. 去掉建群的编号输入框(或禁用并加 HelpTip 说明"由服务器生成",DEVIATIONS A3.3)。 3. 搜索框占位改为"群名称"。 4. "移除成员""设为群主"加确认。 5. 加人失败时把原因翻译成中文显示。 ### 改动文件 `web/src/views/GroupsView.vue`、`web/src/api/admin.ts`;可选 `internal/admin/groups.go`。 ### 与其他问题的交互 / 冲突说明 可选的后端字段由网页线在本 issue 内添加,管理后端线不改 groups.go 的这部分。 ### 验收与测试 后端分页测试;组件测试翻到第 2 页。 --- ### 问题明细(各区审查原文,证据含文件与行号) > 以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。**解决方案以本 issue 上方的"结论与统一方案"为准**;原文里的方案与之不一致时,按上方执行。 #### [A-10] 群详情只显示前 50 个成员 - 严重级:medium - 分类:与PRD不符 / 界面 - 现象与影响:群上限默认 1000 人。第 50 人之后的成员看不到,也无法在页面上移除或把群主转让给他们。 - 证据: - `GroupsView.vue:135-140` 的 `getGroup(id)` 不带分页参数。 - `GroupsView.vue:318` 的成员表没有分页。 - `groups.go:142-147,200-206` 默认每页 50,并返回 `next_cursor`。 - 文档依据:PRD F17"群:……成员增减、转让";F16 成员上限 1000。 - 为何不是故意设计:界面忽略了 `next_cursor`。 - 解决方案:成员表改为远程分页或"加载更多"。后端详情加 `member_total` 字段(只增不改,同步 admin-api 7.8)。 - 改动文件:`GroupsView.vue`、`admin.ts`;可选 `internal/admin/groups.go`。 - 交互/冲突风险:无。 - 需补测试:后端分页测试;组件测试翻到第 2 页。 - 置信度:代码阅读确定 #### [A-24] 群页与后端能力不一致 - 严重级:low - 分类:界面 / 协议一致性 - 现象与影响: - 建群弹窗有"编号"输入框,但后端只要编号非空就返回 400(A3.3)。 - 搜索框占位写"名称/编号",后端只按名称搜。 - "移除成员""设为群主"没有确认。 - 加人失败只列编号,不说原因。 - 证据:`GroupsView.vue:270-272,245,210-224,160-162`;`groups.go:107-112,33-37`。 - 文档依据:admin-api 7.1"query(名称包含)";DEVIATIONS A3.3。 - 为何不是故意设计:后端的限制写进了偏差,前端没有跟上。 - 解决方案:去掉编号框(或禁用并加 HelpTip 说明"由服务器生成");占位改为"群名称",或后端增加按编号前缀搜索;移除和转让加确认;失败原因翻译成中文显示。 - 改动文件:`GroupsView.vue`;可选 `groups.go`。 - 交互/冲突风险:无。 - 需补测试:组件测试。 - 置信度:代码阅读确定 --- <sub>复审基线:main `4059a15`(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。</sub>
nixevol added the P2-mediumlane/webreview-2026-09-30 labels 2026-09-30 13:57:04 +08:00
Author
Owner

已合入 origin/main 0c9b459。落地提交 965060d fix: 群详情成员分页并与后端能力对齐 (#53)。

已合入 origin/main `0c9b459`。落地提交 `965060d` fix: 群详情成员分页并与后端能力对齐 (#53)。
Sign in to join this conversation.