mixvideo-v2/apps/desktop/BOWONG_TEXT_VIDEO_AGENT_IMP...

272 lines
6.5 KiB
Markdown
Raw 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.

# BowongTextVideoAgent 服务实现文档
## 概述
本文档描述了 BowongTextVideoAgent 服务在 Tauri 桌面应用中的完整实现。该实现遵循正确的 Tauri 架构模式:**Rust 后端处理 API 集成TypeScript 前端通过 Tauri invoke 调用与后端通信**。
## 架构设计
### 正确的 Tauri 架构模式
```
Frontend (TypeScript/React)
↓ (Tauri invoke calls)
Backend (Rust)
↓ (HTTP requests)
External API (BowongTextVideoAgent)
```
### 四层架构实现
#### 1. 数据层 (Data Layer)
- **文件**: `apps/desktop/src-tauri/src/data/models/bowong_text_video_agent.rs`
- **内容**: 完整的数据模型定义 (300+ 行)
- **功能**:
- 所有 API 请求/响应结构体
- 12 个主要模块的数据模型
- Serde 序列化/反序列化支持
#### 2. 基础设施层 (Infrastructure Layer)
- **文件**: `apps/desktop/src-tauri/src/infrastructure/bowong_text_video_agent_service.rs`
- **内容**: HTTP 客户端服务实现 (600+ 行)
- **功能**:
- 完整的 HTTP 客户端封装
- 所有 12 个 API 模块的方法实现
- 错误处理和重试机制
- 任务轮询和状态管理
#### 3. 表示层 (Presentation Layer)
- **文件**: `apps/desktop/src-tauri/src/presentation/commands/bowong_text_video_agent_commands.rs`
- **内容**: Tauri 命令接口 (689+ 行)
- **功能**:
- 45+ 个 Tauri 命令
- 统一的命令命名规范 (`bowong_*`)
- 完整的错误处理
#### 4. 前端服务层 (Frontend Service Layer)
- **文件**: `apps/desktop/src/services/bowongTextVideoAgentService.ts`
- **内容**: TypeScript 服务类 (750+ 行)
- **功能**:
- 完整的前端 API 封装
- Tauri invoke 调用集成
- 类型安全的接口定义
## 主要功能模块
### 1. 提示词预处理模块
- 获取示例提示词
- 健康检查
- 提示词验证
### 2. 文件上传模块
- 通用文件上传
- S3 文件上传
- COS 文件上传
- 文件健康检查
### 3. 模板管理模块
- 获取模板列表
- 创建/更新/删除模板
- 任务类型检查
- 提示词检查
### 4. Midjourney 图像生成模块
- 同步图像生成
- 异步图像生成
- 任务状态查询
- 图像描述
### 5. 视频生成模块
- 异步视频生成
- 任务状态查询
- 批量状态查询
### 6. 任务管理模块
- 创建任务
- 查询任务状态
- 任务生命周期管理
### 7. 302AI 集成模块
- Midjourney 集成
- 极梦视频集成
- VEO 视频集成
- 任务取消和状态查询
### 8. 海螺语音模块
- 语音生成
- 语音列表获取
- 音频文件上传
- 语音克隆
### 9. 聚合接口模块
- 图像模型列表
- 视频模型列表
- 统一图像生成
- 统一视频生成
### 10. ComfyUI 集成模块
- 运行节点查询
- 任务提交
- 工作流执行
- 状态查询
### 11. Hedra 集成模块
- 文件上传
- 任务提交
- 状态查询
### 12. FFMPEG 处理模块
- 任务状态查询
- 媒体切片处理
## 技术特性
### Rust 后端特性
- **异步编程**: 使用 Tokio 进行异步 HTTP 请求
- **错误处理**: 使用 anyhow 和 thiserror 进行错误管理
- **序列化**: 使用 Serde 进行 JSON 序列化/反序列化
- **HTTP 客户端**: 使用 reqwest 进行 HTTP 通信
- **配置管理**: 灵活的配置系统
- **任务轮询**: 长时间运行任务的状态轮询机制
### TypeScript 前端特性
- **类型安全**: 完整的 TypeScript 类型定义
- **Tauri 集成**: 正确使用 Tauri invoke API
- **错误处理**: 统一的错误处理机制
- **重试机制**: 网络请求重试支持
- **缓存支持**: 可选的响应缓存
### 状态管理
- **AppState 集成**: 服务实例在应用状态中管理
- **线程安全**: 使用 Mutex 保证线程安全
- **生命周期管理**: 正确的服务初始化和清理
## 测试覆盖
### Rust 单元测试
- 服务创建和配置验证
- 数据模型序列化/反序列化
- 错误处理机制
- 任务轮询逻辑
### TypeScript 单元测试
- 服务初始化测试
- API 调用测试
- 错误处理测试
- 配置管理测试
### 集成测试
- 端到端架构验证
- 数据模型完整性测试
- 服务状态管理测试
## 使用示例
### 初始化服务
```rust
// Rust 后端
let config = BowongTextVideoAgentConfig {
base_url: "https://api.bowong.com".to_string(),
api_key: "your-api-key".to_string(),
timeout: Some(30),
retry_attempts: Some(3),
enable_cache: Some(true),
max_concurrency: Some(10),
};
state.initialize_bowong_service(config)?;
```
```typescript
// TypeScript 前端
const config = {
baseUrl: 'https://api.bowong.com',
apiKey: 'your-api-key',
timeout: 30000,
retryAttempts: 3,
enableCache: true,
maxConcurrency: 10
};
const service = new BowongTextVideoAgentService(config);
```
### 图像生成示例
```typescript
// 同步图像生成
const imageRequest = {
prompt: 'A beautiful landscape',
img_file: 'https://example.com/ref.jpg',
max_wait_time: 120,
poll_interval: 2
};
const result = await service.syncGenerateImage(imageRequest);
```
### 视频生成示例
```typescript
// 异步视频生成
const videoRequest = {
prompt: 'A video of nature',
img_url: 'https://example.com/ref.jpg',
duration: 10,
max_wait_time: 300,
poll_interval: 5
};
const task = await service.asyncGenerateVideo(videoRequest);
const status = await service.queryVideoTaskStatus(task.task_id);
```
## 部署和配置
### 环境要求
- Rust 1.70+
- Node.js 18+
- Tauri 2.0+
### 配置文件
服务配置通过 `BowongTextVideoAgentConfig` 结构体管理,支持:
- API 基础 URL
- API 密钥
- 超时设置
- 重试次数
- 缓存启用
- 最大并发数
### 错误处理
- 网络错误自动重试
- 超时错误处理
- API 错误码映射
- 用户友好的错误消息
## 性能优化
### 并发控制
- 最大并发请求数限制
- 连接池管理
- 请求队列机制
### 缓存策略
- 可选的响应缓存
- 智能缓存失效
- 内存使用优化
### 资源管理
- 自动连接清理
- 内存泄漏防护
- 优雅的服务关闭
## 总结
BowongTextVideoAgent 服务的实现完全遵循了 Tauri 桌面应用的最佳实践:
1. **正确的架构模式**: Rust 后端处理业务逻辑TypeScript 前端负责用户界面
2. **完整的功能覆盖**: 支持所有 12 个主要 API 模块45+ 个具体功能
3. **类型安全**: 完整的类型定义和编译时检查
4. **错误处理**: 全面的错误处理和用户反馈机制
5. **测试覆盖**: 单元测试、集成测试和端到端测试
6. **性能优化**: 并发控制、缓存策略和资源管理
该实现为 Tauri 桌面应用提供了一个完整、可靠、高性能的 AI 服务集成解决方案。