From 4d8434b499ca95a04c027037d577f1427f53193c Mon Sep 17 00:00:00 2001 From: chengma Date: Sat, 15 Aug 2026 15:56:53 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#244?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...表默认100条并优化档口入库码批量匹配反馈.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 docs/task/244-主列表默认100条并优化档口入库码批量匹配反馈.md diff --git a/docs/task/244-主列表默认100条并优化档口入库码批量匹配反馈.md b/docs/task/244-主列表默认100条并优化档口入库码批量匹配反馈.md new file mode 100644 index 0000000..332c60b --- /dev/null +++ b/docs/task/244-主列表默认100条并优化档口入库码批量匹配反馈.md @@ -0,0 +1,86 @@ +# 244 Admin:主列表默认100条并优化档口入库码批量匹配反馈 + +- 工单号:#244 +- 类型:需求调整 / 缺陷修复 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 Admin 四模块可用闭环 +- 状态:已完成,待用户验收 +- 日期:2026-08-15 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/244 + +## 背景与目标 + +公共分页已经支持 20、50、100 条并能在选择后自动刷新,但默认仍为 20,页面还显示 +重复的“应用”按钮。档口入库码操作结果通过列表上方提示条展示,会暂时挤占表格高度; +只读匹配和远端回写又共用 20 条限制,导致当前页不能一次匹配全部选中记录。 + +本任务把主列表默认容量改为 100,精简分页交互,并让档口入库码批量匹配、失败反馈和 +远端写入安全限制各自符合实际职责。 + +## 最终方案 + +- 公共分页继续只允许 20、50、100,无参数或非法参数默认 100;明确选择 20、50 后 + 仍保留选择。 +- 正常页面删除“应用”按钮;选择容量后立即提交 GET 表单,显示“加载中…”并通过 + `aria-busy` 防止重复提交。JavaScript 不可用时分页链接仍可使用,但不能切换容量。 +- 档口入库码删除列表上方流式提示条。成功结果改为固定定位的 `aria-live` 短提示, + 4 秒后自动消失;错误、部分匹配失败或需核对结果改为自动打开的 `alertdialog`。 +- 反馈渲染后从当前 URL 移除临时参数,避免 F5 重复弹出;所有消息继续由 + `html/template` 自动转义。 +- 删除 Handler 中只读匹配超过 20 条的前置拒绝。匹配 Service 不限制总选择数量, + 继续按每批最多 100 个货运单读取顺运宝;任一批失败时不保存不完整规划。 +- 把共享远端限制拆为 `InnerCodeApplyBatchLimit = 20`,远端回写超过 20 条仍在执行 + 数据库或顺运宝操作前拒绝。 +- 没有增加跨页选择、数据库迁移、采购流程或 Client 接口变更。 + +## 改了哪些文件 + +- `admin/service/pagination.go`:公共分页默认值改为 100。 +- `admin/templates/partials/footer.html`、`admin/static/js/app.js`:移除应用按钮,保留自动 + 提交、加载反馈和防重复。 +- `admin/handler/web/inner_code.go`:区分成功/错误反馈,取消只读匹配 20 条前置限制。 +- `admin/service/inner_code_match.go`:提取不限总量、单批最多 100 的远端详情读取。 +- `admin/service/inner_code_page.go`、`admin/service/inner_code_apply.go`:保留独立的回写 + 20 条上限。 +- `admin/templates/inner_code/list.html`、`admin/static/css/app.css`:增加不占表格布局的 + 成功短提示和可访问错误弹窗。 +- `admin/main_test.go`、`admin/inner_code_template_test.go`、`admin/handler/web/*test.go`、 + `admin/service/*test.go`:补充分页默认值、反馈、转义、读取分批和回写限制回归。 +- `docs/admin/05-ui-specification.md`:更新公共分页、档口入库码批量限制和反馈规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 公共分页无参数时默认 100,仍可明确选择 20、50、100 | 通过 | +| 页面不显示应用按钮,选择容量后立即刷新并防重复 | 通过 | +| 档口入库码反馈不再占用列表上方空间 | 通过 | +| 错误、已跳过或部分失败结果自动显示可访问弹窗 | 通过 | +| 成功结果固定定位并在 4 秒后自动消失 | 通过 | +| 只读匹配不再受 20 条限制,远端读取按 100 分批 | 通过;205 个模拟 ID 按 100/100/5 分批 | +| 回写超过 20 条仍在远端操作前拒绝 | 通过 | +| 模板错误消息自动转义,临时反馈不会进入模块状态 | 通过 | +| 固定 Go 1.23.0 测试、构建和静态检查通过 | 通过 | + +## 测试 + +- 执行的命令: + +```powershell +$env:GOTOOLCHAIN="go1.23.0" +go test ./... -count=1 +go build ./... +go vet ./... +Remove-Item Env:GOTOOLCHAIN +node --check static/js/app.js +git diff --check +``` + +- 结果:全部通过。 +- **未验证到的部分**:未在登录后的真实浏览器中执行 1366×768 人工视觉验收;未使用 + 真实顺运宝会话执行 21–100 条批量匹配;未部署到生产服务器。本任务不涉及数据库结构, + 因此未连接生产 MySQL 验证。 + +## 相关提交 + +- `ad5bd83` feat: 优化批量匹配和分页默认值 (#244)