# Sora2Pro 模型接入实施总结

## 概述
成功接入速创API的 Sora2Pro 视频生成模型，支持文生视频和图生视频功能。

## API 接口信息
- **提交接口**: `https://api.wuyinkeji.com/api/sora2pro/submit`
- **查询接口**: `https://api.wuyinkeji.com/api/sora2/detail` (与 sora2 共用)
- **请求方式**: POST (表单提交)
- **认证方式**: Authorization Header

## API 参数说明

### 提交参数
| 参数名 | 必填 | 类型 | 说明 | 示例值 |
|--------|------|------|------|--------|
| prompt | 是 | string | 生成视频的提示词，须避免出现黄、暴、政、以及其他著名IP相关内容 | 小猫钓鱼 |
| url | 否 | string | 参考图片URL（外网访问并下载的图片链接，图片须避免出现真人形象） | https://xx.com/demo.jpg |
| aspectRatio | 否 | string | 输出视频比例，支持：9:16（竖屏）、16:9（横屏），默认 9:16 | 9:16 |
| duration | 否 | string | 视频时长（秒），支持：15、25，默认 25 | 25 |

### 注意事项
- **25秒视频**：只能生成标清视频
- **15秒视频**：支持高清和标清选项（通过模型配置区分）
- **sora2pro 接口**：不需要 `size` 参数（与 sora2 接口不同）

## 定价信息
- **统一价格**: 400积分/次
- 所有 sora2pro 模型（文生视频/图生视频，15秒/25秒，竖屏/横屏）均为 400积分

## 数据库配置

### 模型列表
共添加 12 个模型配置到 `points_config` 表：

#### 文生视频模型（6个）
1. `sc_sora2pro_text_portrait_15s_small` - 速创Sora2Pro 文生视频-竖屏-15秒-标清
2. `sc_sora2pro_text_portrait_15s_large` - 速创Sora2Pro 文生视频-竖屏-15秒-高清
3. `sc_sora2pro_text_portrait_25s_small` - 速创Sora2Pro 文生视频-竖屏-25秒-标清
4. `sc_sora2pro_text_landscape_15s_small` - 速创Sora2Pro 文生视频-横屏-15秒-标清
5. `sc_sora2pro_text_landscape_15s_large` - 速创Sora2Pro 文生视频-横屏-15秒-高清
6. `sc_sora2pro_text_landscape_25s_small` - 速创Sora2Pro 文生视频-横屏-25秒-标清

#### 图生视频模型（6个）
1. `sc_sora2pro_img_portrait_15s_small` - 速创Sora2Pro 图生视频-竖屏-15秒-标清
2. `sc_sora2pro_img_portrait_15s_large` - 速创Sora2Pro 图生视频-竖屏-15秒-高清
3. `sc_sora2pro_img_portrait_25s_small` - 速创Sora2Pro 图生视频-竖屏-25秒-标清
4. `sc_sora2pro_img_landscape_15s_small` - 速创Sora2Pro 图生视频-横屏-15秒-标清
5. `sc_sora2pro_img_landscape_15s_large` - 速创Sora2Pro 图生视频-横屏-15秒-高清
6. `sc_sora2pro_img_landscape_25s_small` - 速创Sora2Pro 图生视频-横屏-25秒-标清

### SQL 脚本
执行 `V11__add_sora2pro_models.sql` 脚本即可添加所有模型配置。

## 代码修改

### 修改文件
- `src/main/java/com/dora/service/provider/impl/SuChuangProviderImpl.java`

### 主要改动
1. **新增方法**: `isSora2ProModel(String modelName)` - 判断是否为 sora2pro 模型
2. **修改提交逻辑**: 
   - 自动识别 sora2pro 模型并使用 `/api/sora2pro/submit` 接口
   - sora2pro 接口不发送 `size` 参数
3. **日志增强**: 添加模型类型日志输出

### 关键代码片段
```java
// 判断是否为 sora2pro 模型
boolean isSora2Pro = isSora2ProModel(request.getModelName());

// 使用不同的接口
String requestUrl = isSora2Pro ? apiUrl + "/api/sora2pro/submit" : apiUrl + "/api/sora2-new/submit";

// sora2pro 不需要 size 参数
if (!isSora2Pro) {
    formData.add("size", size);
}
```

## 部署步骤

1. **执行数据库脚本**
   ```sql
   -- 执行 V11__add_sora2pro_models.sql
   source V11__add_sora2pro_models.sql;
   ```

2. **部署代码**
   - 部署更新后的 `SuChuangProviderImpl.java`
   - 重启应用服务

3. **验证配置**
   ```sql
   -- 验证模型是否添加成功
   SELECT model_name, description, points_cost, task_type, is_enabled
   FROM points_config
   WHERE model_name LIKE 'sc_sora2pro%'
   ORDER BY task_type, model_name;
   ```

## 使用示例

### 文生视频（15秒竖屏标清）
```json
{
  "modelName": "sc_sora2pro_text_portrait_15s_small",
  "prompt": "小猫钓鱼"
}
```

### 文生视频（25秒横屏标清）
```json
{
  "modelName": "sc_sora2pro_text_landscape_25s_small",
  "prompt": "美丽的风景"
}
```

### 图生视频（15秒竖屏高清）
```json
{
  "modelName": "sc_sora2pro_img_portrait_15s_large",
  "prompt": "根据图片生成视频",
  "imageUrl": "https://example.com/image.jpg"
}
```

## 注意事项

1. **接口差异**: sora2pro 使用 `/api/sora2pro/submit`，而 sora2 使用 `/api/sora2-new/submit`
2. **参数差异**: sora2pro 不需要 `size` 参数
3. **时长限制**: 25秒只能生成标清，15秒支持高清和标清
4. **查询接口**: sora2pro 和 sora2 共用 `/api/sora2/detail` 查询接口
5. **定价统一**: 所有 sora2pro 模型均为 400积分

## 测试建议

1. 测试文生视频（15秒和25秒）
2. 测试图生视频（15秒和25秒）
3. 测试不同宽高比（9:16 和 16:9）
4. 验证积分扣费是否正确（400积分）
5. 验证任务状态查询和结果获取

## 完成时间
2025-01-XX

