# Story 001.010: 商品列表页UI重构

## Status
Ready for Review

## Story
**As a** 小程序用户，
**I want** 在商品列表页浏览和筛选商品，
**so that** 能够快速找到心仪的商品，提升购物体验。

## Acceptance Criteria
1. 参照tcb-shop-demo商品列表页设计，重构小程序商品列表页UI
2. 页面层级调整为二级页面，移除TabBarLayout
3. 页面背景色应用白色背景 `#fff`
4. 商品列表容器应用灰色背景 `#f2f2f2`，添加内边距 `20rpx 24rpx`
5. 搜索栏样式使用TDesign Search组件，圆角32rpx，高度64rpx
6. 商品列表布局改为使用现有的`GoodsList`组件（与首页保持一致），保持flex布局
7. 页面结构参照demo页面结构，使用相同的容器类名
8. 样式集成应用tcb-shop-demo商品列表页设计规范
9. 功能保持现有搜索、分类筛选、分页加载等功能
10. 导航栏添加返回按钮，显示页面标题

## Tasks / Subtasks
- [x] 调整页面层级结构 (AC: 2)
  - [x] 移除TabBarLayout包装 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 将页面改为二级页面结构 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 添加导航栏组件 (`mini/src/pages/goods-list/index.tsx`)
- [x] 重构页面样式和布局 (AC: 3, 4, 5, 6, 7, 8)
  - [x] 应用白色背景色 `#fff` (`mini/src/pages/goods-list/index.tsx`)
  - [x] 创建商品列表容器，应用灰色背景 `#f2f2f2` (`mini/src/pages/goods-list/index.tsx`)
  - [x] 添加内边距 `20rpx 24rpx` (`mini/src/pages/goods-list/index.tsx`)
  - [x] 重构搜索栏样式，使用TDesign Search组件 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 应用圆角32rpx，高度64rpx (`mini/src/pages/goods-list/index.tsx`)
  - [x] 将商品列表改为使用`GoodsList`组件 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 应用tcb-shop-demo页面结构类名 (`mini/src/pages/goods-list/index.tsx`)
- [x] 集成导航栏功能 (AC: 10)
  - [x] 添加返回按钮 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 显示页面标题 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 实现导航功能 (`mini/src/pages/goods-list/index.tsx`)
- [x] 保持现有功能 (AC: 9)
  - [x] 验证搜索功能正常工作 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 验证分类筛选功能 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 验证分页加载功能 (`mini/src/pages/goods-list/index.tsx`)
  - [x] 验证商品点击和添加到购物车功能 (`mini/src/pages/goods-list/index.tsx`)

## Dev Notes

### 对照文件分析
基于tcb-shop-demo商品列表页实现，需要转换为React + Taro组件：

**页面结构**
- 页面背景：白色 `#fff`
- 商品列表容器：灰色背景 `#f2f2f2`，内边距 `20rpx 24rpx`
- 搜索栏：TDesign Search组件，圆角32rpx，高度64rpx
- 商品列表：使用现有`GoodsList`组件，flex布局

**样式特点**
- 页面背景色：`#fff`
- 商品列表容器背景色：`#f2f2f2`
- 搜索栏圆角：`32rpx`
- 搜索栏高度：`64rpx`
- 容器内边距：`20rpx 24rpx`

**交互功能**
- 保持现有搜索功能
- 保持现有分类筛选功能
- 保持现有分页加载功能
- 保持现有商品点击和购物车功能

### 技术栈信息
[Source: architecture/tech-stack.md]
- **前端框架**: React 19.1.0
- **构建工具**: Vite 7.0.0
- **样式**: Tailwind CSS 4.1.11 + tcb-theme.css
- **小程序框架**: Taro
- **状态管理**: React Query 5.83.0

### 项目结构
[Source: architecture/source-tree.md]
- 页面位置：`mini/src/pages/goods-list/`
- 组件位置：`mini/src/components/ui/`
- 文件命名：PascalCase
- 目录结构：页面使用独立目录组织

### 编码标准
[Source: architecture/coding-standards.md]
- TypeScript严格模式
- 一致的缩进和命名
- ESLint规则已配置
- 使用Hono RPC客户端进行API调用

### 样式系统
[Source: docs/prd/epic-001-tcb-shop-theme-integration.md]
- 主色调：`#fa4126` (按钮主色)
- 背景色：`#f2f2f2` (商品列表容器)
- 字体大小：28rpx (搜索栏文字)
- 圆角：32rpx (搜索栏)

### API集成
- **商品数据**: `goodsClient.$get()` 使用现有API
- **搜索功能**: 保持现有搜索逻辑
- **分页加载**: 保持现有无限滚动功能

### 组件依赖
- **基础组件**: GoodsList (`mini/src/components/goods-list/index.tsx`), GoodsCard (现有)
- **TDesign组件**: Search, Image, Toast
- **导航组件**: Navbar

### GoodsList组件使用说明
- **当前状态**: 商品列表页目前使用网格布局直接渲染商品卡片
- **目标状态**: 改为使用GoodsList组件（与首页保持一致）
- **导入路径**: `import GoodsList from '@/components/goods-list'`
- **组件位置**: `mini/src/components/goods-list/index.tsx`
- **使用方式**: 参考首页的使用方式，传递商品数据和事件处理函数

## Testing

### 测试标准
[Source: architecture/testing-strategy.md]
- **测试文件位置**: `mini/tests/unit/client/pages/goods-list/`
- **测试框架**: Vitest + Testing Library
- **测试模式**: 单元测试
- **覆盖率要求**: ≥ 80%

### 具体测试要求
- 页面组件渲染测试
- 样式应用测试
- 导航功能测试
- 现有功能回归测试
- 搜索和筛选功能测试
- 分页加载测试

## Change Log
| Date | Version | Description | Author |
|------|---------|-------------|--------|
| 2025-11-21 | 1.0 | 初始故事创建 | Bob (Scrum Master) |

## Dev Agent Record

### Agent Model Used
Claude Sonnet 4.5 (d8d-model)

### Debug Log References
- 成功重构商品列表页面结构
- 集成TDesign Search组件
- 应用tcb-shop-demo设计规范
- 保持所有现有功能

### Completion Notes List
1. ✅ 移除TabBarLayout包装，改为二级页面结构
2. ✅ 应用白色背景色 `#fff` 和灰色容器背景 `#f2f2f2`
3. ✅ 使用TDesign Search组件，圆角32rpx，高度64rpx
4. ✅ 商品列表改用GoodsList组件，与首页保持一致
5. ✅ 保持搜索、分类筛选、分页加载、购物车等所有功能
6. ✅ 导航栏已配置返回按钮和页面标题

### File List
- `mini/src/pages/goods-list/index.tsx` - 主要重构文件
- `mini/src/components/goods-list/index.tsx` - 使用的商品列表组件
- `mini/src/components/tdesign/search/index.tsx` - TDesign搜索组件

## QA Results