From 858fc8f41fe5f0d16d0a7e2341234550ce765e6d Mon Sep 17 00:00:00 2001 From: zoujing Date: Wed, 12 Aug 2026 09:53:43 +0800 Subject: [PATCH] docs: design ticket category product groups --- ...2-ticket-category-product-groups-design.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-12-ticket-category-product-groups-design.md diff --git a/docs/superpowers/specs/2026-08-12-ticket-category-product-groups-design.md b/docs/superpowers/specs/2026-08-12-ticket-category-product-groups-design.md new file mode 100644 index 0000000..cca8c5a --- /dev/null +++ b/docs/superpowers/specs/2026-08-12-ticket-category-product-groups-design.md @@ -0,0 +1,22 @@ +# TicketHome 分类商品组数据结构调整设计 + +## 目标 + +适配 `scenicProductHome` 最新响应结构。`TicketHome.vue` 不再使用 `categories` 和旧的 `products.records`,分类导航、分组信息与首屏商品统一来自 `homeData.categoryProductGroups`。 + +## 数据与交互 + +- `groups` 只读取有效数组 `homeData.categoryProductGroups`,无效或缺失时使用空数组。 +- 每个分组直接使用 `categoryId`、`categoryName`、`title`、`subtitle`、`defaultFlag` 和 `products`。 +- `productsForGroup(group)` 只返回 `group.products`;分组没有有效商品数组时返回空数组,不再扁平化或按 `categoryId` 二次过滤。 +- `selectedCategoryId` 继续作为初始选中分类;若不存在于商品组中,则选择第一个商品组。 +- 左侧分类点击滚动到对应右侧分组;右侧滚动继续同步左侧高亮。 +- 空分组继续展示“暂无可售商品”,完全没有分组时展示“暂无商品分类”。 +- 商品卡字段和点击行为不变,详情与选购仍传递 `commodityId`。 +- 本次不使用 `total`、`hasMore`、`pageNo`、`pageSize`,也不调用分类分页接口。 + +## 验证 + +- 先更新契约测试,使其要求读取 `categoryProductGroups` 和 `group.products`,并禁止出现 `homeData.categories`、`homeData.products.records` 与按 `categoryId` 二次过滤。 +- 确认测试在旧实现上失败后修改组件。 +- 完成后运行完整票务视图契约、票务模型测试、`git diff --check` 和微信小程序开发编译。