feat(t239): persist freight item metadata
This commit is contained in:
+8
-1
@@ -186,9 +186,11 @@ T-203 成功返回 `201`。使用相同 `Idempotency-Key` 和相同图片内容
|
||||
"external_item_id": "880011",
|
||||
"title": "商品标题",
|
||||
"product_spec": "灰色,2XL",
|
||||
"sku": "原始 SKU",
|
||||
"sku": "灰色,2XL",
|
||||
"quantity": 2,
|
||||
"product_thumb_ref": "190000000",
|
||||
"original_unit_price_minor": 12950,
|
||||
"original_currency": "TWD",
|
||||
"purchase_status": "0"
|
||||
}]
|
||||
}]
|
||||
@@ -198,6 +200,11 @@ T-203 成功返回 `201`。使用相同 `Idempotency-Key` 和相同图片内容
|
||||
不得返回 receiver、receiverTel、receiverAddr、Cookie、JWT、ERP 用户资料或完整原始
|
||||
对象。多商品必须全部保留;缺失详情返回协议错误,不允许部分成功。
|
||||
|
||||
商品 `product_spec` 和采购使用的 `sku` 均来自 ERP `productSpec`,不得静默回退
|
||||
`sku/variationSku`。`productPrice` 严格转换为 `original_unit_price_minor`;缺失价格为
|
||||
`null`,币种固定为 `TWD`。`product_thumb_ref` 来自商品 `productThumb`,存在时必须是
|
||||
规范化正整数,不能使用货运单 ID、商品明细 ID 或完整 URL。
|
||||
|
||||
### Go ERP 会话(T-230、T-236)
|
||||
|
||||
`/erp`、`/erp/captcha`、`/erp/login` 和 `/api/v1/erp-session*` 不再暴露。创建货运同步
|
||||
|
||||
@@ -198,6 +198,10 @@
|
||||
| `docs/tasks/T-233.md` | DONE | 修复预检错误映射并增加受控 ERP 诊断日志 |
|
||||
| `docs/tasks/T-234.md` | DONE | 在受控诊断模式输出 OCR 验证码文本 |
|
||||
| `docs/tasks/T-235.md` | DONE | 修复顺运宝登录后用户会话校验协议 |
|
||||
| `docs/tasks/T-236.md` | DONE | 验证码错误时重新取图和 OCR,最多额外重试 6 次 |
|
||||
| `docs/tasks/T-237.md` | DONE | 完整单号在 55 秒预算内同步导入并可靠收敛终态 |
|
||||
| `docs/tasks/T-238.md` | DONE | 兼容顺运宝详情分钟精度时间 |
|
||||
| `docs/tasks/T-239.md` | DONE | 冻结货运规格 SKU、TWD 原始单价和图片引用契约 |
|
||||
| `docs/design/` | 已确认 | T-202 原型索引、4 个管理页和 7 个 Android 页面 |
|
||||
| `deepseek总结.txt` | 已有 | 历史讨论摘要,不是正式需求权威 |
|
||||
| `android-buyer/` | 已有 | Roubao `main` 固定 commit 的 Android 基线 |
|
||||
@@ -209,12 +213,11 @@
|
||||
## 任务摘要
|
||||
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-219。
|
||||
- 已完成:另含 T-220 至 T-235 ERP 契约、货运存储、采购需求生成、日期增量同步、Go
|
||||
- 已完成:另含 T-220 至 T-239 ERP 契约、货运存储、采购需求生成、日期增量同步、Go
|
||||
直连协议、OCR 会话预检、稳定预检错误、安全诊断日志、直连 `FreightSource`、旧 Connector
|
||||
清理和受控本地凭证加载。
|
||||
清理、受控本地凭证加载、同步单号导入、分钟时间兼容和货运商品元数据契约。
|
||||
- 进行中:无。
|
||||
- 下一步:使用 `start-backend.bat --erp-debug` 重启 API 并重新执行受控单号 smoke;确认用户
|
||||
校验成功后继续观察 listTotal/list/detail 请求和同步结果。
|
||||
- 下一步:实现商品 `productThumb` 图片的后端受控下载、本地保存和鉴权访问。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
|
||||
+12
-8
@@ -4,7 +4,7 @@ title: 冻结货运商品规格、原始价格与图片引用契约
|
||||
phase: 2
|
||||
deps:
|
||||
- T-238
|
||||
status: TODO
|
||||
status: DONE
|
||||
created: 2026-07-29
|
||||
context_ref: 01be7e7
|
||||
work_branch: null
|
||||
@@ -55,13 +55,13 @@ ERP `sku/variationSku`,与本项目需要按颜色、尺码硬匹配的 `produ
|
||||
|
||||
## 验收要点
|
||||
|
||||
- [ ] `productSpec` 同时成为货运商品的规格和采购 SKU,缺失时不使用其他 ERP SKU 猜测。
|
||||
- [ ] `productPrice` 的合法整数、小数和数字字符串精确转换为 TWD 最小单位。
|
||||
- [ ] 缺失价格为 `NULL`;负数、指数、超过两位小数和越界值拒绝为 ERP 协议错误。
|
||||
- [ ] `productThumb` 仅接受可规范化的正整数引用,且不与货运单 ID 混用。
|
||||
- [ ] 金额、币种和新 SKU 进入 canonical hash,并通过 SQLite 往返和 revision 测试。
|
||||
- [ ] API/Web 适配层能读取新增字段;既有采购快照和任务不可变语义不回归。
|
||||
- [ ] 标准 Go 测试、race、vet 和三个入口构建通过。
|
||||
- [x] `productSpec` 同时成为货运商品的规格和采购 SKU,缺失时不使用其他 ERP SKU 猜测。
|
||||
- [x] `productPrice` 的合法整数、小数和数字字符串精确转换为 TWD 最小单位。
|
||||
- [x] 缺失价格为 `NULL`;负数、指数、超过两位小数和越界值拒绝为 ERP 协议错误。
|
||||
- [x] `productThumb` 仅接受可规范化的正整数引用,且不与货运单 ID 混用。
|
||||
- [x] 金额、币种和新 SKU 进入 canonical hash,并通过 SQLite 往返和 revision 测试。
|
||||
- [x] API/Web 适配层能读取新增字段;既有采购快照和任务不可变语义不回归。
|
||||
- [x] 标准 Go 测试、race、vet 和三个入口构建通过。
|
||||
|
||||
## 边界
|
||||
|
||||
@@ -73,3 +73,7 @@ ERP `sku/variationSku`,与本项目需要按颜色、尺码硬匹配的 `produ
|
||||
|
||||
- 2026-07-29:创建任务。确认图片 URL 的查询参数必须来自商品 `productThumb`,不能使用
|
||||
货运单或商品明细 ID;金额使用定点最小单位,图片网络获取拆分到后续任务。
|
||||
- 2026-07-29:增加 migration 15 和货运领域/API/Web 字段;normalizer 以 `productSpec`
|
||||
同时生成规格和采购 SKU,严格解析 TWD 原始单价及正整数图片引用。金额进入商品与货运单
|
||||
canonical hash,SQLite 往返、revision、采购不可变快照和脱敏 API 回归通过。标准 Go
|
||||
测试、race、vet 及三个入口构建均通过;真实 ERP JSON 保持未跟踪。
|
||||
|
||||
Reference in New Issue
Block a user