diff --git a/docs/task/67-admin顺运宝采购处理状态.md b/docs/task/67-admin顺运宝采购处理状态.md new file mode 100644 index 0000000..8102269 --- /dev/null +++ b/docs/task/67-admin顺运宝采购处理状态.md @@ -0,0 +1,58 @@ +# 67 Admin:建立顺运宝采购处理状态并识别蝦皮 SKU + +- 类型:需求 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 Admin 四模块可用闭环 +- 状态:已完成 +- 日期:2026-08-09 +- Gitea 工单: + +## 背景与目标 + +顺运宝同步已经保存商品明细与蝦皮商品 ID,但页面原先只用 `shopee_sku_id` 判断“已匹配/待匹配”,无法表达采购链路的真实缺口。此次建立显式处理阶段,并让系统在确定性唯一候选时自动确认蝦皮 SKU,不确定时交给采购员选择。 + +## 最终方案 + +- 顺运宝列表查询关联蝦皮商品、当前 PDD 商品和采集状态,由 Service 计算处理阶段。 +- 同步落库后先按规格原文精确匹配;没有唯一原文候选时,再按解析后的颜色和尺码匹配。只有唯一候选才写入。 +- 同步 upsert 继续保护已有 `shopee_sku_id`,自动识别只更新空值。 +- 顺运宝列表增加处理阶段筛选、阶段说明和唯一“下一步”按钮。 +- 新增服务端渲染的处理详情弹窗,人工选择时在事务内验证 SKU 必须属于当前蝦皮商品。 +- UI/UX 规范用于确定显式进度、渐进展示、可发现的下一步和错误恢复方式。 + +未修改数据库结构、Client 四接口、PDD 映射和采购任务逻辑。 + +## 改了哪些 + +- `admin/repository/syb.go`、`admin/repository/shopee.go`:增加关联上下文查询、阶段筛选及安全保存蝦皮 SKU。 +- `admin/service/syb.go`:增加唯一精确识别、处理阶段计算、详情与人工确认逻辑。 +- `admin/handler/web/others.go`、`admin/handler/web/web.go`:增加详情和选择 SKU 路由,并保留筛选、页码。 +- `admin/templates/syb/list.html`、`admin/templates/syb/detail_modal.html`:增加处理阶段、下一步和选择规格弹窗。 +- `admin/static/js/app.js`:让显式下一步按钮与双击行共用详情加载逻辑。 +- `admin/service/syb_workflow_test.go`、`admin/main_test.go`:覆盖唯一候选、多候选、SKU 归属、阶段筛选和模板烟雾。 +- `docs/admin/01-requirements.md`、`docs/admin/05-ui-specification.md`:记录采购处理阶段与蝦皮 SKU 识别规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 唯一精确候选自动识别,零候选或多候选不自动写入 | 通过 | +| 手动选择仅允许当前蝦皮商品下的 SKU | 通过 | +| 不再把 shopee_sku_id 误称为完整 PDD 规格匹配 | 通过 | +| 处理阶段和下一步有明确文字 | 通过 | +| 阶段筛选保留关键词和分页 | 通过 | +| 重同步不覆盖已确认 SKU | 通过 | +| 不修改数据库和 Client 四接口 | 通过 | +| Go 1.23.0 build、test、vet 通过 | 通过 | + +## 测试 + +- 执行的命令(从 `admin/`):`node --check static/js/app.js`、Go 1.23.0 的 `go build ./...`、`go test ./... -count=1`、`go vet ./...`。 +- 执行的命令(从仓库根目录):`git diff --check -- admin docs/admin`。 +- 结果:全部通过。 +- **没验证到的部分**:未使用真实顺运宝账号重新同步商业数据;未在真实浏览器人工检查弹窗和 1366×768 布局。 + +## 相关提交 + +- `c6ef54d` 建立顺运宝采购处理状态 +- `57a6484` 澄清蝦皮规格识别与 PDD 规格映射的边界