当前“回写顺运宝”在一次 HTTP 请求内同步处理,且最多只能选择 20 条。每条记录可能需要远端读取、删除、更新和结果核对,数量增加后页面会长时间等待,还可能因网关超时让采购员无法判断回写是否仍在执行。
目标是允许采购员一次勾选当前页面任意数量的可回写记录,提交后页面立即返回,由 Admin 后台分组处理,并能在档口入库码页面查看排队、回写中和逐条结果。
syb_inner_code_records
apply_batch_id
apply_queued_at
queued
ready
applying
needs_check
progress
admin/model/inner_code.go
admin/repository/mysql_db.go
admin/repository/inner_code.go
admin/service/inner_code_apply.go
admin/service/inner_code_page.go
admin/handler/web/inner_code.go
admin/templates/inner_code/list.html
在仓库根目录执行:
& 'C:\Program Files\Go\bin\gofmt.exe' -w <本工单修改的 Go 文件> & 'C:\Program Files\Go\bin\go.exe' test ./...
另使用 MySQL 8.4 测试库验证 v24 → v25、空库迁移和重复启动;远端真实顺运宝回写只在人工验收环境使用测试数据验证。
f8f22a1
7736ab7
docs/task/246-admin档口入库码后台批量回写.md
go vet ./...
go build ./...
go test ./... -count=1
_test
No dependencies set.
The note is not visible to the blocked user.
1. 基本信息
2. 要解决什么
当前“回写顺运宝”在一次 HTTP 请求内同步处理,且最多只能选择 20 条。每条记录可能需要远端读取、删除、更新和结果核对,数量增加后页面会长时间等待,还可能因网关超时让采购员无法判断回写是否仍在执行。
目标是允许采购员一次勾选当前页面任意数量的可回写记录,提交后页面立即返回,由 Admin 后台分组处理,并能在档口入库码页面查看排队、回写中和逐条结果。
3. 做什么 / 不做什么
做什么
syb_inner_code_records业务表,不新增批次表。不做什么
4. 已确认的实现方案
syb_inner_code_records增加apply_batch_id、apply_queued_at,状态约束增加queued,并增加批次查询索引。ready,一次性更新为queued;任意一条状态变化则整批不入队。queued记录,但逐条 claim 为applying后才执行远端操作。每条仍执行“写前读取、最多一次写入、写后核对”;不确定结果保持needs_check。apply_batch_id查询现有业务表聚合进度,使用文字和原生progress同时反馈,不只依赖颜色。queued记录释放回ready并说明原因;启动恢复同样执行该规则,applying仍转为needs_check。admin/model/inner_code.goadmin/repository/mysql_db.goadmin/repository/inner_code.goadmin/service/inner_code_apply.goadmin/service/inner_code_page.goadmin/handler/web/inner_code.goadmin/templates/inner_code/list.html5. 验收标准
6. 验证方式
在仓库根目录执行:
另使用 MySQL 8.4 测试库验证 v24 → v25、空库迁移和重复启动;远端真实顺运宝回写只在人工验收环境使用测试数据验证。
风险和回退
queued记录恢复为ready。已进入applying的记录必须人工核对,不能直接重试。实施完成,待用户验收
f8f22a1(后台批量回写、MySQL v25、页面进度与异常恢复)7736ab7docs/task/246-admin档口入库码后台批量回写.mdgo vet ./...、go build ./...、go test ./... -count=1全部通过。_test库,安全门禁按预期跳过,未使用生产库代测。