docs: 添加项目一键AI分类功能开发文档
- 详细说明功能实现和技术架构 - 包含完整的业务流程和测试结果 - 提供后续优化建议
This commit is contained in:
parent
eeeef4ead4
commit
e77f18ed13
|
|
@ -0,0 +1,131 @@
|
||||||
|
# 项目一键AI分类功能开发文档
|
||||||
|
|
||||||
|
## 功能概述
|
||||||
|
|
||||||
|
在项目级别添加一键AI分类功能,允许用户一次性对项目下所有符合条件的素材进行AI分类处理。
|
||||||
|
|
||||||
|
## 实现的功能
|
||||||
|
|
||||||
|
### 1. 后端实现
|
||||||
|
|
||||||
|
#### 数据模型 (video_classification.rs)
|
||||||
|
- `ProjectBatchClassificationRequest`: 项目一键分类请求
|
||||||
|
- `project_id`: 项目ID
|
||||||
|
- `overwrite_existing`: 是否覆盖已有分类
|
||||||
|
- `material_types`: 要处理的素材类型(可选,默认只处理视频)
|
||||||
|
- `priority`: 任务优先级
|
||||||
|
|
||||||
|
- `ProjectBatchClassificationResponse`: 项目一键分类响应
|
||||||
|
- `total_materials`: 项目中总素材数
|
||||||
|
- `eligible_materials`: 符合条件的素材数
|
||||||
|
- `created_tasks`: 创建的任务数
|
||||||
|
- `task_ids`: 创建的任务ID列表
|
||||||
|
- `skipped_materials`: 跳过的素材ID列表
|
||||||
|
|
||||||
|
#### 业务服务层 (video_classification_service.rs)
|
||||||
|
- `create_project_batch_classification_tasks()`: 核心业务逻辑
|
||||||
|
- 验证项目存在性
|
||||||
|
- 获取项目所有素材
|
||||||
|
- 过滤符合条件的素材:
|
||||||
|
- 只处理视频类型素材
|
||||||
|
- 只处理已完成处理的素材
|
||||||
|
- 有视频片段的素材
|
||||||
|
- 可选择是否跳过已有分类的素材
|
||||||
|
- 为每个符合条件的素材创建批量分类任务
|
||||||
|
- 返回详细的处理结果
|
||||||
|
|
||||||
|
#### Tauri命令接口 (video_classification_commands.rs)
|
||||||
|
- `start_project_batch_classification`: 启动项目一键分类
|
||||||
|
- 调用业务服务创建任务
|
||||||
|
- 启动分类队列
|
||||||
|
- 返回处理结果
|
||||||
|
|
||||||
|
### 2. 前端实现
|
||||||
|
|
||||||
|
#### 类型定义 (videoClassification.ts)
|
||||||
|
- 完整的TypeScript类型定义
|
||||||
|
- 包含所有相关的枚举、接口和数据结构
|
||||||
|
|
||||||
|
#### 状态管理 (videoClassificationStore.ts)
|
||||||
|
- `startProjectBatchClassification()`: 前端服务方法
|
||||||
|
- 调用Tauri命令
|
||||||
|
- 处理加载状态和错误
|
||||||
|
- 刷新队列状态
|
||||||
|
|
||||||
|
#### UI组件 (ProjectDetails.tsx)
|
||||||
|
- 一键AI分类按钮
|
||||||
|
- 渐变紫色设计,符合AI功能的视觉风格
|
||||||
|
- 加载状态显示(旋转图标)
|
||||||
|
- 禁用状态处理
|
||||||
|
- AI分类队列状态卡片
|
||||||
|
- 显示待处理任务数
|
||||||
|
- 显示正在处理的任务数
|
||||||
|
- 实时状态更新
|
||||||
|
- 队列状态监控
|
||||||
|
- 每3秒自动刷新队列状态
|
||||||
|
- 项目切换时重新加载状态
|
||||||
|
|
||||||
|
## 业务流程
|
||||||
|
|
||||||
|
1. **用户点击一键AI分类按钮**
|
||||||
|
2. **系统验证项目存在性**
|
||||||
|
3. **获取项目所有素材**
|
||||||
|
4. **过滤符合条件的素材**:
|
||||||
|
- 素材类型为视频
|
||||||
|
- 处理状态为已完成
|
||||||
|
- 存在视频片段
|
||||||
|
- 根据设置决定是否跳过已分类素材
|
||||||
|
5. **批量创建分类任务**
|
||||||
|
6. **启动AI分类队列**
|
||||||
|
7. **显示处理结果**
|
||||||
|
8. **实时监控队列状态**
|
||||||
|
|
||||||
|
## 技术特点
|
||||||
|
|
||||||
|
### 1. 兼容性
|
||||||
|
- 完全兼容现有的AI分类系统
|
||||||
|
- 复用现有的队列管理机制
|
||||||
|
- 不影响单个素材的分类功能
|
||||||
|
|
||||||
|
### 2. 用户体验
|
||||||
|
- 一键操作,简化用户流程
|
||||||
|
- 实时状态反馈
|
||||||
|
- 详细的处理结果展示
|
||||||
|
- 优雅的加载状态和错误处理
|
||||||
|
|
||||||
|
### 3. 性能优化
|
||||||
|
- 批量处理,提高效率
|
||||||
|
- 智能过滤,避免重复处理
|
||||||
|
- 异步处理,不阻塞UI
|
||||||
|
|
||||||
|
### 4. 错误处理
|
||||||
|
- 完善的错误捕获和提示
|
||||||
|
- 单个素材失败不影响整体流程
|
||||||
|
- 详细的日志记录
|
||||||
|
|
||||||
|
## 测试结果
|
||||||
|
|
||||||
|
✅ **编译测试**: 无编译错误,所有类型检查通过
|
||||||
|
✅ **运行测试**: 应用成功启动,功能正常运行
|
||||||
|
✅ **兼容性测试**: 与现有AI分类系统完全兼容
|
||||||
|
✅ **UI测试**: 界面显示正常,交互流畅
|
||||||
|
✅ **队列测试**: 队列状态监控正常工作
|
||||||
|
|
||||||
|
## 代码质量
|
||||||
|
|
||||||
|
- 遵循Tauri开发规范
|
||||||
|
- 完整的TypeScript类型定义
|
||||||
|
- 清晰的代码结构和注释
|
||||||
|
- 合理的错误处理机制
|
||||||
|
|
||||||
|
## 部署说明
|
||||||
|
|
||||||
|
功能已在feature分支 `feature/project-batch-ai-classification` 中完成开发和测试,可以合并到主分支进行部署。
|
||||||
|
|
||||||
|
## 后续优化建议
|
||||||
|
|
||||||
|
1. 添加批量分类的进度条显示
|
||||||
|
2. 支持自定义分类参数(如覆盖设置)
|
||||||
|
3. 添加分类结果的统计报告
|
||||||
|
4. 支持分类任务的暂停和恢复
|
||||||
|
5. 优化大量素材的处理性能
|
||||||
Loading…
Reference in New Issue