mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-24 23:10:56 +08:00
5.0 KiB
5.0 KiB
主题工作台功能完善计划
目标
完善主题工作台(Theme Workbench)的内容创建功能,增加添加图片和导入文稿功能。
用户需求
- ✅ 添加图片功能(前后端完整实现)
- ✅ 导入文稿功能(前后端完整实现)
- ✅ 保留现有的版本快照和分支话题功能
当前状态分析
已实现功能
- ✅ 基础版本快照创建(handleCreateVersionSnapshot)
- ✅ 上下文管理系统(useThemeContextWorkspace)
- ✅ 内容模板系统(tech-sharing, trending-topic等)
- ✅ 侧边栏UI(ThemeWorkbenchSidebar)
- ✅ 文件上传基础设施(useMaterials hook)
待实现功能
- ❌ "+"按钮的下拉菜单(添加图片、导入文稿选项)
- ❌ 图片上传和插入功能(前后端)
- ❌ 文稿导入和解析功能(前后端)
实现阶段
Stage 1: 增强"+"按钮UI
目标: 将单一按钮改为下拉菜单,支持多种创建选项
Success Criteria:
- "+"按钮点击后显示下拉菜单
- 菜单包含:创建版本快照、添加图片、导入文稿
- 菜单项点击后触发相应功能
实现步骤:
- 修改 ThemeWorkbenchSidebar.tsx,添加 DropdownMenu
- 添加菜单项:创建版本快照、添加图片、导入文稿
- 定义回调函数接口
文件修改:
src/components/agent/chat/components/ThemeWorkbenchSidebar.tsx
Status: Not Started
Stage 2: 实现添加图片功能(前端)
目标: 用户可以选择图片并插入到文档中
Success Criteria:
- 点击"添加图片"打开文件选择器
- 支持常见图片格式(jpg, png, gif, webp)
- 图片上传后显示在文档中
- 提供上传进度反馈
实现步骤:
- 在 ThemeWorkbenchSidebar 中添加 onAddImage 回调
- 在主组件中实现 handleAddImage 函数
- 调用文件选择器API
- 调用后端上传接口
- 将图片URL插入到文档画布
文件修改:
src/components/agent/chat/components/ThemeWorkbenchSidebar.tsxsrc/components/agent/chat/index.tsxsrc/lib/api/session-files.ts(可能需要新增)
Status: Not Started
Stage 3: 实现添加图片功能(后端)
目标: 后端接收图片上传请求并存储
Success Criteria:
- 接收图片文件上传
- 验证文件类型和大小
- 存储到 session files 或 materials
- 返回图片访问URL
实现步骤:
- 创建 Tauri command:
upload_image_to_session - 实现图片文件验证逻辑
- 存储图片到本地或云端
- 返回图片URL
文件修改:
src-tauri/src/commands/session_files_cmd.rs(或新建 image_cmd.rs)src-tauri/crates/core/src/session_files/storage.rs
Status: Not Started
Stage 4: 实现导入文稿功能(前端)
目标: 用户可以导入外部文稿到文档画布
Success Criteria:
- 点击"导入文稿"打开文件选择器
- 支持 .md, .txt, .docx 格式
- 文稿内容解析后加载到编辑器
- 提供导入进度反馈
实现步骤:
- 在 ThemeWorkbenchSidebar 中添加 onImportDocument 回调
- 在主组件中实现 handleImportDocument 函数
- 调用文件选择器API
- 调用后端解析接口
- 将解析后的内容加载到文档画布
文件修改:
src/components/agent/chat/components/ThemeWorkbenchSidebar.tsxsrc/components/agent/chat/index.tsxsrc/lib/api/document-import.ts(新建)
Status: Not Started
Stage 5: 实现导入文稿功能(后端)
目标: 后端解析不同格式的文稿文件
Success Criteria:
- 接收文件路径或文件内容
- 解析 Markdown (.md)
- 解析纯文本 (.txt)
- 解析 Word 文档 (.docx)
- 返回统一的 Markdown 格式
实现步骤:
- 创建 Tauri command:
import_document - 实现 Markdown 解析器
- 实现纯文本解析器
- 实现 Word 文档解析器(使用 docx-rs 或类似库)
- 统一输出格式
文件修改:
src-tauri/src/commands/document_import_cmd.rs(新建)src-tauri/crates/services/src/document_import_service.rs(新建)src-tauri/Cargo.toml(添加依赖)
Status: Not Started
技术细节
前端技术栈
- React + TypeScript
- styled-components
- Tauri API (文件选择器)
- lucide-react (图标)
后端技术栈
- Rust + Tauri
- docx-rs (Word 文档解析)
- markdown (Markdown 解析)
- tokio (异步IO)
文件格式支持
图片格式:
- JPEG (.jpg, .jpeg)
- PNG (.png)
- GIF (.gif)
- WebP (.webp)
文稿格式:
- Markdown (.md)
- 纯文本 (.txt)
- Word 文档 (.docx)
依赖关系
- Stage 1 独立实现(UI基础)
- Stage 2 依赖 Stage 1 和 Stage 3
- Stage 3 独立实现(后端图片)
- Stage 4 依赖 Stage 1 和 Stage 5
- Stage 5 独立实现(后端文稿)
注意事项
- 文件大小限制:图片 < 10MB,文稿 < 5MB
- 安全性:验证文件类型,防止恶意文件上传
- 错误处理:提供清晰的错误提示
- 用户体验:显示上传/导入进度
- 性能优化:大文件异步处理
- 兼容性:确保与现有功能不冲突