246 lines
6.9 KiB
Markdown
246 lines
6.9 KiB
Markdown
# 小程序重构开发计划
|
||
|
||
## 项目概述
|
||
将现有的图生图/图生视频小程序重构为模板卡片式首页 + 历史记录页面的架构。
|
||
|
||
## 开发阶段规划
|
||
|
||
### 阶段一:项目架构重构 (优先级:高)
|
||
|
||
#### 1.1 导航结构调整
|
||
- [ ] 修改 `app.config.ts` 添加tabBar配置
|
||
- 首页 (pages/home/index)
|
||
- 历史记录 (pages/history/index)
|
||
- [ ] 移除原有的 result 页面跳转逻辑
|
||
- [ ] 更新页面路由配置
|
||
|
||
#### 1.2 页面文件结构创建
|
||
```
|
||
src/pages/
|
||
├── home/ # 新首页 (模板卡片)
|
||
│ ├── index.tsx
|
||
│ ├── index.config.ts
|
||
│ └── index.css
|
||
├── history/ # 历史记录页面
|
||
│ ├── index.tsx
|
||
│ ├── index.config.ts
|
||
│ └── index.css
|
||
├── generate/ # 生成处理页面 (原index页面重构)
|
||
│ ├── index.tsx
|
||
│ ├── index.config.ts
|
||
│ └── index.css
|
||
└── result/ # 结果页面 (保留并优化)
|
||
├── index.tsx
|
||
├── index.config.ts
|
||
└── index.css
|
||
```
|
||
|
||
### 阶段二:数据存储和状态管理 (优先级:高)
|
||
|
||
#### 2.1 本地存储设计
|
||
- [ ] 设计历史记录数据结构
|
||
```typescript
|
||
interface HistoryRecord {
|
||
id: string
|
||
type: 'image-to-image' | 'image-to-video'
|
||
templateName: string
|
||
inputImage: string
|
||
outputResult: string | string[]
|
||
status: 'generating' | 'completed' | 'failed'
|
||
createTime: string
|
||
updateTime: string
|
||
}
|
||
```
|
||
|
||
#### 2.2 状态管理
|
||
- [x] 创建 `src/store/` 目录
|
||
- [x] 实现 Redux 状态管理(已从 Zustand 迁移到 Redux Toolkit)
|
||
- [x] `src/reducers/history.ts` - 历史记录管理
|
||
- [x] `src/reducers/template.ts` - 模板配置管理
|
||
- [x] `src/actions/` - Action creators
|
||
- [x] `src/selectors/` - 选择器
|
||
- [x] `src/hooks/redux.ts` - 类型化 hooks
|
||
- [x] 添加数据持久化功能(通过 Taro Storage API)
|
||
|
||
### 阶段三:模板卡片首页开发 (优先级:高)
|
||
|
||
#### 3.1 模板配置和数据
|
||
- [ ] 设计8个模板的配置数据
|
||
```typescript
|
||
interface Template {
|
||
id: string
|
||
name: string
|
||
description: string
|
||
type: 'image-to-image' | 'image-to-video'
|
||
thumbnail: string
|
||
category: string
|
||
}
|
||
```
|
||
- [ ] 添加模板缩略图资源
|
||
- [ ] 创建模板配置文件 `src/config/templates.ts`
|
||
|
||
#### 3.2 首页组件开发
|
||
- [ ] 创建模板卡片组件 `src/components/TemplateCard/`
|
||
- [ ] 支持2列网格布局
|
||
- [ ] 卡片hover效果
|
||
- [ ] 模板名称和描述显示
|
||
- [ ] 实现首页布局 `src/pages/home/index.tsx`
|
||
- [ ] 2列4行网格布局
|
||
- [ ] 模板卡片点击跳转到生成页面
|
||
- [ ] 添加首页样式 `src/pages/home/index.css`
|
||
|
||
### 阶段四:生成页面重构 (优先级:中)
|
||
|
||
#### 4.1 原index页面重构
|
||
- [ ] 将 `src/pages/index/` 重命名为 `src/pages/generate/`
|
||
- [ ] 修改生成页面接收模板参数
|
||
```typescript
|
||
// 从路由参数获取模板信息
|
||
interface GeneratePageParams {
|
||
templateId: string
|
||
templateName: string
|
||
templateType: 'image-to-image' | 'image-to-video'
|
||
}
|
||
```
|
||
|
||
#### 4.2 生成流程优化
|
||
- [ ] 添加模板信息显示
|
||
- [ ] 优化上传和生成流程
|
||
- [ ] 添加生成进度到历史记录
|
||
- [ ] 生成完成后更新历史记录状态
|
||
|
||
### 阶段五:历史记录页面开发 (优先级:中)
|
||
|
||
#### 5.1 历史记录页面布局
|
||
- [ ] 创建历史记录列表组件 `src/components/HistoryList/`
|
||
- [ ] 实现记录卡片组件 `src/components/HistoryCard/`
|
||
- [ ] 显示模板名称、生成时间
|
||
- [ ] 生成状态指示器
|
||
- [ ] 结果预览图
|
||
|
||
#### 5.2 历史记录功能
|
||
- [ ] 实现历史记录分页加载
|
||
- [ ] 添加筛选功能 (按类型、状态)
|
||
- [ ] 添加删除记录功能
|
||
- [ ] 点击记录查看详细结果
|
||
|
||
### 阶段六:组件优化和重构 (优先级:中)
|
||
|
||
#### 6.1 现有组件适配
|
||
- [ ] 优化 `UploadButton` 组件
|
||
- [ ] 适配不同模板类型
|
||
- [ ] 添加模板上下文信息
|
||
- [ ] 优化 `LoadingOverlay` 组件
|
||
- [ ] 显示当前模板信息
|
||
- [ ] 显示生成进度百分比
|
||
- [ ] 优化 `ErrorOverlay` 组件
|
||
- [ ] 提供重试和返回首页选项
|
||
|
||
#### 6.2 新增通用组件
|
||
- [ ] 创建 `NavigationBar` 组件 (如需要自定义导航)
|
||
- [ ] 创建 `StatusBadge` 组件 (状态指示器)
|
||
- [ ] 创建 `ImagePreview` 组件 (图片预览)
|
||
|
||
### 阶段七:用户体验优化 (优先级:低)
|
||
|
||
#### 7.1 交互优化
|
||
- [ ] 添加页面间过渡动画
|
||
- [ ] 添加加载骨架屏
|
||
- [ ] 优化触摸反馈
|
||
- [ ] 添加操作确认对话框
|
||
|
||
#### 7.2 性能优化
|
||
- [ ] 实现图片懒加载
|
||
- [ ] 添加历史记录虚拟滚动
|
||
- [ ] 优化打包体积
|
||
- [ ] 添加缓存策略
|
||
|
||
### 阶段八:测试和文档 (优先级:低)
|
||
|
||
#### 8.1 单元测试 (遵循TDD原则)
|
||
- [ ] 为历史记录Store添加测试
|
||
- [ ] 为模板配置添加测试
|
||
- [ ] 为通用工具函数添加测试
|
||
- [ ] 为核心业务逻辑添加测试
|
||
|
||
#### 8.2 集成测试
|
||
- [ ] 测试页面跳转流程
|
||
- [ ] 测试数据持久化
|
||
- [ ] 测试错误处理
|
||
|
||
## 技术实现细节
|
||
|
||
### 路由配置更新
|
||
```typescript
|
||
// app.config.ts
|
||
export default defineAppConfig({
|
||
pages: [
|
||
'pages/home/index', // 新首页
|
||
'pages/generate/index', // 生成页面
|
||
'pages/result/index', // 结果页面
|
||
'pages/history/index' // 历史记录页面
|
||
],
|
||
tabBar: {
|
||
list: [
|
||
{
|
||
pagePath: 'pages/home/index',
|
||
text: '首页',
|
||
iconPath: 'assets/icons/home.png',
|
||
selectedIconPath: 'assets/icons/home-active.png'
|
||
},
|
||
{
|
||
pagePath: 'pages/history/index',
|
||
text: '历史记录',
|
||
iconPath: 'assets/icons/history.png',
|
||
selectedIconPath: 'assets/icons/history-active.png'
|
||
}
|
||
]
|
||
},
|
||
// ...其他配置
|
||
})
|
||
```
|
||
|
||
### 数据流设计
|
||
```
|
||
首页模板选择 → 生成页面(携带模板信息) → 生成过程记录到历史 → 完成后更新历史状态 → 历史页面展示
|
||
```
|
||
|
||
## 开发优先级说明
|
||
|
||
### 高优先级 (第1-3周)
|
||
- 导航结构和基础页面创建
|
||
- 数据存储结构设计
|
||
- 模板卡片首页实现
|
||
|
||
### 中优先级 (第4-6周)
|
||
- 生成页面重构
|
||
- 历史记录页面开发
|
||
- 组件优化
|
||
|
||
### 低优先级 (第7-8周)
|
||
- 用户体验优化
|
||
- 性能优化
|
||
- 测试覆盖
|
||
|
||
## 里程碑检查点
|
||
|
||
1. **Week 2**: 基础页面结构和导航完成
|
||
2. **Week 4**: 模板首页和基础功能完成
|
||
3. **Week 6**: 历史记录功能完整实现
|
||
4. **Week 8**: 完整功能测试和优化完成
|
||
|
||
## 注意事项
|
||
|
||
1. **遵循TDD开发模式** - 先写测试,后写实现
|
||
2. **保持代码简洁** - 每个文件不超过500行
|
||
3. **类型安全** - 严格使用TypeScript类型定义
|
||
4. **平台兼容** - 确保微信小程序、H5、APP多端兼容
|
||
5. **用户体验** - 保持流畅的交互体验
|
||
6. **错误处理** - 完善的错误边界和用户反馈
|
||
|
||
## 依赖和资源需求
|
||
|
||
- **图标资源**: tabBar图标、模板缩略图
|
||
- **样式主题**: 统一的设计风格和颜色规范
|
||
- **API适配**: 确保现有SDK接口兼容新的页面流程
|
||
- **存储方案**: 本地存储和可能的云端同步需求 |