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

3.9 KiB
Raw Blame History

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