From 37b8bd4b9bd87a70e05e3b766a46a4ef88c2afeb Mon Sep 17 00:00:00 2001 From: chengma Date: Tue, 11 Aug 2026 10:46:46 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#140?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/140-顺运宝观测规格.md | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 docs/task/140-顺运宝观测规格.md diff --git a/docs/task/140-顺运宝观测规格.md b/docs/task/140-顺运宝观测规格.md new file mode 100644 index 0000000..53733e3 --- /dev/null +++ b/docs/task/140-顺运宝观测规格.md @@ -0,0 +1,49 @@ +# 140 Admin:保存并展示顺运宝观测规格,不覆盖蝦皮主数据 + +- 类型:需求 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 / 商品目录数据接入后续 +- 状态:已完成 +- 日期:2026-08-11 +- Gitea 工单: + +## 背景与目标 + +顺运宝货运单已经保存蝦皮商品 ID、规格、历史台币售价和图片,但这些是订单观测数据,不是正式蝦皮 SKU 主数据。本任务在不覆盖目录或人工数据的前提下,让采购员从蝦皮商品详情查看这些历史观测。 + +## 最终方案 + +- 直接按 `syb_orders` 的 `shopee_goods_id + spec_key` 聚合,不复制观测表。 +- 顺运宝只更新自身创建的商品骨架标题,`api`、`report` 等来源的商品不动。 +- 详情页展示最近历史台币售价、图片、订单数、累计数量和最后出现时间,并明确它不是正式 SKU 或 PDD 人民币价格。 +- 用统一 `SpecKey()` 与正式 SKU 精确关联;恰好一条时显示匹配,多条或零条不猜测、不写回。 + +## 改了哪些 + +- `admin/repository/syb.go`:增加来源保护的骨架更新和观测规格聚合查询。 +- `admin/service/shopee_list.go`:组装观测规格及正式 SKU 唯一匹配结果。 +- `admin/templates/shopee/detail_modal.html`:增加顺运宝观测规格区域。 +- `admin/repository/syb_test.go`、`admin/service/shopee_list_test.go`、`admin/main_test.go`:覆盖来源保护、重放统计、匹配和页面文案。 +- `docs/admin/03-data-model.md`、`docs/admin/05-ui-specification.md`:记录读模型和界面规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 新商品补建骨架,后续仅安全更新 `syb` 来源的非空标题 | 通过 | +| 不覆盖其他来源标题、PDD 关联和正式 SKU | 通过 | +| 详情显示规格、最近台币售价、订单数、累计数量、图片和时间 | 通过 | +| 唯一匹配才显示正式 SKU,多条或零条不猜测 | 通过 | +| 同一 `syb_id` 重放不重复累计 | 通过 | +| 页面区分正式目录、顺运宝观测和 PDD 价格 | 通过 | +| Go 1.23 build/test/vet | 通过 | + +## 测试 + +- 执行的命令:`$env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test ./... -count=1; go vet ./...` +- 结果:Admin 全部包构建、测试和静态检查通过。 +- **没验证到的部分**:未在生产数据规模的 MySQL 8.4 `_test` 库执行 `EXPLAIN`;聚合 SQL 已由现有 MySQL 兼容实现及单元测试覆盖。 + +## 相关提交 + +- `c05c4fa` 展示顺运宝观测规格