ai-chatbot/火山引擎视频服务-缺失功能检查报告.md
Your Name 53ddb7e585
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
Initial commit - clean repository
2025-12-17 20:15:18 +08:00

428 lines
13 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.

# 火山引擎视频服务 - 缺失功能检查报告
## 📋 检查日期:2025-12-09
根据《火山引擎视频服务开发计划.md》,对照实际已完成的代码,以下是**详细的缺失功能清单**。
---
## ✅ 已完成部分(核心后端)
### 阶段 1:数据库与类型系统扩展 ✅ 100%
- ✅ AI Provider 类型枚举(volcano-video)
- ✅ AiModel 表扩展(capabilities、defaultParams)
- ✅ Message 表扩展(视频存储字段)
- ✅ TypeScript 类型定义(types/ai.ts)
- ✅ 数据库迁移脚本(0018_add_volcano_video_support.sql)
### 阶段 2:核心 Provider 开发 ✅ 100%
- ✅ volcano-video.ts(完整实现)
- ✅ 图片处理(URL → Base64 + S3)
- ✅ 参数构建(--ratio、--dur等)
- ✅ 任务创建和轮询
- ✅ 同步/流式生成
### 阶段 3:视频永久存储系统 ✅ 100%
- ✅ 视频归档服务(video-archiver.ts)
- ✅ 定时归档任务(video-archive-job.ts)
- ✅ 归档API路由(/api/jobs/archive-videos)
- ✅ Vercel Cron配置(vercel.json)
### 阶段 7:管理后台配置 ✅ 50%(部分完成)
- ✅ AI Provider API 验证(支持 volcano-video)
- ❌ **AI Model API 模型能力配置**(未实现)
- ❌ **前端UI增强**(未实现)
---
## ❌ 缺失功能详细清单
### **【高优先级 P0】阶段 6:Chat API 集成** - 0% 完成
#### 6.1 generate_video Tool 定义 ❌
**文件**:`app/(chat)/api/chat/route.ts`
**缺失内容**:
```typescript
// 需要新增 generate_video Tool
{
name: 'generate_video',
description: '生成视频,支持文生视频、图生视频等多种模式',
parameters: {
type: 'object',
properties: {
prompt: { type: 'string', description: '视频生成提示词' },
mode: {
type: 'string',
enum: ['text-to-video', 'first-frame', 'first-last-frame', 'reference-images']
},
images: { type: 'array', items: { type: 'string' } },
resolution: { type: 'string', enum: ['480p', '720p', '1080p'], default: '720p' },
ratio: { type: 'string', enum: ['16:9', '4:3', '1:1', '3:4', '9:16', '21:9'] },
duration: { type: 'number', minimum: 2, maximum: 12, default: 5 }
},
required: ['prompt', 'mode']
}
}
```
**影响**:无法通过聊天界面调用视频生成功能。
---
#### 6.2 智能模型选择逻辑 ❌
**文件**:`app/(chat)/api/chat/route.ts`
**缺失函数**:
- `getCompatibleModel(mode, provider)`:根据生成模式选择合适的模型
- `selectBestModel(models, mode)`:从多个模型中选择最佳模型
- `validateParamsAgainstCapabilities(params, model)`:参数验证
**影响**:无法根据用户选择的模式自动匹配最佳模型。
---
#### 6.3 Tool 执行逻辑 ❌
**文件**:`app/(chat)/api/chat/route.ts`
**缺失内容**:
```typescript
case 'generate_video': {
const { prompt, mode, images, ...params } = toolCall.args;
// 1. 根据生成模式自动选择合适的模型
const compatibleModel = await getCompatibleModel(mode, 'volcano-video');
// 2. 验证参数是否符合模型能力
validateParamsAgainstCapabilities(params, compatibleModel);
// 3. 根据模式处理图片输入
const options = buildVideoOptions(mode, images, prompt, params, compatibleModel.modelId);
// 4. 调用视频生成(流式输出进度)
const result = await generateVideoWithProgress(options);
// 5. 保存临时视频URL到数据库
await saveVideoMessage({
chatId: message.chatId,
role: 'assistant',
temporaryVideoUrl: result.videoUrl,
videoMetadata: { taskId, duration, resolution, ratio },
videoStorageStatus: 'temporary'
});
// 6. 返回视频链接和预览组件
return formatVideoToolResult(result);
}
```
**影响**:完全无法生成视频。
---
#### 6.4 保存视频消息到数据库 ❌
**文件**:`app/(chat)/api/chat/route.ts`
**缺失函数**:
```typescript
async function saveVideoMessage(data: {
chatId: string;
role: 'assistant';
temporaryVideoUrl: string;
videoMetadata: { taskId, duration, resolution, ratio };
videoStorageStatus: 'temporary';
}) {
await db.insert(message).values({
chatId: data.chatId,
role: data.role,
content: `生成的视频`,
temporaryVideoUrl: data.temporaryVideoUrl,
videoMetadata: data.videoMetadata,
videoStorageStatus: data.videoStorageStatus,
createdAt: new Date(),
});
}
```
**影响**:视频生成后无法保存到数据库,归档系统无法工作。
---
### **【高优先级 P1】阶段 4:前端参数栏开发** - 0% 完成
#### 4.1 VideoParamsBar 组件 ❌
**文件**:`components/video-params-bar.tsx`(**完全缺失**)
**需要实现**:
- 横向参数栏布局(模式/分辨率/宽高比/时长/运镜等)
- 动态显示/隐藏选项(根据模型能力)
- 参数实时验证和提示
- 本地存储保存用户偏好
**预计代码量**:~300-500 行
---
#### 4.2 集成到聊天界面 ❌
**文件**:`app/(chat)/page.tsx` 或相关聊天组件
**缺失内容**:
- 动态图片上传按钮(根据模式显示不同按钮)
- 文生视频:隐藏图片上传
- 图生视频-首帧:显示 `[+ 图片]`
- 首尾帧:显示 `[+ 首帧] [+ 尾帧]`
- 参考图:显示 `[+ 参考图 (0/4)]`
- 参数栏显示/隐藏控制(仅当选择 volcano-video 模型时显示)
- 参数实时同步到消息发送
**影响**:用户无法在前端界面调整视频参数。
---
#### 4.3 动态 Placeholder 提示 ❌
**文件**:相关聊天输入组件
**缺失函数**:
```typescript
function getPlaceholder(modelType?: string, mode?: VideoGenerationMode): string {
if (modelType !== 'volcano-video') return '输入消息...';
switch (mode) {
case 'text-to-video':
return '输入文字,描述你想创作的画面内容、运动方式等。';
case 'first-frame':
return '描述如何让图片动起来。例如:女孩睁开眼,头发被风吹动。';
case 'first-last-frame':
return '描述镜头运动轨迹。例如:360度环绕运镜。';
case 'reference-images':
return '描述如何融合参考图元素。';
default:
return '输入视频生成提示词...';
}
}
```
---
### **【中优先级 P2】阶段 5:视频预览组件** - 50% 完成
#### 5.1 视频预览组件 ✅ 部分完成
**文件**:`components/video-preview.tsx`(**已存在**)
**已有功能**:
- ✅ 视频播放器
- ✅ 下载按钮
- ✅ 全屏播放
**缺失功能**:
- ❌ 封面图显示(使用首帧或尾帧)
- ❌ 悬停显示元数据(分辨率、时长、文件大小)
- ❌ 编辑按钮(类似图片编辑功能)
---
#### 5.2 加载动画组件 ✅ 已复用
**文件**:`components/qianwen-video-loading.tsx`
**状态**:✅ 可直接复用,无需额外开发
---
### **【中优先级 P2】阶段 7:管理后台配置** - 50% 完成
#### 7.1 AI Provider API ✅ 已完成
**文件**:`app/api/admin/ai-providers/route.ts`
**状态**:✅ 已支持 volcano-video 类型验证
---
#### 7.2 AI Model API 模型能力配置 ❌
**文件**:`app/api/admin/ai-models/route.ts`
**缺失内容**:
- ❌ capabilities 字段的 Zod 验证
- ❌ defaultParams 字段的 Zod 验证
- ❌ POST/PUT 接口支持保存模型能力配置
**示例缺失代码**:
```typescript
const modelConfigSchema = z.object({
modelId: z.string(),
displayName: z.string(),
providerId: z.string().uuid(),
// 🆕 模型能力配置(视频模型专用)
capabilities: z.object({
supportedModes: z.array(z.enum([
'text-to-video', 'first-frame', 'first-last-frame', 'reference-images'
])),
supportedResolutions: z.array(z.enum(['480p', '720p', '1080p'])),
supportedRatios: z.array(z.enum(['16:9', '4:3', '1:1', '3:4', '9:16', '21:9'])),
durationRange: z.object({ min: z.number(), max: z.number() }),
supportWatermark: z.boolean(),
supportCameraFixed: z.boolean(),
supportSeed: z.boolean(),
supportReturnLastFrame: z.boolean(),
maxReferenceImages: z.number().optional()
}).optional(),
// 🆕 默认参数配置
defaultParams: z.object({
resolution: z.enum(['480p', '720p', '1080p']).default('720p'),
ratio: z.enum(['16:9', '4:3', '1:1', '3:4', '9:16', '21:9']).default('16:9'),
duration: z.number().min(2).max(12).default(5),
watermark: z.boolean().default(true),
cameraFixed: z.boolean().default(false)
}).optional()
});
```
---
#### 7.3 前端UI增强 ❌
**文件**:`app/(admin)/settings/admin-settings-client.tsx` 或相关管理页面
**缺失内容**:
- ❌ 添加模型时配置能力参数的UI表单
- ❌ 支持的功能复选框(文生视频/图生视频等)
- ❌ 支持的参数配置(分辨率/宽高比/时长范围等)
- ❌ 默认参数设置表单
- ❌ 预设模板快速应用功能
**影响**:管理员无法通过UI配置模型能力,只能手动修改数据库。
---
### **【低优先级 P3】阶段 8:测试与优化** - 0% 完成
#### 8.1 单元测试 ❌
**缺失内容**:
- volcano-video.ts 的单元测试
- video-archiver.ts 的单元测试
- 参数验证逻辑测试
---
#### 8.2 集成测试 ❌
**缺失内容**:
- 完整的视频生成流程测试
- 归档任务测试
- S3存储集成测试
---
#### 8.3 性能优化 ❌
**缺失内容**:
- 视频下载超时优化
- 并发归档数量调整
- 数据库查询索引优化验证
---
## 📊 完成度统计
| 阶段 | 描述 | 完成度 | 状态 |
|------|------|--------|------|
| 阶段 1 | 数据库与类型系统扩展 | 100% | ✅ 已完成 |
| 阶段 2 | 核心 Provider 开发 | 100% | ✅ 已完成 |
| 阶段 3 | 视频永久存储系统 | 100% | ✅ 已完成 |
| **阶段 4** | **前端参数栏开发** | **0%** | ❌ **未开始** |
| 阶段 5 | 视频预览组件 | 50% | ⚠️ 部分完成 |
| **阶段 6** | **Chat API 集成** | **0%** | ❌ **未开始** |
| 阶段 7 | 管理后台配置 | 50% | ⚠️ 部分完成 |
| 阶段 8 | 测试与优化 | 0% | ❌ 未开始 |
**总体完成度:约 50%**(核心后端完成,前端和集成未完成)
---
## 🚨 核心阻塞问题
### ⚠️ 无法使用的原因
目前用户**完全无法使用视频生成功能**,因为:
1. **Chat API 未集成 generate_video Tool** ❌
- 聊天界面无法触发视频生成
- 即使调用 Provider 也无法保存到数据库
2. **前端参数栏未开发** ❌
- 用户无法选择生成模式
- 无法上传图片
- 无法调整参数(分辨率/时长等)
3. **管理后台配置不完整** ❌
- 管理员无法添加视频模型
- 无法配置模型能力
---
## 🎯 优先级开发建议
### **Phase 1:核心功能(1-2天)- 必须完成**
1. ✅ Chat API 集成(generate_video Tool)
- Tool 定义
- 执行逻辑
- 数据库保存
- 智能模型选择
### **Phase 2:最小可用UI(2-3天)- 必须完成**
2. ✅ 简化版参数栏
- 基础模式选择(下拉菜单)
- 图片上传按钮(根据模式动态显示)
- 基础参数调整(分辨率/时长)
3. ✅ 管理后台基础配置
- AI Model API 支持 capabilities/defaultParams
- 简单的表单支持添加模型能力
### **Phase 3:完整体验(3-4天)- 可选优化**
4. ⚠️ 完整参数栏(横向布局、高级选项)
5. ⚠️ 管理后台UI完善(预设模板、参数验证)
6. ⚠️ 视频预览组件增强(元数据显示)
### **Phase 4:测试与优化(1-2天)- 可选**
7. ⚠️ 功能测试
8. ⚠️ 性能优化
---
## 📋 立即行动清单
### 🔴 紧急(P0)- 无此功能无法使用
- [ ] 实现 Chat API generate_video Tool
- [ ] 实现智能模型选择逻辑
- [ ] 实现视频消息保存到数据库
### 🟠 重要(P1)- 基础可用性
- [ ] 创建简化版 VideoParamsBar 组件
- [ ] 集成参数栏到聊天界面
- [ ] 实现动态图片上传按钮
- [ ] 扩展 AI Model API 支持 capabilities
### 🟡 优化(P2)- 增强体验
- [ ] 完善视频预览组件(元数据显示)
- [ ] 完善管理后台UI(模型能力配置表单)
- [ ] 添加预设模板功能
### 🟢 可选(P3)- 锦上添花
- [ ] 单元测试
- [ ] 性能优化
- [ ] 错误处理增强
---
## 📝 总结
**核心问题**:
- ❌ **Chat API 完全未集成**:无法调用视频生成
- ❌ **前端参数栏完全缺失**:用户无法操作
- ❌ **管理后台配置不完整**:无法添加模型
**建议方案**:
1. **优先完成 Phase 1**(Chat API集成),实现基础功能
2. **然后完成 Phase 2**(简化版UI),达到最小可用状态
3. **最后完成 Phase 3/4**(完整体验和优化)
**预计剩余工作量**:
- Phase 1:1-2 天(高优先级)
- Phase 2:2-3 天(高优先级)
- Phase 3/4:4-6 天(可选优化)
**总计**:约 7-11 天完成完整功能(最少需要 3-5 天达到最小可用状态)
---
**报告生成时间**:2025-12-09
**检查范围**:完整对比开发计划文档
**检查结果**:缺失约 50% 功能(主要是前端和API集成)