272 lines
6.5 KiB
Markdown
272 lines
6.5 KiB
Markdown
# 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 服务集成解决方案。
|