Files
ai/CURRENT_ARCHITECTURE.md
T
2026-06-15 18:13:21 +08:00

934 lines
27 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.
# Current Architecture
生成时间:2026-06-15
扫描范围:`/www/wwwroot/ai` 源码、Prisma schema、前后台入口、Provider/Router/Live Action/Media 实现。
## 1. 系统整体架构图
```text
用户端 H5 / uni-app
user-app/src/pages/index/index.vue
|
| REST API + JWT + 可选加密传输
v
NestJS Backend
backend/src/app.module.ts
|
|---------------- Auth / Users / Billing
|---------------- Projects / Novels / Story Bible
|---------------- Characters / Memories / Episodes
|---------------- Scripts / Images / Media
|---------------- Live Action / AI Router / Providers
|---------------- Reviews / Admin / Queues
|
v
MySQL 8
Prisma schema: backend/prisma/schema.prisma
|
+--> RenderTask / ProviderLog / OperationLog / Asset
|
v
Storage
local storage: storage/private
MinIO 预留: backend/src/assets/storage.service.ts
后台管理端
admin/src/App.vue
|
| Provider 配置 / Router 审计 / 任务审计 / 用户项目管理
v
NestJS Admin API
Worker 预留
workers/src/main.ts
|
| BullMQ 队列 worker 框架
v
Redis / BullMQ
AI Provider 抽象层
backend/src/providers/providers.service.ts
|
| mock / OpenAI / DeepSeek / MiniMax / Hailuo / Kling / Runway / Gemini 等
v
第三方 AI 平台
FFmpeg
|
| 图片/音频/字幕合成 MP4
| 真人视频片段拼接、裁切、字幕、BGM、SFX、响度归一
v
最终视频 Asset
```
## 2. 核心模块
### 后端模块
| 模块 | 主要职责 | 关键文件 |
|---|---|---|
| Auth / Users | 注册、登录、JWT、RBAC | `backend/src/auth/*`, `backend/src/users/*` |
| Projects | 项目创建、状态、输入/输出模式 | `backend/src/projects/*` |
| Assets / Storage | 上传、下载、私有素材、本地/MinIO 存储 | `backend/src/assets/*` |
| Novels | AI 原创小说、上传小说解析、章节拆分 | `backend/src/novels/*` |
| Story Bibles | 故事圣经生成/确认 | `backend/src/story-bibles/*` |
| Characters | 角色抽取、角色确认、角色锚点、全局角色关联 | `backend/src/characters/*` |
| Memories | 长篇记忆、剧情线 | `backend/src/memories/*` |
| Episodes | 分集计划生成/确认 | `backend/src/episodes/*` |
| Scripts | 单集脚本、分镜脚本 | `backend/src/scripts/*` |
| Images | 分镜图、角色图 mock/Provider 抽象 | `backend/src/images/*` |
| Media | 多角色 TTS、字幕、普通 FFmpeg 合成 | `backend/src/media/*` |
| Live Action | 真人短剧:演员定妆、真人分镜、关键帧、视频片段、质检、合成 | `backend/src/live-action/*` |
| AI Router | 镜头评分、自动选 Provider、fallback、成本判断 | `backend/src/ai-router/*` |
| Providers | Provider 配置、执行、日志、成本、bootstrap | `backend/src/providers/*` |
| Billing | 额度账户、冻结额度、成本预估 | `backend/src/billing/*` |
| Reviews | 文本/视频审核、公开案例授权 | `backend/src/reviews/*` |
| Queues | 任务查询、worker task 入口 | `backend/src/queues/*` |
| Admin | 后台项目、Provider、日志、审计、Router 视图 | `backend/src/admin/*` |
| Common | API 响应、异常、加密、中间件、HTTPS 检查 | `backend/src/common/*` |
### 前端模块
| 模块 | 主要职责 | 关键文件 |
|---|---|---|
| 用户端制作台 | 创建项目、上传/原创、版权、故事、角色、分集、脚本、真人视频、合成、审核、成品 | `user-app/src/pages/index/index.vue` |
| 用户端 API Client | 用户端 REST API 封装、错误文案、上传下载、真人视频接口 | `user-app/src/api/client.ts` |
| 用户端工作流 | 状态标签、进度计算、任务类型显示 | `user-app/src/workflow.ts` |
| 用户端样式 | 深色运营台风格、单列制作流程、响应式 UI | `user-app/src/styles.css` |
| 后台端 | Provider 配置、AI 平台入口、Router 审计、任务审计、项目管理 | `admin/src/App.vue` |
### Worker 模块
`workers/src/main.ts` 已有 BullMQ worker 框架,队列名包含:
- `novel_queue`
- `story_queue`
- `character_queue`
- `episode_queue`
- `script_queue`
- `storyboard_queue`
- `image_queue`
- `audio_queue`
- `subtitle_queue`
- `video_queue`
- `review_queue`
当前大量生成动作仍由 API 同步触发并写 `RenderTask`,队列化已有框架和部分后端队列入口,但仍需要继续把重任务全面迁移到 worker。
## 3. 数据表关系
### 主业务链路
```text
users
└─ projects
├─ novel_sources
│ └─ novel_chapters
├─ copyright_records
├─ story_bibles
├─ world_bibles
├─ characters
│ ├─ character_images
│ └─ character_memories
├─ plot_memories
├─ plot_threads
├─ episodes
│ ├─ episode_scripts
│ ├─ storyboard_shots
│ │ ├─ shot_images
│ │ └─ video_clips
│ └─ render_tasks
├─ assets
├─ content_reviews
├─ case_showcases
├─ project_creative_patterns
└─ analytics_events
```
### AI/任务/审计链路
```text
provider_configs
├─ provider_logs
└─ render_tasks.provider_id
render_tasks
├─ assets(output_asset_id)
├─ provider_logs(task_id)
└─ quota_logs(task_id)
operation_logs
└─ target_type + target_id 记录用户/后台/Router 操作轨迹
system_configs
└─ ai.router.v1 / security.api_crypto_enabled / current_stage
```
### 角色库链路
```text
global_characters
└─ global_character_assets
projects
└─ characters.global_character_id
├─ character_images
└─ actor_profiles
```
### 爆款诊断 / 模式库
```text
hit_analysis_cases
└─ hit_analysis_segments
└─ creative_patterns
└─ project_creative_patterns
```
### 关键表说明
| 表 | 作用 |
|---|---|
| `users` | 用户和管理员账号 |
| `projects` | 项目主表,区分 `ai_original/upload``image_manga/motion_comic/live_action_ai` |
| `novel_sources`, `novel_chapters` | 原创/上传小说源和章节 |
| `story_bibles`, `world_bibles` | 故事圣经、世界观设定 |
| `characters`, `global_characters` | 项目角色和全局角色库 |
| `character_images`, `actor_profiles` | 角色锚点图、真人演员定妆 |
| `episodes`, `episode_scripts`, `storyboard_shots` | 分集、脚本、分镜 |
| `shot_images` | 分镜图/关键帧 |
| `video_clips` | 真人视频片段 |
| `assets` | 私有/公开素材,包括小说、图片、音频、字幕、视频 |
| `render_tasks` | 生成任务、输入 JSON、成本、错误、输出素材 |
| `provider_configs` | AI Provider 配置 |
| `provider_logs` | Provider 调用日志、请求/响应摘要、成本 |
| `content_reviews` | 文本/视频审核 |
| `quota_accounts`, `quota_logs` | 用户额度 |
| `system_configs` | 系统配置,包括 Router 配置 |
| `operation_logs` | 操作日志和审计时间线 |
## 4. AI Provider 列表
Provider 默认模板来源:
- `backend/src/providers/provider.types.ts`
- `backend/prisma/seed.ts`
- `backend/prisma/migrations/20260602130000_domestic_video_providers/migration.sql`
### Mock Provider
| Provider Code | 类型 |
|---|---|
| `mock-text` | TextProvider |
| `mock-novel` | NovelProvider |
| `mock-image` | ImageProvider |
| `mock-video` | VideoProvider |
| `mock-voice` | VoiceProvider |
| `mock-lipsync` | LipSyncProvider,默认禁用 |
| `mock-moderation` | ModerationProvider |
| `mock-qc` | QualityCheckProvider |
| `mock-file-parse` | FileParseProvider |
| `mock-embedding` | EmbeddingProvider |
### OpenAI
| Provider Code | 类型 | 默认模型 |
|---|---|---|
| `openai-responses-text` | TextProvider | `gpt-5.5` |
| `openai-responses-novel` | NovelProvider | `gpt-5.5` |
| `openai-moderation` | ModerationProvider | `omni-moderation-latest` |
| `openai-embedding` | EmbeddingProvider | `text-embedding-3-small` |
| `openai-image` | ImageProvider | `gpt-image-2` |
| `openai-video` | VideoProvider | `sora-2` |
| `openai-tts` | VoiceProvider | `gpt-4o-mini-tts` |
### 视频 Provider
| Provider Code | 平台/模型 | 默认状态 |
|---|---|---|
| `minimax_hailuo_23_fast` | MiniMax Hailuo 2.3 Fast 图生视频 | 默认禁用,当前服务器已启用过 |
| `minimax_hailuo_23` | MiniMax Hailuo 2.3 图生视频 | 默认禁用 |
| `alibaba_wan26_i2v_flash` | 阿里 Wan2.6 I2V Flash | 默认禁用 |
| `alibaba_wan26_i2v` | 阿里 Wan2.6 I2V 标准 | 默认禁用 |
| `vidu_q3_turbo_reference` | Vidu Q3 Turbo 参考图生视频 | 默认禁用 |
| `vidu_q3_pro` | Vidu Q3 Pro 参考图生视频 | 默认禁用 |
| `jimeng_seedance` | 即梦/Seedance 图生视频 | 默认禁用 |
| `runway-image-to-video` | Runway Image-to-Video | 默认禁用 |
| `kling-image-to-video` | Kling Image-to-Video | 默认禁用 |
| `google-veo-video` | Google Veo Video | 默认禁用 |
| `replicate-video` | Replicate Video | 默认禁用 |
| `fal-video` | fal.ai Video | 默认禁用 |
| `luma-ray-video` | Luma Ray Video | 默认禁用 |
| `pika-video` | Pika Video | 默认禁用 |
### 文本/小说 Provider
| Provider Code | 平台 |
|---|---|
| `google-gemini-text`, `google-gemini-novel` | Google Gemini |
| `anthropic-claude-text`, `anthropic-claude-novel` | Anthropic Claude |
| `deepseek-text`, `deepseek-novel` | DeepSeek |
| `qwen-text`, `qwen-novel` | Alibaba Qwen |
| `kimi-text`, `kimi-novel` | Moonshot Kimi |
| `zhipu-glm-text`, `zhipu-glm-novel` | 智谱 GLM |
| `baidu-qianfan-text` | 百度千帆 |
| `tencent-hunyuan-text` | 腾讯混元 |
| `iflytek-spark-text` | 讯飞星火 |
| `volcengine-doubao-text`, `volcengine-doubao-novel` | 火山/豆包 |
| `minimax-text` | MiniMax |
| `baichuan-text` | 百川 |
| `stepfun-text` | 阶跃星辰 |
| `sensenova-text` | 商汤日日新 |
| `ai360-text` | 360 AI |
| `mistral-text` | Mistral |
| `cohere-command-text` | Cohere |
| `xai-grok-text` | xAI Grok |
| `openrouter-text` | OpenRouter |
| `together-llama-text` | Together |
| `fireworks-llama-text` | Fireworks |
| `perplexity-sonar-text` | Perplexity |
| `azure-openai-text` | Azure OpenAI |
| `aws-bedrock-openai-compatible-text` | AWS Bedrock OpenAI-compatible |
### 图片 Provider
| Provider Code | 平台 |
|---|---|
| `google-gemini-image` | Google Gemini Image |
| `stability-image` | Stability AI |
| `replicate-flux-image` | Replicate Flux |
| `fal-flux-image` | fal.ai Flux |
| `ideogram-image` | Ideogram |
| `leonardo-image` | Leonardo |
| `openai-image` | OpenAI Image |
| `mock-image` | Mock |
### 语音 Provider
| Provider Code | 平台 |
|---|---|
| `openai-tts` | OpenAI TTS |
| `elevenlabs-tts` | ElevenLabs |
| `minimax-tts` | MiniMax TTS |
| `volcengine-tts` | 火山 TTS |
| `mock-voice` | Mock |
### Lip Sync Provider
| Provider Code | 状态 |
|---|---|
| `mock-lipsync` | Mock,占位 |
| `minimax-lipsync` | 占位,需确认公开 API |
| `alibaba-videoretalk-lipsync` | 阿里 VideoRetalk,要求公网 `video_url/audio_url` |
| `heygen-lipsync` | 默认禁用 |
| `sync-labs-lipsync` | 默认禁用 |
| `fal-veed-lipsync` | 默认禁用 |
| `volcengine-doubao-lipsync` | 占位,需确认公开 API |
| `generic-lipsync` | 通用适配器 |
## 5. Router 逻辑
实现文件:
- `backend/src/ai-router/ai-router.service.ts`
- `backend/src/ai-router/ai-router.types.ts`
- 真人视频调用入口:`backend/src/live-action/live-action.service.ts`
### 默认配置
`system_configs.config_key = ai.router.v1`
```json
{
"version": 1,
"enabled": true,
"default_language": "zh-CN",
"daily_budget": 500,
"live_action_video": {
"zh-CN": {
"thresholds": {
"premium_importance_gt": 7,
"premium_action_gt": 5
},
"normal": {
"provider_code": "minimax_hailuo_23_fast",
"fallback_chain": ["minimax_hailuo_23_fast", "jimeng_seedance", "mock-video"]
},
"premium": {
"provider_code": "kling-image-to-video",
"fallback_chain": ["kling-image-to-video", "minimax_hailuo_23_fast", "jimeng_seedance", "mock-video"]
}
}
}
}
```
### 评分字段
`StoryboardShot` 上已落库:
- `scene_type`
- `importance_score`
- `emotion_score`
- `action_score`
- `route_tier`
### 决策流程
```text
StoryboardShot
-> scoreLiveActionShot()
scene_type / importance / emotion / action / route_tier
-> resolveLiveActionVideoRoute()
如果后台传 provider_code 且允许 override:走人工 Provider
否则读取 ai.router.v1
-> fallback_chain
normal: Hailuo -> Jimeng -> Mock
premium: Kling -> Hailuo -> Jimeng -> Mock
-> Provider 可用性检查
provider 存在
is_enabled=true
单片段成本不超过 max_cost_per_clip
当日预算不超过 daily_budget
-> 输出 AiRouteDecision
provider_code
fallback_chain
candidates
estimated_cost
decision_reason
scores
```
### 已实现能力
- 没传 `provider_code` 时自动走 Router。
- 后台/管理员可人工 override。
- 任务 `input_json` 记录 `router_decision`
- 支持 fallback 链、禁用 Provider 跳过、成本上限跳过、日预算跳过。
- Router 审计数据可从 `RenderTask.input_json``ProviderLog``OperationLog` 读取。
### 待优化
- Router 当前重点服务真人视频片段,文本/图片/TTS 多 Provider Router 仍可继续统一。
- 日预算目前基于 ProviderLog 聚合,缺少更强的账户级预算锁。
- Premium 阈值配置存在,但 `routeTierForScores` 的细节还可进一步后台可视化。
- Router 决策的人工可解释 UI 还可继续增强。
## 6. Prompt Builder 实现情况
实现文件:
- `backend/src/live-action/prompt-builder.service.ts`
- 调用点:`backend/src/live-action/live-action.service.ts`
### 已实现
`LiveActionPromptBuilderService` 已实现真人视频 Prompt Engine V1
- Provider profile
- `generic`
- `hailuo`
- `kling`
- `mock`
- 结构化输入:
- 项目/集/镜头编号
- Provider Code
- scene type / route tier
- duration
- characters
- actor consistency rules
- location
- action
- visual description
- camera motion / camera instruction
- performance instruction
- dialogue / narration
- effect type
- scores
- lip-sync policy
- director plan
- 输出:
- `prompt`
- `negative_prompt`
- `components`
- `prompt_version`
- `provider_profile`
### 场景模板
Prompt Builder 内置 scene template,用于决定:
- camera shot
- camera move
- lighting
- performance
- vfx cue
- sound cue
- negative motion
### Hailuo 专项
Hailuo profile 会输出中文短剧 Prompt,包含:
- 真人短剧竖屏 9:16
- 项目/集/镜头信息
- 场景、人物、演员一致性
- 主动作
- Motion Director
- Director Plan
- 镜头、表演、光线、特效、后期音效提示
- lip-sync fallback 约束
- “只完成一个主要动作,不要突然切场景”
- Hailuo 负面词中包含避免“一条 clip 塞长多动作”
### Lip Sync 策略
当没有稳定 lip-sync Provider 或镜头不适合正脸说话时,策略会落为:
- `post_tts_subtitle_light_mouth`
Prompt 会要求:
- 避免正脸嘴部特写
- 台词后期由 TTS 和字幕处理
- 演员只做轻微口型/反应/表情
### Motion Director / Director Plan
Live Action Service 会补充:
- `director_plan`
- scene group
- shot role
- shot size
- continuity in/out
- edit intent
- sound bridge
- `motion_director`
- time beats
- camera rhythm
- vfx timing
- sound hits
- negative motion
### 待优化
- Prompt Library/题材套路库已经有数据表,但与 Prompt Builder 的深度联动还不完整。
- 爆款拉片沉淀的 `creative_patterns` 还未全面驱动真人视频 Prompt。
- 专业音效/BGM 的剧情化选择已部分在 Live Action 后期里实现,但还缺可运营素材库。
- 多 Provider 差异化 Prompt 可继续细分,如 Kling/Runway/Veo 专用结构。
## 7. Character Library 实现情况
实现文件:
- `backend/src/characters/characters.service.ts`
- `backend/src/live-action/live-action.service.ts`
- 数据表:`characters`, `global_characters`, `global_character_assets`, `character_images`, `actor_profiles`
### 项目角色
已实现:
- 从故事圣经和章节抽取角色。
- 角色字段包含:
- name / aliases / role_type
- gender / age / identity
- appearance / face / hair / eye / body
- costume / props
- personality / speech / relationship / arc
- negative_rules
- anchor_asset_id
- voice provider/model/id/style
- performance_style
- 角色确认后锁定关键字段。
- 锁定后只允许有限字段变更,避免破坏一致性。
- 角色锚点图生成、重生成、切换锚点。
### 全局角色库
已实现数据结构:
- `global_characters`
- `global_character_assets`
- 项目角色可通过 `global_character_id` 关联全局角色。
当前定位:
- 已具备全局角色库基础表和后台入口。
- 更偏“生产系统预留 + 初步可用”,还不是完整运营级角色资产市场。
### 真人 Actor Profile
Live Action 已实现:
- `actor_profiles`
- 每个项目角色生成演员定妆。
- 字段包含:
- actor_desc
- appearance_rules
- wardrobe_rules
- performance_style
- voice_style
- reference_asset_ids
- anchor_asset_id
### Actor Lock V1
已实现:
- 生成每个真人视频镜头时,只把该镜头出现的角色 ActorProfile 注入 Provider Prompt。
- 记录:
- `actor_lock.character_names`
- `actor_lock.actor_hints`
- `reference_asset_ids`
- `provider_character_reference_enabled`
- `actor_lock.audit`
- 防止“全项目角色混入一个镜头”。
- 任务 `input_json.actor_lock` 可审计。
### 待优化
- 多角色同镜头的脸部一致性仍依赖 Provider 能力。
- 角色参考图/定妆图生成质量还需要更多真实 Provider 对比。
- 全局角色复用、授权、商用范围、声音样本绑定仍需完善运营闭环。
## 8. FFmpeg 流程
### 普通漫剧/图片视频流程
实现文件:
- `backend/src/media/media.service.ts`
流程:
```text
confirmed storyboard shots
-> shot_images
-> generateEpisodeAudio()
多角色 TTS
同文本 + 同 voice 缓存复用
segment files 落盘
timeline warnings
-> generateEpisodeSubtitle()
dialogue-level SRT
shot-level SRT 可选
-> renderEpisodeVideo()
prefer_ffmpeg=true 时走本地 FFmpeg
图片转视频
音频/字幕合成
输出 MP4 Asset
```
FFmpeg 能力:
- 检查 ffmpeg 是否存在。
- 分镜图写入临时目录。
- 音频/字幕素材写入临时目录。
- SRT 转 ASS 字幕。
- 图片生成视频轨。
- 音频混合。
- 输出 `video/mp4`
- 失败时写 `RenderTask.error_code/error_message`
### 真人短剧流程
实现文件:
- `backend/src/live-action/live-action.service.ts`
片段生成:
```text
StoryboardShot + keyframe
-> Router 选 Provider
-> Prompt Builder
-> Provider 生成 6s/10s clip
-> action_beat_mode 可拆成 2-3 段
-> 多段之间可提取上一段末帧作为下一段关键帧
-> concat + trim 到目标时长
-> VideoClip + Asset
```
整集合成:
```text
VideoClip assets
-> normalizeLiveActionClipForRender()
ffprobe 探测源时长
超出目标时长则自动裁切
记录 clip_normalization
-> concatVideoClips()
-> prepareLiveActionPostProductionAssets()
TTS 对白
SRT/ASS 字幕
BGM
SFX
可选 lip-sync
-> finalizeLiveActionRenderWithPostProduction()
视频调色/暗角/字幕
dialogue + bgm + sfx 混音
loudnorm / limiter
输出 episode-final.mp4
```
真人后期 FFmpeg 参数特点:
- `libx264`
- `-preset veryfast`
- `-crf 20`
- `yuv420p`
- `+faststart`
- 音频 `aac 160k 44100 stereo`
- BGM fade in/out
- SFX limiter
- dialogue loudnorm
- 混音 `amix normalize=0`
- 字幕走 ASS/FFmpeg subtitles filter
### 已记录审计
- `renderTask.input_json.clip_normalization`
- 是否裁切、源时长、目标时长、最终时长、裁切策略、trim start。
- 最终成片状态:
- 全 mock clip -> asset `mock`
- 任一真实 clip -> asset `active`
## 9. 当前已完成功能
### 系统 A 基础 MVP
- 用户注册登录。
- 项目创建。
- AI 原创小说 mock 流程。
- 上传小说、解析、章节拆分。
- 版权确认。
- 故事圣经生成/确认。
- 角色抽取/确认。
- 角色锚点图。
- 长篇记忆。
- 分集计划。
- 单集脚本。
- 分镜脚本。
- 图片生成 mock/Provider 抽象。
- 多角色 TTS。
- 字幕生成。
- FFmpeg 合成 MP4。
- 用户端查看进度、预览、下载。
- 后台项目管理、任务管理、Provider 管理。
- 内容审核。
- 公开案例授权。
- 额度账户和冻结额度。
### AI Provider
- Provider 抽象层。
- Mock Provider。
- OpenAI Provider 模板。
- 国内外主流文本/图片/视频/TTS/lip-sync Provider 模板。
- Provider 日志。
- Provider 成本摘要。
- 后台统一保存同公司 Key 的体验优化。
- MiniMax TTS 实测修复:
- voice_id 映射
- 空音频错误识别
- Provider 拒绝错误透出。
### 真人短剧
- `live_action_ai` 输出模式。
- 演员定妆 ActorProfile。
- 真人分镜改写。
- 关键帧生成/上传绑定。
- 视频片段生成:
- Hailuo / Kling / Jimeng / Mock 路由
- preflight
- 成本预估
- 单片段成本上限
- 真实费用确认
- action beat 拆段
- candidate_count 支持
- Router 质检闭环:
- 质检
- 低分自动重试
- fallback Provider
- manual_required
- 人工通过/驳回
- 片段重试。
- 小样测试台。
- 真人整集合成。
- TTS/BGM/SFX/字幕后期合成。
- clip normalization 自动裁切。
- actor lock 审计。
### 前端/后台体验
- 用户端制作页已改为单列纵向流程。
- 每步完成后自动滚动到下一步。
- 用户端真人视频面板已同步 action beat 控制。
- 后台深色运营台风格。
- 后台 AI 平台入口和配置。
- Router/质检审计视图和操作闭环已有实现。
## 10. 待优化功能
### 生产级队列化
- 当前 BullMQ/worker 框架已存在,但重型生成流程仍有大量 API 同步执行。
- 需要把:
- 重新质检
- 自动修复
- 指定 Provider 重试
- 真人视频生成
- FFmpeg 合成
全部任务化,形成可暂停、恢复、重跑、精确计费的队列闭环。
### 真人视频质量
- Hailuo 对复杂动作、翻滚、结印、法相天地等高复杂特效表现不稳定。
- 需要更多 Provider 准入测试:
- Kling
- Runway
- Vidu
- Veo
- 阿里 Wan
- 即梦/Seedance
- 都市短剧可继续用 Hailuo 主力;修仙/特效/复杂动作需要更强模型。
### Lip Sync
- 已有 lip-sync 抽象和多个 Provider 占位。
- 稳定公开 API 仍需逐个平台实测。
- MiniMax/豆包 lip-sync 目前标为占位,不能假定已稳定可用。
- 阿里 VideoRetalk 需要公网 `video_url/audio_url`,素材公网桥接已设计但仍需生产验证。
### Prompt Engine
- 真人 Prompt Builder V1 已落地。
- Prompt Library / CreativePattern 与实际脚本、分镜、真人 Prompt 的联动还需加强。
- 需要题材模板:
- 都市逆袭
- 霸总打脸
- 修仙法相
- 聊斋志异
- 次元壁
- 需要把拉片分析的镜头语言、音效、BGM、剪辑节奏转为可复用模板。
### Character Library
- 全局角色表已存在。
- 还需要:
- 前台化角色资产库
- 商用授权状态
- 角色复用统计
- voice sample 管理
- 多项目角色一致性验证
### 成本/ROI
- Provider 成本估算和日志已有。
- 还需接真实账单回填、播放数据、完播率、收益,形成 ROI:
- 每题材 ROI
- 每 Provider 成本/成功率
- 每镜头类型失败率
- 每集成本和收益
### 数据清理/生产隔离
- 当前服务器数据库包含大量测试项目、任务、素材和 ProviderLog。
- Git 只提交源码,不提交数据库和 storage。
- 上线前建议:
- 分测试库/生产库
- 测试素材定期清理
- ProviderLog 按时间归档
- storage 生命周期策略
## 11. 关键文件路径
### 根目录
| 文件 | 作用 |
|---|---|
| `README.md` | 项目说明 |
| `OPERATION_GUIDE.md` | 操作说明 |
| `AGENTS.md` | Codex 开发约束 |
| `.env.example` | 环境变量模板 |
| `.gitignore` | Git 忽略规则 |
| `CODEX_PROGRESS.md` | 阶段进度记录 |
| `AI_VIDEO_TEST_LESSONS.md` | 真人视频测试经验记录 |
| `CURRENT_ARCHITECTURE.md` | 当前架构文档 |
### 后端
| 文件 | 作用 |
|---|---|
| `backend/src/app.module.ts` | Nest 模块总入口 |
| `backend/src/main.ts` | 后端启动入口 |
| `backend/prisma/schema.prisma` | 数据库 schema |
| `backend/prisma/migrations/*/migration.sql` | 数据库迁移 |
| `backend/prisma/seed.ts` | 初始 mock Provider、Router、管理员 |
| `backend/src/providers/provider.types.ts` | Provider 默认模板和成本摘要 |
| `backend/src/providers/providers.service.ts` | Provider bootstrap、执行、日志、配置 |
| `backend/src/ai-router/ai-router.service.ts` | Router 决策 |
| `backend/src/ai-router/ai-router.types.ts` | Router 默认配置和类型 |
| `backend/src/live-action/live-action.service.ts` | 真人短剧核心流程 |
| `backend/src/live-action/prompt-builder.service.ts` | 真人 Prompt Builder |
| `backend/src/media/media.service.ts` | TTS、字幕、普通 FFmpeg 合成 |
| `backend/src/assets/storage.service.ts` | 存储抽象 |
| `backend/src/admin/admin.service.ts` | 后台审计和管理 |
### 用户端
| 文件 | 作用 |
|---|---|
| `user-app/src/pages/index/index.vue` | 用户端主制作台 |
| `user-app/src/api/client.ts` | 用户端 API 封装 |
| `user-app/src/workflow.ts` | 工作流标签和进度 |
| `user-app/src/styles.css` | 用户端样式 |
### 后台端
| 文件 | 作用 |
|---|---|
| `admin/src/App.vue` | 后台管理主界面 |
| `admin/src/api/client.ts` | 后台 API 封装 |
| `admin/src/styles.css` | 后台样式 |
### Worker
| 文件 | 作用 |
|---|---|
| `workers/src/main.ts` | BullMQ worker 入口 |
### 运维
| 文件 | 作用 |
|---|---|
| `deploy/docker-compose.dev.yml` | 开发依赖服务 |
| `deploy/nginx.https.example.conf` | Nginx HTTPS 示例 |
| `deploy/README.md` | 部署说明 |
## 12. 当前架构判断
当前系统已经从“普通 AI 漫剧 MVP”扩展到“AI 真人短剧生产流水线雏形”:
- 基础项目/小说/故事/角色/分集/脚本/分镜/合成已跑通。
- Provider 抽象、Router、质检、成本、审计已经具备生产系统骨架。
- 真人短剧的关键难点已经开始落地:
- 角色定妆
- Actor Lock
- 专业 Prompt Builder
- 真实 Provider 小样
- 片段质检
- 后期音频/BGM/SFX/字幕
- FFmpeg 裁切/拼接/混音
下一阶段最重要的不是继续堆 Provider,而是把真人视频生产质量和任务稳定性打磨成可重复流水线:
1. 真实 Provider 准入矩阵。
2. 队列化/失败恢复。
3. Prompt Library 与拉片模式库联动。
4. 角色库运营化。
5. 真实成本/ROI 回流。