编号:H-04 严重级:medium 工作线:管理后端(internal/admin) + 后台网页(web/) 来源:审查 A-07、A-19 依赖:无 被依赖:无
后端(本 issue):
max(1, NumCPU-1)
Read()
reader.FieldPos(0)
*csv.ParseError
界面部分(导入中禁用按钮、显示"正在校验并计算密码,约需 N 秒"、错误用可内部滚动的表格弹窗)由网页线在 W-05 完成。
internal/admin/endpoints_csv.go。
internal/admin/endpoints_csv.go
与 H-01(导入上限 413)、H-05(默认延迟校验)同文件,管理后端线内顺序合入;哈希池与端登录共用,并发上限要留余量。
以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。
endpoints_csv.go:243-300
for
h.hash.Hash(...)
internal/auth/pool.go:17-37
endpoints_csv.go:227-241
62-66
EndpointsView.vue:310-336,354-356
329-331
importing
EndpointsView.vue
encoding/csv
i+2
endpoints_csv.go:126-129,171-172
StartLine
Line
复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。
4059a15
已合入 origin/main 0c9b459。落地提交 43f8474 fix: 批量导入并发哈希并校正 CSV 行号 (#47)。
0c9b459
43f8474
No dependencies set.
The note is not visible to the blocked user.
编号:H-04 严重级:medium 工作线:管理后端(internal/admin) + 后台网页(web/) 来源:审查 A-07、A-19
依赖:无 被依赖:无
结论与统一方案
后端(本 issue):
max(1, NumCPU-1),给 MQTT 密码登录留槽位;结果按行下标收集,保持顺序。Read(),用reader.FieldPos(0)取物理行号;*csv.ParseError用其中的行号。(审查 A-19)界面部分(导入中禁用按钮、显示"正在校验并计算密码,约需 N 秒"、错误用可内部滚动的表格弹窗)由网页线在 W-05 完成。
改动文件
internal/admin/endpoints_csv.go。与其他问题的交互 / 冲突说明
与 H-01(导入上限 413)、H-05(默认延迟校验)同文件,管理后端线内顺序合入;哈希池与端登录共用,并发上限要留余量。
验收与测试
问题明细(各区审查原文,证据含文件与行号)
[A-07] 批量导入串行算哈希、没有进度、可以重复提交,错误用 toast 显示
endpoints_csv.go:243-300在for循环里逐个h.hash.Hash(...)。internal/auth/pool.go:17-37是信号量池。endpoints_csv.go:227-241与62-66之间存在上述时间窗。EndpointsView.vue:310-336,354-356没有 loading;329-331用 toast 拼接错误。max(1, NumCPU-1),不要把池占满,给 MQTT 密码登录留槽位。结果按行下标收集,保持顺序。importing状态:禁用导入按钮,显示"正在校验并计算密码,约需 N 秒"。internal/admin/endpoints_csv.go、EndpointsView.vue。[A-19] CSV 校验报错的行号不准
encoding/csv会跳过空行,带引号的字段可以跨行,但代码用i+2算行号,报出的行号会偏移。解析错误一律报"第 1 行"。endpoints_csv.go:126-129,171-172。Read(),用reader.FieldPos(0)取物理行号;遇到*csv.ParseError时用其中的StartLine或Line。internal/admin/endpoints_csv.go。复审基线:main
4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。已合入 origin/main
0c9b459。落地提交43f8474fix: 批量导入并发哈希并校正 CSV 行号 (#47)。