# 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 回流。