Page:
T-238
Pages
00-ai-start-here
01-vision
02-requirements
03-tech-stack
04-architecture
05-coding-rules
06-tasks
07-user-stories
08-interaction-checklist
Design
Home
Integrations-shunyunbao-contract
PPT
T-001
T-002
T-003
T-004
T-101
T-102
T-103
T-104
T-201
T-202
T-203
T-204
T-205
T-206
T-207
T-208
T-209
T-210
T-211
T-212
T-213
T-214
T-215
T-216
T-217
T-218
T-219
T-220
T-221
T-222
T-223
T-224
T-225
T-226
T-227
T-228
T-229
T-230
T-231
T-232
T-233
T-234
T-235
T-236
T-237
T-238
T-239
T-240
T-241
T-242
T-243
T-244
T-245
T-246
T-247
T-248
T-249
T-250
T-251
T-252
T-253
T-254
T-255
T-256
T-257
T-258
T-259
T-260
T-261
T-262
T-263
T-264
T-265
T-266
T-267
T-268
T-269
T-270
T-271
T-272
T-273
T-274
T-275
T-276
T-277
T-278
T-279
T-280
T-281
Task-Template
Tasks
agent-context
api
clean-state-checklist
current-state
routes
Clone
1
T-238
ila edited this page 2026-08-07 16:36:51 +08:00
同步来源:
docs/tasks/T-238.md· commitafc651f75a3a
id: T-238 title: 兼容顺运宝详情分钟精度时间 phase: 2 deps:
- T-237
status: DONE
created: 2026-07-29
context_ref:
8d5b88fwork_branch: null write_paths: - docs/tasks/T-238.md
- docs/api.md
- docs/current-state.md
- backend-api/internal/usecase/freight_service.go
- backend-api/internal/usecase/freight_service_test.go
- backend-api/internal/transport/httpapi/admin_handlers_test.go
问题 / 背景
完整单号同步登录、列表和详情请求均成功后,Admin 返回
ERP_RESPONSE_INVALID / ERP 返回格式无法确认。对照本机
query_stock_list_with_order_number.json 和 query_stock_detail_with_id.json 的结构化
字段检查确认:
- 列表与详情 envelope 均为
status=true、data.total=1、data.list一项。 - 列表 stock id 与详情 id 一致且为正整数,详情有合法
details[]。 - 列表
created是 19 位yyyy-MM-dd HH:mm:ss,详情created是 16 位yyyy-MM-dd HH:mm。
平台 normalizer 按既有合约优先选择详情 created;用例层 parseERPTime 只接受 RFC3339、
带秒的空格格式和带秒的 T 格式,因此拒绝真实的分钟精度详情时间。同步将规范化错误稳定映射
为 ERP_RESPONSE_INVALID。
方案
parseERPTime增加已确认的2006-01-02 15:04,并对称支持2006-01-02T15:04;无时区值继续按Asia/Shanghai解释并转 UTC。- 保持详情
created优先级,不因格式差异静默改用列表时间,也不补造秒数以外的信息。 - 保留 RFC3339、两种带秒格式和空值行为;非法日期、额外字符及其他未知格式继续拒绝。
- 使用完全脱敏的构造数据覆盖详情分钟精度、
T分隔分钟精度、列表秒精度和非法值;不复制 或提交原始订单、收件人、电话、地址、商品内容及两份本机 JSON。
验收要点
- 详情
yyyy-MM-dd HH:mm可规范化并按 Asia/Shanghai 得到正确 UTC 时间。 yyyy-MM-ddTHH:mm同样可解析;既有 RFC3339 和带秒格式不回归。- 非法日期和未知格式仍返回错误,不放宽为模糊解析。
- 完整单号同步不再因已确认的 16 位详情时间返回
ERP_RESPONSE_INVALID。 - 两份真实响应 JSON 保持未跟踪,不进入 Git。
- 标准 Go 测试、race、vet 和三个入口构建通过。
边界
- 不修改列表/详情 endpoint、ID 对齐、字段 allowlist、详情优先级、时区、数据库 schema 或 T-237 同步超时。
- 不把时间解析改为猜测式 parser,不接受没有真实证据的日期格式。
- 不在自动测试中访问真实 ERP。
执行记录
- 2026-07-29:创建任务。以只输出字段名、类型、长度和结构断言的方式检查两份本机响应;
排除 envelope、list、detail id、details、数量、SKU 回退和字段长度,定位为详情
created分钟精度与用例层严格 layout 不一致。 - 2026-07-29:严格增加空格/
T分隔的分钟 precision layout,保持 Asia/Shanghai 和 UTC 规范化语义。脱敏单元测试覆盖分钟、秒、RFC3339 和未知格式,Admin/Gin/SQLite 完整单号 集成 fixture 改用分钟精度并返回201/SUCCEEDED。标准 Go 测试、race、vet 及三个入口 构建均通过;两份真实响应 JSON 未暂存。