Skip to content

Commit 318c110

Browse files
committed
📝 docs: save feature planning documents
1 parent 1db4919 commit 318c110

File tree

1 file changed

+272
-0
lines changed

1 file changed

+272
-0
lines changed
Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
# 项目任务分解规划
2+
3+
## 已明确的决策
4+
5+
- 项目使用 Astro + SolidJS + TypeScript 技术栈
6+
- 使用 @fuyun/generative-ai 包集成 Gemini API
7+
- 当前支持通过 GEMINI_MODEL_NAME 环境变量配置模型(默认 gemini-2.5-flash)
8+
- 已实现基础的聊天对话功能和流式响应处理
9+
- 代码结构清晰,具有完善的类型定义和错误处理机制
10+
11+
## 整体规划概述
12+
13+
### 项目目标
14+
15+
为 GeminiProChat 项目实现智能绘图需求检测功能,当用户输入包含绘图相关请求时,自动切换到 Gemini 3 Pro Image Preview 模型进行图像生成,提供无缝的多模态对话体验。
16+
17+
### 技术栈
18+
19+
- **前端框架**: Astro + SolidJS
20+
- **样式**: UnoCSS + 自定义 CSS
21+
- **AI 集成**: Google Gemini Pro API (@fuyun/generative-ai)
22+
- **模型支持**:
23+
- 默认模型: gemini-2.5-flash (文本对话)
24+
- 图像模型: models/gemini-3-pro-image-preview (图像生成)
25+
- **部署**: Vercel/Netlify/Docker
26+
- **包管理**: pnpm
27+
28+
### 主要阶段
29+
30+
1. **需求分析与设计阶段** - 定义绘图需求识别规则和用户体验流程
31+
2. **核心功能开发阶段** - 实现自动检测和模型切换逻辑
32+
3. **用户界面优化阶段** - 添加模型状态指示和图像展示功能
33+
4. **测试与验证阶段** - 全面测试功能并优化用户体验
34+
35+
### 详细任务分解
36+
37+
#### 阶段 1:需求分析与设计阶段
38+
39+
- **任务 1.1**:定义绘图需求关键词和模式规则
40+
- 目标:建立一套完整的绘图需求识别规则库
41+
- 输入:用户消息文本
42+
- 输出:绘图需求判断结果和置信度
43+
- 涉及文件:src/utils/imageDetection.ts(新建)
44+
- 预估工作量:1 天
45+
46+
- **任务 1.2**:设计用户体验流程
47+
- 目标:设计从检测到展示的完整用户交互流程
48+
- 输入:功能需求文档
49+
- 输出:用户体验流程图和交互规范
50+
- 涉及文件:design-specs/image-generation-flow.md(新建)
51+
- 预估工作量:0.5 天
52+
53+
- **任务 1.3**:更新类型定义
54+
- 目标:扩展类型系统以支持图像生成功能
55+
- 输入:现有类型定义
56+
- 输出:更新后的类型定义文件
57+
- 涉及文件:src/types.ts
58+
- 预估工作量:0.5 天
59+
60+
#### 阶段 2:核心功能开发阶段
61+
62+
- **任务 2.1**:实现绘图需求检测工具
63+
- 目标:创建智能检测工具,准确识别用户的绘图意图
64+
- 输入:用户消息文本
65+
- 输出:检测结果(是否包含绘图需求)
66+
- 涉及文件:src/utils/imageDetection.ts(新建)
67+
- 预估工作量:1.5 天
68+
69+
- **任务 2.2**:改造 API 路由支持多模型
70+
- 目标:修改 generate.ts 以支持动态模型选择
71+
- 输入:请求消息和模型类型参数
72+
- 输出:使用相应模型的响应
73+
- 涉及文件:src/pages/api/generate.ts
74+
- 预估工作量:1 天
75+
76+
- **任务 2.3**:更新 OpenAI 工具类
77+
- 目标:扩展工具类以支持不同模型的调用
78+
- 输入:模型类型和消息历史
79+
- 输出:相应模型的响应流
80+
- 涉及文件:src/utils/openAI.ts
81+
- 预估工作量:1 天
82+
83+
- **任务 2.4**:实现前端模型切换逻辑
84+
- 目标:在 Generator 组件中集成检测和切换逻辑
85+
- 输入:用户输入消息
86+
- 输出:自动选择合适的模型并发送请求
87+
- 涉及文件:src/components/Generator.tsx
88+
- 预估工作量:1.5 天
89+
90+
#### 阶段 3:用户界面优化阶段
91+
92+
- **任务 3.1**:创建图像展示组件
93+
- 目标:开发专门的图像展示组件
94+
- 输入:图像 URL 和元数据
95+
- 输出:美观的图像展示界面
96+
- 涉及文件:src/components/ImageDisplay.tsx(新建)
97+
- 预估工作量:1 天
98+
99+
- **任务 3.2**:更新模型显示组件
100+
- 目标:实时显示当前使用的模型
101+
- 输入:当前模型名称
102+
- 输出:模型状态指示器
103+
- 涉及文件:src/components/ModelDisplay.tsx
104+
- 预估工作量:0.5 天
105+
106+
- **任务 3.3**:优化消息组件支持图像
107+
- 目标:扩展 MessageItem 组件以显示图像内容
108+
- 输入:包含图像的消息
109+
- 输出:图文混合的消息展示
110+
- 涉及文件:src/components/MessageItem.tsx
111+
- 预估工作量:1 天
112+
113+
- **任务 3.4**:添加加载状态和过渡动画
114+
- 目标:提供流畅的用户反馈体验
115+
- 输入:加载状态触发
116+
- 输出:平滑的过渡动画效果
117+
- 涉及文件:src/components/Generator.tsx, src/message.css
118+
- 预估工作量:0.5 天
119+
120+
#### 阶段 4:测试与验证阶段
121+
122+
- **任务 4.1**:编写单元测试
123+
- 目标:确保核心功能的正确性
124+
- 输入:测试用例
125+
- 输出:测试覆盖率报告
126+
- 涉及文件:tests/imageDetection.test.ts(新建)
127+
- 预估工作量:1 天
128+
129+
- **任务 4.2**:集成测试
130+
- 目标:验证整个功能的端到端流程
131+
- 输入:测试场景
132+
- 输出:集成测试报告
133+
- 涉及文件:tests/integration/image-generation.test.ts(新建)
134+
- 预估工作量:1 天
135+
136+
- **任务 4.3**:性能优化
137+
- 目标:优化响应时间和资源使用
138+
- 输入:性能测试结果
139+
- 输出:优化后的代码
140+
- 涉及文件:多个核心文件
141+
- 预估工作量:0.5 天
142+
143+
- **任务 4.4**:文档更新
144+
- 目标:更新项目文档和用户指南
145+
- 输入:新功能说明
146+
- 输出:更新后的 README 和配置说明
147+
- 涉及文件:README.md, README_cn.md 等
148+
- 预估工作量:0.5 天
149+
150+
## 需要进一步明确的问题
151+
152+
### 问题 1:如何实现准确的绘图需求检测?
153+
154+
**推荐方案**
155+
156+
- **方案 A:关键词匹配 + 模式识别**
157+
- 优点:实现简单,响应快速,可控性强
158+
- 缺点:可能漏掉复杂或隐式的绘图需求
159+
- 实现难度:低
160+
161+
- **方案 B:使用 Gemini 模型进行意图识别**
162+
- 优点:识别准确率高,能理解复杂上下文
163+
- 缺点:需要额外的 API 调用,增加延迟
164+
- 实现难度:中等
165+
166+
- **方案 C:混合方案(关键词 + 模型验证)**
167+
- 优点:平衡了速度和准确性
168+
- 缺点:实现复杂度较高
169+
- 实现难度:中等
170+
171+
**等待用户选择**
172+
173+
```
174+
请选择您偏好的方案,或提供其他建议:
175+
[ ] 方案 A:关键词匹配 + 模式识别
176+
[ ] 方案 B:使用 Gemini 模型进行意图识别
177+
[ ] 方案 C:混合方案(关键词 + 模型验证)
178+
[ ] 其他方案:_________________________
179+
```
180+
181+
### 问题 2:如何处理图像生成后的存储和展示?
182+
183+
**推荐方案**
184+
185+
- **方案 A:使用 Google Cloud Storage**
186+
- 优点:与 Google 生态集成好,可靠性高
187+
- 缺点:可能产生额外费用
188+
- 实现难度:中等
189+
190+
- **方案 B:使用 Vercel Blob(如果部署在 Vercel)**
191+
- 优点:简单集成,自动优化
192+
- 缺点:供应商锁定
193+
- 实现难度:低
194+
195+
- **方案 C:使用 Data URL 直接返回**
196+
- 优点:无需外部存储,简单直接
197+
- 缺点:响应体较大,不适合大图像
198+
- 实现难度:低
199+
200+
**等待用户选择**
201+
202+
```
203+
请选择您偏好的方案,或提供其他建议:
204+
[ ] 方案 A:使用 Google Cloud Storage
205+
[ ] 方案 B:使用 Vercel Blob
206+
[ ] 方案 C:使用 Data URL 直接返回
207+
[ ] 其他方案:_________________________
208+
```
209+
210+
### 问题 3:是否需要添加用户手动切换模型的选项?
211+
212+
**推荐方案**
213+
214+
- **方案 A:完全自动检测,不提供手动选项**
215+
- 优点:用户体验简洁,减少困惑
216+
- 缺点:用户无法控制使用哪个模型
217+
- 实现难度:低
218+
219+
- **方案 B:自动检测 + 手动覆盖选项**
220+
- 优点:给予用户更多控制权
221+
- 缺点:界面可能变得复杂
222+
- 实现难度:中等
223+
224+
- **方案 C:添加模型选择器,支持预设偏好**
225+
- 优点:完全的用户控制
226+
- 缺点:增加界面复杂度
227+
- 实现难度:中等
228+
229+
**等待用户选择**
230+
231+
```
232+
请选择您偏好的方案,或提供其他建议:
233+
[ ] 方案 A:完全自动检测,不提供手动选项
234+
[ ] 方案 B:自动检测 + 手动覆盖选项
235+
[ ] 方案 C:添加模型选择器,支持预设偏好
236+
[ ] 其他方案:_________________________
237+
```
238+
239+
## 用户反馈区域
240+
241+
请在此区域补充您对整体规划的意见和建议:
242+
243+
```
244+
用户补充内容:
245+
246+
---
247+
248+
---
249+
250+
---
251+
```
252+
253+
## 实施注意事项
254+
255+
1. **向后兼容**:确保新功能不影响现有的文本对话功能
256+
2. **错误处理**:完善图像生成失败时的降级和提示机制
257+
3. **性能考虑**:优化模型切换的响应时间
258+
4. **成本控制**:考虑不同模型的 API 调用成本差异
259+
5. **用户隐私**:如果使用外部存储,确保图像数据的安全性
260+
261+
## 预估总工作量
262+
263+
- **最小可行版本**:5-7 天
264+
- **完整功能版本**:10-14 天
265+
- **优化和测试**:额外 3-5 天
266+
267+
## 成功标准
268+
269+
1. 能准确识别 80% 以上的绘图需求
270+
2. 模型切换响应时间 < 500ms
271+
3. 图像生成成功率 > 95%
272+
4. 用户满意度评分 > 4.0/5.0

0 commit comments

Comments
 (0)