# 史诗001：tcb-shop-demo主题样式集成 - 棕地增强

## 史诗目标
将tcb-shop-demo包中的主题、样式和设计规范分析并集成到当前小程序项目中，提升UI一致性和用户体验，同时保持现有系统的完整性。

## 当前进度
- **完成度**: 83% (5/6 故事完成)
- **已集成**: 主题变量、颜色系统、字体系统、布局工具类、组件样式、首页UI重构、首页商品列表数据读取
- **待完成**: 首页轮播图改为后台广告图

## 史诗描述

### 现有系统上下文
- **当前相关功能**：小程序使用Tailwind CSS和自定义样式，主要关注滚动条样式和基础布局
- **技术栈**：小程序框架 + Tailwind CSS + 自定义CSS
- **集成点**：样式文件、组件样式、主题变量

### 增强详情
- **添加/更改内容**：集成tcb-shop-demo的完整样式系统，包括主题变量、颜色系统、字体系统、布局工具类、图标字体和组件样式
- **集成方式**：将tcb-shop-demo的样式文件迁移到当前项目，保持与现有Tailwind CSS的兼容性
- **成功标准**：样式系统完整集成，现有功能不受影响，UI一致性提升

## 故事

1. ✅ **故事1：主题变量和颜色系统集成** - 迁移tcb-shop-demo的主题变量和完整的颜色系统 (已完成)
2. ✅ **故事2：字体系统和布局工具类集成** - 集成字体大小、字重系统和Flex布局工具类 (已完成)
3. ✅ **故事3：图标字体和组件样式集成** - 集成图标字体系统和常用组件样式 (已完成)
4. ✅ **故事4：首页UI重构** - 参照tcb-shop-demo首页设计，重构小程序首页UI (已完成)
   - **对照文件**:
     - `tcb-shop-demo/pages/home/home.wxml` - 首页结构模板
     - `tcb-shop-demo/pages/home/home.wxss` - 首页样式文件
     - `tcb-shop-demo/pages/home/home.js` - 首页逻辑文件
     - `tcb-shop-demo/components/goods-list/index.wxml` - 商品列表组件
     - `tcb-shop-demo/components/goods-card/index.wxml` - 商品卡片组件
     - `tcb-shop-demo/components/goods-card/index.wxss` - 商品卡片样式

5. ✅ **故事5：首页商品列表数据读取** - 在首页增加商品列表数据读取功能，替换模拟数据 (已完成)
   - **目标文件**: `mini/src/pages/index/index.tsx`
   - **参考实现**: `mini/src/pages/goods-list/index.tsx`
   - **技术要点**:
     - 使用 `useInfiniteQuery` 支持分页和加载更多功能
     - 集成 `goodsClient` API 调用
     - 保持现有 `GoodsData` 接口兼容性
     - 添加加载状态和错误处理
     - 保持现有事件处理逻辑
     - 实现触底加载更多功能

6. 🔄 **故事6：首页轮播图改为后台广告图** - 将首页轮播图改为后台广告图，样式高度为图片高度，宽度自适应且居中 (进行中)
   - **目标文件**: `mini/src/pages/index/index.tsx`
   - **技术要点**:
     - 在 `mini/src/api.ts` 中添加 `advertisementClient`
     - 使用 `useQuery` 获取广告数据
     - 过滤启用的广告（status=1）
     - 样式调整：高度为图片高度，宽度自适应且居中
     - 保持现有轮播图功能（自动播放、指示器等）
     - 添加加载状态和错误处理

## 兼容性要求

- [ ] 现有API保持不变
- [ ] 样式系统与现有Tailwind CSS兼容
- [ ] UI更改遵循现有模式
- [ ] 性能影响最小化

## 风险缓解

- **主要风险**：样式冲突导致现有UI破坏
- **缓解措施**：分阶段集成，充分测试，保持现有样式优先级
- **回滚计划**：备份现有样式文件，可快速恢复

## 完成定义

- [ ] 所有故事完成且验收标准满足 (5/6 完成)
- [x] 现有功能通过测试验证
- [x] 集成点正常工作
- [x] 文档适当更新
- [x] 现有功能无回归

## 验证清单

### 范围验证
- [ ] 史诗可在1-3个故事内完成
- [ ] 无需架构文档
- [ ] 增强遵循现有模式
- [ ] 集成复杂度可控

### 风险评估
- [ ] 对现有系统风险低
- [ ] 回滚计划可行
- [ ] 测试方法覆盖现有功能
- [ ] 团队对集成点有足够了解

### 完整性检查
- [ ] 史诗目标清晰可实现
- [ ] 故事范围适当
- [ ] 成功标准可衡量
- [ ] 依赖项已识别

## 技术发现总结

### tcb-shop-demo样式系统分析

#### 1. 主题变量系统 ✅ (已完成)
- **主要主题色**：`#fa4126` (按钮主色), `#fa550f` (主要文字色)
- **TDesign组件主题**：自定义了TDesign MiniProgram组件的主题变量
- **按钮样式**：定义了完整的按钮状态和变体
- **集成状态**：已通过 `mini/src/tcb-theme.css` 完整集成

#### 2. 颜色系统 ✅ (已完成)
- **语义化颜色类**：`.text-primary`, `.text-success`, `.text-warn`, `.text-danger`
- **层级颜色**：`.text-title` (#282828), `.text-normal` (#5d5d5d), `.text-small` (#9b9b9b)
- **背景色类**：对应的背景色类名
- **集成状态**：已通过 `mini/src/tcb-theme.css` 完整集成，包含语义化颜色、层级颜色、背景色、边框色、按钮样式、状态指示器等

#### 3. 字体系统 ✅ (已完成)
- **字体大小**：从20rpx到82rpx的完整字体大小系统
- **字重系统**：`.fw-super` (800), `.fw-main` (600), `.fw-normal` (400), `.fw-minor` (300)
- **行高和文本截断**：多行文本截断工具类
- **集成状态**：已通过 `mini/src/tcb-theme.css` 完整集成

#### 4. 布局工具类 ✅ (已完成)
- **Flex布局**：完整的Flex工具类系统
- **间距系统**：基于rpx的padding和margin工具类
- **边框处理**：1px边框处理方案
- **集成状态**：已通过 `mini/src/tcb-theme.css` 完整集成

#### 5. 图标字体系统 ✅ (已完成)
- **图标实现**：使用Heroicons图标系统替代图标字体
- **图标组件**：TDesign Icon组件支持自定义图标
- **集成状态**：已通过TDesign组件库完整集成

#### 6. 组件样式 ✅ (已完成)
- **TDesign组件库**：Search、Icon、Swiper、Toast、Tabs组件
- **商品卡片**：完整的商品数据模型和事件处理
- **商品列表**：flex布局，支持商品卡片集成
- **集成状态**：所有组件样式已完整集成，应用tcb-shop-demo设计规范

#### 7. 首页UI设计模式 ✅ (已完成)
- **页面结构**：
  - 顶部搜索栏（禁用状态，带搜索图标）- 已实现
  - 轮播图区域（自动播放，圆角设计，aspectFill模式）- 已实现
  - 商品列表区域（flex布局）- 已实现
- **组件依赖**：
  - TDesign组件：search, swiper, icon, toast, tabs - 已实现
  - 自定义组件：goods-list, goods-card - 已实现
- **样式特点**：
  - 渐变背景：`linear-gradient(#fff, #f5f5f5)` - 已实现
  - 搜索框：圆角32rpx，高度64rpx - 已实现
  - 商品卡片：图片+标题+价格+购物车按钮布局 - 已实现
  - 主色调应用：搜索图标颜色、购物车按钮颜色、选中状态颜色 - 已实现
- **集成状态**：首页UI重构已完成，与tcb-shop-demo设计完全一致

## 集成策略

1. **分阶段集成**：按故事顺序逐步集成
2. **兼容性处理**：保持与Tailwind CSS的兼容性
3. **命名冲突避免**：使用前缀或命名空间避免类名冲突
4. **测试验证**：每个阶段进行充分测试验证

## 成功指标

- ✅ 所有tcb-shop-demo样式类可用
- ✅ 现有功能无回归
- ✅ UI一致性显著提升
- ✅ 开发效率提高（通过工具类复用）
- ✅ 首页商品数据真实化
- 🔄 首页轮播图使用后台广告数据

## 故事完成状态

### 故事1：主题变量和颜色系统集成 ✅ (已完成)
- **完成日期**: 2025-11-19
- **实施者**: James (Full Stack Developer)
- **关键成果**:
  - 创建了 `mini/src/tcb-theme.css` 文件，包含完整的主题变量和颜色系统
  - 集成了语义化颜色类（.text-primary, .text-success, .text-warn, .text-danger）
  - 集成了层级颜色类（.text-title, .text-normal, .text-small, .text-minor, .text-border）
  - 集成了TDesign组件主题变量
  - 创建了完整的测试套件 `mini/tests/theme-colors.test.tsx`
  - 所有测试通过，无回归问题
  - 与现有Tailwind CSS系统完全兼容

### 故事2：字体系统和布局工具类集成 ✅ (已完成)
- **完成日期**: 2025-11-19
- **实施者**: James (Full Stack Developer)
- **关键成果**:
  - 扩展了 `mini/src/tcb-theme.css` 文件，添加了完整的字体系统和布局工具类
  - 集成了字体大小系统（20rpx到82rpx的完整类名）
  - 集成了字重系统（.fw-super, .fw-main, .fw-normal, .fw-minor）
  - 集成了Flex布局工具类（对齐、分布、方向、换行）
  - 集成了间距系统（基于rpx的padding和margin工具类）
  - 添加了边框处理工具类（1px边框处理方案）
  - 创建了测试页面 `mini/src/pages/test-font-layout/` 验证所有类名可用
  - 所有测试通过，无回归问题
  - 与现有Tailwind CSS系统完全兼容

### 故事3：图标字体和组件样式集成 ✅ (已完成)
- **完成日期**: 2025-11-20
- **实施者**: James (Full Stack Developer)
- **关键成果**:
  - 创建了完整的TDesign组件库（Search、Icon、Swiper、Toast、Tabs组件）
  - 实现了组件样式架构，每个组件都有独立的样式文件
  - 集成了Heroicons图标系统，替代了图标字体
  - 创建了商品卡片组件，包含完整的商品数据模型和事件处理
  - 创建了商品列表组件，支持flex布局和商品卡片集成
  - 所有组件都应用了tcb-shop-demo的设计规范
  - 组件样式与主题系统完全兼容
  - 所有组件TypeScript编译正常，无错误

### 故事4：首页UI重构 ✅ (已完成)
- **完成日期**: 2025-11-20
- **实施者**: James (Full Stack Developer)
- **关键成果**:
  - 重构了 `mini/src/pages/index/index.tsx` 首页组件
  - 集成了TDesign Search组件（禁用状态，圆角32rpx）
  - 集成了TDesign Swiper组件（自动播放，导航指示器，aspectFill模式）
  - 集成了GoodsList商品列表组件
  - 应用了tcb-shop-demo页面结构（home-page-header + home-page-container）
  - 应用了渐变背景色（#fff 到 #f5f5f5）
  - 同步了tcb-shop-demo轮播图优化（固定高度300rpx）
  - 简化了轮播图容器样式，移除冗余flex布局
  - 修复了首页TypeScript错误（未使用变量和导入问题）
  - 更新了TDesign Swiper组件配置，设置高度为300rpx
  - 与现有TabBarLayout完全兼容
  - 首页组件TypeScript编译正常，无错误

### 故事5：首页商品列表数据读取 ✅ (已完成)
- **完成日期**: 2025-11-20
- **实施者**: James (Full Stack Developer)
- **关键成果**:
  - 重构了 `mini/src/pages/index/index.tsx` 首页组件，使用真实API数据
  - 集成了 `useInfiniteQuery` 支持分页和加载更多功能
  - 实现了 `goodsClient.$get()` API 调用，获取真实商品数据
  - 创建了数据转换函数 `convertToGoodsData`，将API数据转换为 `GoodsData` 接口格式
  - 实现了触底加载更多功能，支持无限滚动
  - 添加了完整的加载状态和错误处理
  - 保持了与现有 `GoodsList` 和 `GoodsCard` 组件的完全兼容性
  - 保持了现有事件处理逻辑（商品点击、添加到购物车等）
  - 首页组件TypeScript编译正常，无错误
  - 与现有TabBarLayout完全兼容

### 故事6：首页轮播图改为后台广告图 🔄 (进行中)
- **计划日期**: 2025-11-20
- **实施者**: James (Full Stack Developer)
- **技术分析**:
  - **当前状态**: 首页使用模拟轮播图数据 `imgSrcs`
  - **目标状态**: 使用 `advertisementClient` API 获取后台广告数据
  - **API分析**:
    - 需要在 `mini/src/api.ts` 中添加 `advertisementClient`
    - 广告API路径：`/api/v1/advertisements`
    - 需要过滤启用的广告（status=1）
  - **样式要求**:
    - 高度为图片高度，宽度自适应且居中
    - 保持现有轮播图功能（自动播放、指示器等）
    - 移除固定高度设置（当前为300rpx）
  - **技术实现**:
    - 使用 `useQuery` 获取广告数据
    - 数据转换：提取广告图片URL
    - 添加加载状态和错误处理
    - 保持与现有TDesign Swiper组件的兼容性