|
| 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