docs: 归档任务 #133
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# 133 Admin:实现商品目录批量导入接口
|
||||
|
||||
- 类型:需求
|
||||
- 父级大工单:#14
|
||||
- 所属 MVP / 版本:#15 / 商品目录批量接入
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-11
|
||||
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/133
|
||||
|
||||
## 背景与目标
|
||||
|
||||
让第三方脚本把不同来源 Excel 归一化后,通过稳定 JSON 契约批量提交蝦皮、PDD
|
||||
及两者对应关系,替代由 Admin 猜测不同 Excel 格式。
|
||||
|
||||
## 最终方案
|
||||
|
||||
新增 `POST /api/v1/integrations/catalog/batches`,限制 5 MB、500 个商品和 5000 个
|
||||
SKU。请求先完整校验,再在单事务中按实体、SKU、关联顺序 upsert。PDD 规格使用
|
||||
结构化字段并由服务端生成规范 JSON;缺席数据不删除。批次按请求哈希重放,关联或
|
||||
SKU 所属冲突整批回滚并返回稳定错误码。
|
||||
|
||||
## 改了哪些
|
||||
|
||||
- `admin/handler/integration/catalog_api.go`:请求限制、严格 JSON 解析和错误映射。
|
||||
- `admin/service/catalog_import.go`:契约、校验、事务、幂等和统计。
|
||||
- `admin/repository/catalog_import.go`:带来源时间的 upsert 与安全关联。
|
||||
- `admin/main.go`:注册独立 integration 路由。
|
||||
- `docs/admin/10-商品目录接入接口.md`:第三方调用契约与示例。
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收标准 | 结果 |
|
||||
|---|---|
|
||||
| 合法批次原子写入蝦皮、SKU、PDD 和关联 | 通过 |
|
||||
| 不覆盖人工 PDD 关联和 SKU 手工标记 | 通过 |
|
||||
| 相同请求重放,不同内容返回 409 | 通过 |
|
||||
| 旧 observed_at 不覆盖较新接口数据 | 通过 |
|
||||
| 关联冲突、SKU 跨商品冲突整批回滚 | 通过 |
|
||||
| 非法 JSON、字段、金额、数量和体积返回稳定 4xx JSON | 通过 |
|
||||
| Client 四接口保持不变 | 通过 |
|
||||
|
||||
## 测试
|
||||
|
||||
- 执行的命令:`$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1; go vet ./...`
|
||||
- 结果:构建、全量测试和静态检查通过;SQLite 隔离测试覆盖原子写入、成功/失败重放和冲突回滚。
|
||||
- **没验证到的部分**:未在真实 MySQL 8.4 `_test` 库执行高并发同批次提交;数据库复合主键负责最终并发防重。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `273bcc1` feat: 实现商品目录批量导入接口 (#133)
|
||||
Reference in New Issue
Block a user