[W-05][medium] 端列表页:只有 IP 锁定时无法点解锁、批量选择跨筛选保留、编辑弹窗总提交 enabled 且停用无确认、导入无进度、默认延迟无上限提示 #55

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

编号:W-05 严重级:medium 工作线:后台网页(web/) 来源:审查 A-04、A-25
依赖:W-04 (#54)(同文件) 被依赖:无

结论与统一方案

采用审查 A-04、A-25 的方案,并完成 H-03、H-04、H-05 的界面部分:

  1. 解锁按钮始终可点,用 HelpTip 说明"列表只显示按编号的总数锁定,解锁会同时清除按 IP 的锁定"。(审查 A-04)
  2. 切换筛选或翻页时清空选择;批量确认框列出前 20 个编号和总数,删除时说明级联后果(退群、转让群主、清理记录);结果列出失败编号与原因。(审查 A-25)
  3. 编辑弹窗只提交有变化的字段;启用从开变关时弹 dialog.warning"停用会立即断开并作废未送达消息,不可恢复"。(H-03 界面部分)
  4. 导入中禁用导入按钮并显示"正在校验并计算密码,约需 N 秒";校验错误用弹窗加可内部滚动的表格(行号、原因)。(H-04 界面部分)
  5. 默认延迟输入框加 :max 与上限提示。(H-05 界面部分)

改动文件

web/src/views/EndpointsView.vue。

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

与 W-04 同文件,网页线内顺序合入;后端对应改动分别在 H-03、H-04、H-05。

验收与测试

  • login_locked=false 时解锁按钮可点;切换筛选后选择清空。
  • 只改名称时请求体里没有 enabled;停用时出现确认。
  • 导入期间按钮禁用;默认延迟超上限时前端阻止提交。

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

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

[A-04] 只有按 IP 锁定时,"解锁"按钮被禁用,管理员无法解锁

  • 严重级:medium
  • 分类:逻辑 / 与PRD不符
  • 现象与影响:最常见的锁定是同一 IP 5 分钟错 10 次。这种锁定下 login_locked 为 false,前端把"解锁"置灰,管理员在页面上解不开。后端 unlock 其实两种锁都能清。
  • 证据:
    • web/src/views/EndpointsView.vue:171-175:disabled: !r.login_locked。
    • internal/admin/endpoints.go:93-96 只查 LockLoginEndpoint。
    • internal/auth/locks.go:115-133 的 ClearEndpoint 两种都清。
    • DEVIATIONS A2.3 写明"仅 IP 档锁定时列表可能仍显示未锁定,但 unlock 可解除"。
  • 文档依据:PRD F01(约 132 行)和 F17 的"解除登录锁定";F02(约 154–155 行);DEVELOPMENT §8 的 unlock "两种都清"。
  • 为何不是故意设计:A2.3 预期管理员仍能解锁,是 W 的界面把这条路堵死了。
  • 解决方案:解锁按钮始终可点,并用 HelpTip 说明"列表只显示按编号的总数锁定,解锁会同时清除按 IP 的锁定"。后续可给 auth.LoginLocks 加"编号是否有任一锁定"的查询(P 线接口),让 login_locked 同时反映两种锁。
  • 改动文件:EndpointsView.vue(W 线);可选 internal/auth(P 线)和 endpoints.go。
  • 交互/冲突风险:无。
  • 需补测试:组件测试,login_locked=false 时按钮可点;后端测试,只触发编号加 IP 锁,unlock 后 Check 为 false。
  • 置信度:代码阅读确定

[A-25] 批量选择跨筛选保留,确认框不列编号

  • 严重级:low
  • 分类:界面 / 数据
  • 现象与影响:切换筛选条件或翻页后,之前勾选、现在看不到的端仍在选中列表里,批量删除会删掉看不见的端。确认框只显示数量。结果只提示成功几个、失败几个。
  • 证据:EndpointsView.vue:46,290-308,371-380,404。
  • 文档依据:PRD F17"多选后批量停用、删除,方便清理异常注册"。
  • 为何不是故意设计:DEVIATIONS 没有相关条目。
  • 解决方案:切换筛选时清空选择;确认框列出前 20 个编号和总数,删除时说明级联后果(退群、转让群主、清理记录);结果列出失败编号和原因。
  • 改动文件:EndpointsView.vue。
  • 交互/冲突风险:无。
  • 需补测试:组件测试。
  • 置信度:代码阅读确定

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

**编号**:W-05 **严重级**:medium **工作线**:后台网页(web/) **来源**:审查 A-04、A-25 **依赖**:W-04 (#54)(同文件) **被依赖**:无 ### 结论与统一方案 采用审查 A-04、A-25 的方案,并完成 H-03、H-04、H-05 的界面部分: 1. 解锁按钮始终可点,用 HelpTip 说明"列表只显示按编号的总数锁定,解锁会同时清除按 IP 的锁定"。(审查 A-04) 2. 切换筛选或翻页时清空选择;批量确认框列出前 20 个编号和总数,删除时说明级联后果(退群、转让群主、清理记录);结果列出失败编号与原因。(审查 A-25) 3. 编辑弹窗只提交有变化的字段;启用从开变关时弹 `dialog.warning`"停用会立即断开并作废未送达消息,不可恢复"。(H-03 界面部分) 4. 导入中禁用导入按钮并显示"正在校验并计算密码,约需 N 秒";校验错误用弹窗加可内部滚动的表格(行号、原因)。(H-04 界面部分) 5. 默认延迟输入框加 `:max` 与上限提示。(H-05 界面部分) ### 改动文件 `web/src/views/EndpointsView.vue`。 ### 与其他问题的交互 / 冲突说明 与 W-04 同文件,网页线内顺序合入;后端对应改动分别在 H-03、H-04、H-05。 ### 验收与测试 - `login_locked=false` 时解锁按钮可点;切换筛选后选择清空。 - 只改名称时请求体里没有 enabled;停用时出现确认。 - 导入期间按钮禁用;默认延迟超上限时前端阻止提交。 --- ### 问题明细(各区审查原文,证据含文件与行号) > 以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。**解决方案以本 issue 上方的"结论与统一方案"为准**;原文里的方案与之不一致时,按上方执行。 #### [A-04] 只有按 IP 锁定时,"解锁"按钮被禁用,管理员无法解锁 - 严重级:medium - 分类:逻辑 / 与PRD不符 - 现象与影响:最常见的锁定是同一 IP 5 分钟错 10 次。这种锁定下 `login_locked` 为 false,前端把"解锁"置灰,管理员在页面上解不开。后端 `unlock` 其实两种锁都能清。 - 证据: - `web/src/views/EndpointsView.vue:171-175`:`disabled: !r.login_locked`。 - `internal/admin/endpoints.go:93-96` 只查 `LockLoginEndpoint`。 - `internal/auth/locks.go:115-133` 的 `ClearEndpoint` 两种都清。 - DEVIATIONS A2.3 写明"仅 IP 档锁定时列表可能仍显示未锁定,但 unlock 可解除"。 - 文档依据:PRD F01(约 132 行)和 F17 的"解除登录锁定";F02(约 154–155 行);DEVELOPMENT §8 的 unlock "两种都清"。 - 为何不是故意设计:A2.3 预期管理员仍能解锁,是 W 的界面把这条路堵死了。 - 解决方案:解锁按钮始终可点,并用 `HelpTip` 说明"列表只显示按编号的总数锁定,解锁会同时清除按 IP 的锁定"。后续可给 `auth.LoginLocks` 加"编号是否有任一锁定"的查询(P 线接口),让 `login_locked` 同时反映两种锁。 - 改动文件:`EndpointsView.vue`(W 线);可选 `internal/auth`(P 线)和 `endpoints.go`。 - 交互/冲突风险:无。 - 需补测试:组件测试,`login_locked=false` 时按钮可点;后端测试,只触发编号加 IP 锁,`unlock` 后 `Check` 为 false。 - 置信度:代码阅读确定 #### [A-25] 批量选择跨筛选保留,确认框不列编号 - 严重级:low - 分类:界面 / 数据 - 现象与影响:切换筛选条件或翻页后,之前勾选、现在看不到的端仍在选中列表里,批量删除会删掉看不见的端。确认框只显示数量。结果只提示成功几个、失败几个。 - 证据:`EndpointsView.vue:46,290-308,371-380,404`。 - 文档依据:PRD F17"多选后批量停用、删除,方便清理异常注册"。 - 为何不是故意设计:DEVIATIONS 没有相关条目。 - 解决方案:切换筛选时清空选择;确认框列出前 20 个编号和总数,删除时说明级联后果(退群、转让群主、清理记录);结果列出失败编号和原因。 - 改动文件:`EndpointsView.vue`。 - 交互/冲突风险:无。 - 需补测试:组件测试。 - 置信度:代码阅读确定 --- <sub>复审基线:main `4059a15`(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。</sub>
nixevol added the P2-mediumlane/webreview-2026-09-30 labels 2026-09-30 13:57:05 +08:00
Author
Owner

已合入 origin/main 0c9b459。落地提交 4e70538 fix: 修复端列表解锁、批量选择与编辑提交 (#55)。

已合入 origin/main `0c9b459`。落地提交 `4e70538` fix: 修复端列表解锁、批量选择与编辑提交 (#55)。
Sign in to join this conversation.