mixvideo-v2/docs/feature-project-batch-ai-cl...

132 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目一键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. 优化大量素材的处理性能