Admin:优化顺运宝同步反馈与记录刷新交互 #61

Closed
opened 2026-08-09 20:37:45 +08:00 by ila · 4 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 阶段:顺运宝货运单与采购任务
  • 依赖:#59、#60
  • 状态:已完成

要解决什么

顺运宝同步是后台长任务。当前操作员启动后需要处理提示,再次点击时才知道已有任务运行;同步记录弹窗的数据只能通过刷新整个 SYB 页面更新,弹窗内没有明确刷新入口。弹窗底部页码和翻页操作也没有形成统一的右侧操作区。

做什么 / 不做什么

做

  • 同步表单提交后立即把按钮变成“同步中…”并禁用,提供即时反馈。
  • 页面渲染时如果当前进程有同步任务,按钮保持“同步中…”禁用状态。
  • 服务端继续保留互斥兜底;旧页面或多窗口重复请求时统一提示“同步正在进行,请耐心等待,请勿重复点击”。
  • 同步成功启动使用页面状态反馈,不增加需要手工关闭的成功确认弹窗。
  • 同步记录弹窗增加“刷新记录”按钮;点击后显示“刷新中…”并禁用。
  • 刷新记录时保留当前历史页码、订单号筛选和日期范围,页面返回后自动重新打开同步记录弹窗。
  • 弹窗底部的刷新、页码、翻页和关闭组件统一右对齐。
  • 更新 Admin UI 规范和自动化测试。

不做

  • 不增加自动轮询、WebSocket、SSE 或新的同步记录 API。
  • 不改变同步记录表、同步游标、顺运宝接口或 #58/#60 完整性规则。
  • 不移除服务端同步互斥保护。
  • 不改 Client、采购任务和真实下单行为。

怎么做

  1. admin/handler/web/others.go 将当前同步状态传给模板,统一重复提交文案,并生成保持弹窗、页码和筛选条件的刷新 URL。
  2. admin/templates/syb/list.html 为同步按钮增加运行态,为记录弹窗增加刷新按钮,并调整底部控件顺序。
  3. admin/static/js/app.js 在同步表单提交和记录刷新点击时立即设置按钮加载态;业务状态仍由服务端决定。
  4. admin/static/css/app.css 只补必要的底部布局和加载态样式,沿用现有按钮体系。
  5. admin/handler/web/others_test.go、admin/main_test.go 覆盖刷新链接、弹窗保持和同步按钮运行态;更新 docs/admin/05-ui-specification.md。

验收标准

  • 同步表单有效提交后按钮立即显示“同步中…”且不可重复点击。
  • 页面检测到当前同步任务时,同步按钮为禁用的“同步中…”。
  • 服务端收到重复同步请求时返回统一、可恢复的等待提示。
  • 同步成功启动不要求操作员关闭确认弹窗,结果继续在状态条和同步记录中展示。
  • 同步记录弹窗有“刷新记录”按钮,点击后显示“刷新中…”并防止重复点击。
  • 刷新后弹窗保持打开,当前历史页码、订单号和日期范围保持不变。
  • 刷新、页码、翻页、关闭组件在弹窗底部右对齐。
  • 不增加自动刷新,不改变同步业务、数据库和 Client 接口。
  • Go 1.23.0 go build ./...、go test ./... -count=1、go vet ./... 通过。

怎么验证

从 admin/ 执行:

$env:GOTOOLCHAIN="go1.23.0"
go build ./...
go test ./... -count=1
go vet ./...
Remove-Item Env:GOTOOLCHAIN

浏览器人工确认同步按钮、刷新按钮加载态和弹窗底部对齐。

风险和回退

  • 前端禁用只用于反馈,不能替代服务端互斥;实现必须保留双层保护。
  • 刷新是普通 GET 页面重载,不产生顺运宝请求和数据写入。
  • 回退本任务只恢复旧交互,不涉及数据库或业务数据回退。
## 基本信息 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 阶段:顺运宝货运单与采购任务 - 依赖:#59、#60 - 状态:已完成 ## 要解决什么 顺运宝同步是后台长任务。当前操作员启动后需要处理提示,再次点击时才知道已有任务运行;同步记录弹窗的数据只能通过刷新整个 SYB 页面更新,弹窗内没有明确刷新入口。弹窗底部页码和翻页操作也没有形成统一的右侧操作区。 ## 做什么 / 不做什么 ### 做 - 同步表单提交后立即把按钮变成“同步中…”并禁用,提供即时反馈。 - 页面渲染时如果当前进程有同步任务,按钮保持“同步中…”禁用状态。 - 服务端继续保留互斥兜底;旧页面或多窗口重复请求时统一提示“同步正在进行,请耐心等待,请勿重复点击”。 - 同步成功启动使用页面状态反馈,不增加需要手工关闭的成功确认弹窗。 - 同步记录弹窗增加“刷新记录”按钮;点击后显示“刷新中…”并禁用。 - 刷新记录时保留当前历史页码、订单号筛选和日期范围,页面返回后自动重新打开同步记录弹窗。 - 弹窗底部的刷新、页码、翻页和关闭组件统一右对齐。 - 更新 Admin UI 规范和自动化测试。 ### 不做 - 不增加自动轮询、WebSocket、SSE 或新的同步记录 API。 - 不改变同步记录表、同步游标、顺运宝接口或 #58/#60 完整性规则。 - 不移除服务端同步互斥保护。 - 不改 Client、采购任务和真实下单行为。 ## 怎么做 1. `admin/handler/web/others.go` 将当前同步状态传给模板,统一重复提交文案,并生成保持弹窗、页码和筛选条件的刷新 URL。 2. `admin/templates/syb/list.html` 为同步按钮增加运行态,为记录弹窗增加刷新按钮,并调整底部控件顺序。 3. `admin/static/js/app.js` 在同步表单提交和记录刷新点击时立即设置按钮加载态;业务状态仍由服务端决定。 4. `admin/static/css/app.css` 只补必要的底部布局和加载态样式,沿用现有按钮体系。 5. `admin/handler/web/others_test.go`、`admin/main_test.go` 覆盖刷新链接、弹窗保持和同步按钮运行态;更新 `docs/admin/05-ui-specification.md`。 ## 验收标准 - [x] 同步表单有效提交后按钮立即显示“同步中…”且不可重复点击。 - [x] 页面检测到当前同步任务时,同步按钮为禁用的“同步中…”。 - [x] 服务端收到重复同步请求时返回统一、可恢复的等待提示。 - [x] 同步成功启动不要求操作员关闭确认弹窗,结果继续在状态条和同步记录中展示。 - [x] 同步记录弹窗有“刷新记录”按钮,点击后显示“刷新中…”并防止重复点击。 - [x] 刷新后弹窗保持打开,当前历史页码、订单号和日期范围保持不变。 - [x] 刷新、页码、翻页、关闭组件在弹窗底部右对齐。 - [x] 不增加自动刷新,不改变同步业务、数据库和 Client 接口。 - [x] Go 1.23.0 `go build ./...`、`go test ./... -count=1`、`go vet ./...` 通过。 ## 怎么验证 从 `admin/` 执行: ```powershell $env:GOTOOLCHAIN="go1.23.0" go build ./... go test ./... -count=1 go vet ./... Remove-Item Env:GOTOOLCHAIN ``` 浏览器人工确认同步按钮、刷新按钮加载态和弹窗底部对齐。 ## 风险和回退 - 前端禁用只用于反馈,不能替代服务端互斥;实现必须保留双层保护。 - 刷新是普通 GET 页面重载,不产生顺运宝请求和数据写入。 - 回退本任务只恢复旧交互,不涉及数据库或业务数据回退。
Author
Owner

已开始实施。UI 按现有原生 JS + 服务端模板实现,不增加轮询或新 API;保留工作区现有 Client、.gitignore 和脚本改动。

已开始实施。UI 按现有原生 JS + 服务端模板实现,不增加轮询或新 API;保留工作区现有 Client、`.gitignore` 和脚本改动。
Author
Owner

实施完成,等待用户验收

  • 实现提交:3fd863d
  • 归档提交:ee1e060
  • 归档:docs/task/61-顺运宝同步反馈与记录刷新.md

验证结果:

  • go build ./...:通过
  • go test ./... -count=1:通过
  • go vet ./...:通过
  • git diff --check:通过
  • node --check static/js/app.js:通过

实现结果:同步表单提交后立即进入“同步中…”状态;服务端互斥继续兜底;记录弹窗可保持页码和筛选刷新并自动重开;底部刷新、页码、翻页和关闭操作右对齐且可换行。未增加轮询、新 API、数据库或同步业务变更。

未验证:未使用真实顺运宝运行长任务,未在人工浏览器中完成视觉验收。工单保持打开,待用户验收后关闭并同步 #14/#15。

## 实施完成,等待用户验收 - 实现提交:`3fd863d` - 归档提交:`ee1e060` - 归档:`docs/task/61-顺运宝同步反馈与记录刷新.md` 验证结果: - `go build ./...`:通过 - `go test ./... -count=1`:通过 - `go vet ./...`:通过 - `git diff --check`:通过 - `node --check static/js/app.js`:通过 实现结果:同步表单提交后立即进入“同步中…”状态;服务端互斥继续兜底;记录弹窗可保持页码和筛选刷新并自动重开;底部刷新、页码、翻页和关闭操作右对齐且可换行。未增加轮询、新 API、数据库或同步业务变更。 未验证:未使用真实顺运宝运行长任务,未在人工浏览器中完成视觉验收。工单保持打开,待用户验收后关闭并同步 #14/#15。
Author
Owner

用户验收时进一步明确:刷新按钮只应更新同步记录弹窗,不应重载 /syb 整页。后续修正由 #62 跟踪;#61 保持待验收,待 #62 一并验证。

用户验收时进一步明确:刷新按钮只应更新同步记录弹窗,不应重载 `/syb` 整页。后续修正由 #62 跟踪;#61 保持待验收,待 #62 一并验证。
Author
Owner

用户已于 2026-08-09 明确通过全部 Admin 待验收工单。本工单验收通过,现关闭,并同步父级 #15、#14 的任务清单。

用户已于 2026-08-09 明确通过全部 Admin 待验收工单。本工单验收通过,现关闭,并同步父级 #15、#14 的任务清单。
ila closed this issue 2026-08-09 21:16:53 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#61