diff --git a/docs/task/278-修复档口入库码回写t参数溢出Integer.md b/docs/task/278-修复档口入库码回写t参数溢出Integer.md new file mode 100644 index 0000000..f207598 --- /dev/null +++ b/docs/task/278-修复档口入库码回写t参数溢出Integer.md @@ -0,0 +1,51 @@ +# 278 Admin:修复档口入库码回写 t 参数溢出 Integer + +- 类型:缺陷 +- 父级大工单:#14 +- 所属 MVP / 版本:#224 / 档口入库码回写 MVP +- 状态:已完成,用户验收通过 +- 日期:2026-08-19 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/278 + +## 背景与目标 + +2026-08-19 档口入库码回写全部失败。顺运宝返回 +`Can not parse the parameter "1787108752485" to Integer value`。该数字是请求发出时的 +毫秒时间戳。目标是让 `updateDetailCode` 的 `t` 重新能被 Java Integer 解析,并保住 +#250 的 POST 与单次发送门禁。 + +## 最终方案 + +- `UpdateDetailCode` 的 `t` 改回 `#234` 的固定 `"0"`,保留 POST。 +- 测试断言 `t=="0"`,不再只检查非空,避免毫秒时间戳再次漏过。 +- 接口文档写明 `t` 必须能进 Java Integer,不得再传毫秒或 Unix 秒。 +- 与建单方案无出入。未改 `createDetail`、`deleteInnerCode`、匹配、数据库或页面。 + +## 改了哪些 + +- `admin/syb/client.go`:写码请求 `t` 改回 `"0"`,注释写清 Integer 溢出原因。 +- `admin/syb/client_test.go`:断言 `t` 必须等于 `"0"`。 +- `docs/admin/08-顺运宝接口.md`:契约改回 `t=0`,并记录 #250 回归。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| `t` 固定为 `"0"`,不再调用 `UnixMilli` 或 `Unix` | 通过 | +| 测试断言 `t=="0"`,只断言非空不算通过 | 通过 | +| POST、`id`/`detailId`/`code` 和单次发送不变 | 通过 | +| `08` 文档写明 `t=0` 及不得再传毫秒的理由 | 通过 | +| Go 1.23.0 测试、构建、vet 通过 | 通过 | +| 未向真实顺运宝发送写请求;未改 19 号失败记录 | 通过 | + +## 测试 + +- 执行的命令:在 `admin/` 使用 `GOTOOLCHAIN=go1.23.0` 执行 + `go test ./syb -run InnerCodeWrite -count=1`、`go test ./... -count=1`、 + `go build ./...`、`go vet ./...`。 +- 结果:全部通过。 +- **没验证到的部分**:未向真实顺运宝发送写请求;未在生产重新勾选 19 号失败记录回写。 + +## 相关提交 + +- `417cd73` fix: 回写档口入库码时 t 固定为 0 (#278)