32 KiB
AI 内容生产平台项目现状 V1
文档类型:项目状态回灌 / 技术审计快照
审计时间:2026-07-15(Europe/Berlin)
审计对象:/www/wwwroot/ai当前工作区、当前 MySQL 数据库、当前 systemd 运行服务
文档用途:作为 Work 的“代码现实”基线,不替代产品设计文档,也不替代 Git 版本记录。
0. 审计口径
本文件按以下优先级判断项目真实状态:
- 当前工作区源码与配置结构。
- Prisma schema、迁移记录和数据库只读统计。
- 当前 systemd、Nginx、MySQL、Redis 运行状态。
- 构建与自动测试结果。
README.md、CURRENT_ARCHITECTURE.md、CODEX_PROGRESS.md与docs/system_a、docs/system_b等历史文档。
状态标记:
| 标记 | 含义 |
|---|---|
| 已实现且验证 | 代码存在,当前可构建,并有运行数据、测试或实际调用记录佐证 |
| 已实现但验证不足 | 主体代码已存在,但自动测试、运行配置或完整 E2E 尚未达到发布基线 |
| 部分接入 | 只有部分入口、部分 Provider 或部分流程可用 |
| 仅设计/预留 | 有文档、数据结构或界面占位,但未形成完整可用链路 |
注意:本文中的 V1 是“状态文档版本”,不是 npm 包版本。当前各 workspace 的代码版本仍为 0.1.0,不应仅凭功能变多就直接对外宣布产品 V5.0。
1. 执行摘要
1.1 当前项目真实定位
当前系统已经不再只是“AI 小说系统”或“AI 漫剧系统”,实际代码覆盖:
- 小说导入、阅读、原创生成、章节质量循环与版本管理。
- 故事圣经、世界观、角色、剧情记忆与 IP 资产管理。
- 分集、剧本、分镜、关键帧、图生视频和候选片段选择。
- 真人/仿真人短剧生产、原生音频视频、字幕、BGM、SFX、转场与 FFmpeg 合成。
- AI Provider 目录、模型偏好、成本记录、路由、实验台与回退。
- 队列、任务重试、人工介入、额度、审核、运营后台和审计日志。
- 面向生产的独立创作工具,当前已开放“人物三视图”。
因此,面向 Work 的项目名称建议使用:
AI 内容生产平台
1.2 当前健康度
| 检查项 | 当前结论 |
|---|---|
| 后端 API | ai-backend.service 正在运行,健康检查返回 ok |
| 队列 Worker | ai-workers.service 正在运行,消费 14 个 BullMQ 队列 |
| 数据库 | MySQL 正在运行,33 个 Prisma 迁移全部已部署 |
| Redis | 正在运行,Worker 与 API 均配置为使用 Redis |
| 前台/后台 | Vue 3 + Vite 生产构建通过,Nginx 直接托管静态产物 |
| 全仓构建 | 通过:backend、admin、user-app、workers 均成功构建 |
| 自动测试 | 未通过:后端 273 条测试中 238 通过、35 失败;Worker 1 条通过;前台和后台无测试文件 |
| Git 基线 | 高风险:main 仅 1 个提交,当前有 85 个修改项、47 个未跟踪项 |
| 运行版本一致性 | 需处理:审计构建产物晚于 backend/worker 进程启动时间,当前进程尚未加载最新构建 |
| 存储 | 当前为本机私有存储;MinIO 代码已实现但当前未完整配置 |
| AI 默认模式 | 全局 AI_PROVIDER_MODE=mock,但数据库中有大量真实 Provider 可被显式选择 |
1.3 结论
当前项目已经是一个有真实数据、真实调用和真实视频资产的内部生产平台,不是原型空壳;但它还不是可安全标记为“稳定生产版”的发布基线。
当前最重要的工作顺序应为:
- 固化 Git 与数据库备份基线。
- 修复测试和状态枚举漂移。
- 对齐当前构建与运行进程。
- 补齐队列任务执行覆盖。
- 再继续扩展新功能。
2. 当前项目实际架构
2.1 仓库形态
项目为 npm workspaces 单仓库:
ai/
├── backend/ NestJS API、Prisma、业务编排、Provider、FFmpeg 调用
├── workers/ BullMQ Worker,消费队列后委托 backend 执行业务
├── user-app/ Vue 3 + Vite 用户端 H5
├── admin/ Vue 3 + Vite 运营管理后台
├── deploy/ 开发依赖与 Nginx 示例,生产脚本尚不完整
├── docs/ 原系统 A/B、AI 生产经验、教程和成本资料
├── data/ 项目内容、剧本、分镜与生成过程资料
├── storage/ 当前本地私有素材存储
└── tmp/ 临时处理文件
2.2 运行拓扑
flowchart TB
User[用户端 Vue H5] --> Nginx[Nginx]
Admin[管理端 Vue H5] --> Nginx
Nginx --> API[NestJS API :3010]
API --> MySQL[(MySQL ai_manga)]
API --> Redis[(Redis)]
API --> Storage[本地私有存储\nMinIO 可选]
API --> Providers[AI Providers]
API --> FFmpeg[FFmpeg / FFprobe]
API --> BullMQ[BullMQ 14 队列]
BullMQ --> Worker[独立 Worker\n并发 2]
Worker --> InternalAPI[受 WORKER_SECRET 保护的内部接口]
InternalAPI --> API
2.3 后端基础设施
- 框架:NestJS 10。
- ORM:Prisma 6,MySQL。
- 队列:BullMQ 5 + Redis。
- 文件:本地私有文件为当前主存储,MinIO 为可选实现。
- 媒体:FFmpeg、FFprobe。
- 文件解析:PDF、DOCX、纯文本。
- 鉴权:JWT。
- 后台权限:
admin、operator、finance、auditor角色与细粒度 permission。 - API 前缀:
/api。 - 请求体上限:当前 160 MB。
- 中间件:请求 ID、安全响应头、HTTPS/代理判断、应用层加密请求处理。
- API 返回:统一 envelope 和统一异常过滤。
2.4 当前部署事实
- 后端由
ai-backend.service托管。 - Worker 由
ai-workers.service托管。 - Nginx 分别托管用户端与管理端,并反向代理
/api/。 - MySQL、Redis 为本机服务。
- 当前
NODE_ENV=production、STORAGE_DRIVER=local、Worker 并发为 2。 - 后端没有强制
HTTPS_REQUIRED;传输安全依赖 Nginx 与部署配置。 PUBLIC_ASSET_BASE_URL类配置当前未设置,依赖外部 Provider 获取临时素材 URL 的链路需要专项复核。
3. 已实现模块
3.1 后端模块
当前 AppModule 注册的业务模块:
| 模块 | 主要职责 | 状态 |
|---|---|---|
AuthModule |
注册、登录、JWT、账号状态 | 已实现且验证 |
UsersModule |
用户资料 | 已实现 |
BillingModule |
额度、订单、冻结、释放、后台人工调整 | 已实现但支付仅为 mock |
ProjectsModule |
项目、作品库、小说库、创意模式、流水线配置 | 已实现 |
ProviderLabModule |
Provider 参数试跑与状态轮询 | 已实现 |
AssetsModule |
上传、下载、预览、Range 流、别名、选择状态 | 已实现且有大量真实素材 |
NovelsModule |
导入、解析、阅读、原创小说、Agent 与章节质量流程 | 已实现但测试不足 |
StoryBiblesModule |
故事圣经、制作规则、确认锁定 | 已实现 |
CharactersModule |
项目角色、全局角色、版本、状态、Prompt 审核与优化经验 | 已实现但复杂度较高 |
MemoriesModule |
剧情、角色、伏笔与连续性记忆 | 已实现但测试桩未同步 |
EpisodesModule |
分集计划、请求预览、质量闸门 | 已实现但质量测试有漂移 |
ScriptsModule |
单集剧本、分镜、动态时长、提示词、转场 | 已实现但测试不足 |
ImagesModule |
角色图、锚点图、三视图、关键帧、视觉质检 | 已实现 |
LiveActionModule |
真人短剧准备、关键帧、视频、QC、合并、后期 | 已实现但仍处于生产化磨合 |
MediaModule |
TTS、字幕、传统漫剧合成、音频片段重试 | 已实现 |
ProvidersModule |
Provider 目录、配置、调用、日志、成本、异步视频轮询 | 已实现且有真实调用 |
QueuesModule |
RenderTask、BullMQ、重试、取消、恢复、Worker 委托 | 已实现但执行覆盖不完整 |
ReviewsModule |
文本/素材审核、返修、案例授权 | 已实现但当前数据库尚无审核记录 |
AdminModule |
运营后台聚合 API、审计、配置、Router 审计 | 已实现 |
AiRouterModule 没有作为顶层模块单独注册,但被 LiveActionModule 导入并实际用于真人视频路由。当前它不是覆盖全平台所有 AI 请求的统一 Router。
3.2 用户端模块
用户端实际为 Vue 3 单页应用,不是旧文档描述的 uni-app 多路由实现。
顶级导航:
- 创作:新建、提示词直出、API 快测。
- 工具:独立创作工具。
- 项目:项目列表、制作台、IP 资产中心、进度。
- 作品:视频、小说、素材。
- 任务:运行任务、审核、额度与成本。
- 我的:账号、角色资产、教程。
制作台主流程:
来源 -> 版权 -> 故事圣经 -> 角色 -> 记忆 -> 分集
-> 剧本/分镜 -> 真人视频 -> 合成 -> 审核
独立创作工具当前状态:
| 工具 | 状态 |
|---|---|
| 人物三视图 | 已开放;支持主锚点参考或输入本次唯一角色描述;生成后可下载和视觉质检 |
| 影视场景专家 | 待接入 |
| 9 宫格分镜 | 待接入 |
| 16 宫格分镜 | 待接入 |
| 25 宫格分镜 | 待接入 |
| 原创剧本 | 待接入 |
虽然 user-app/src/pages/ 中保留了多页面文件,但当前 App.vue 实际只加载大型 pages/index/index.vue,没有 Vue Router。多数业务都集中在一个约 1.35 万行的页面组件中。
3.3 管理端模块
管理端实际为自研 Vue 3 单页后台,不是完整 GeekerAdmin 集成。
当前菜单包括:
- 仪表盘、使用教程。
- 项目、小说、全局角色、项目角色、分镜、成品。
- 订单额度、内容审核、任务。
- Router 审计、爆款诊断、AI 平台入口。
- Provider、成本、用户、素材。
- 系统配置、版权、审计日志。
后台同样集中在一个约 1.03 万行的 App.vue 中,没有实际 Router、Store 和拆分后的 Views。
4. 已完成功能与完成度
| 业务域 | 当前能力 | 完成度判断 |
|---|---|---|
| 账号与安全 | 注册、登录、JWT、账号禁用、密码重置、RBAC、操作审计、应用层加密 | 已实现且验证 |
| 项目 | 新建、列表、删除、取消、进度、作品库、提示词直出分镜 | 已实现 |
| 小说导入 | 粘贴、文件上传、章节切割、编辑、版权确认 | 已实现 |
| 小说阅读 | 目录、分页/翻页、阅读进度、书签、批注 | 已实现 |
| 原创小说 | 创作向导、生成计划、章节 Agent、上下文、质检、修复、版本、批次 | 已实现但自动测试未稳定 |
| 故事与世界观 | StoryBible、WorldBible、制作文本和锁定 | 已实现 |
| 角色资产 | 项目角色、全局演员、外观版本、状态、服装、声音、授权范围 | 已实现 |
| 角色提示词闭环 | Prompt 版本、审核、优化经验、下一次生成吸收 | 已实现 |
| 人物三视图 | 主锚点模式、纯描述覆盖模式、旗舰模板、下载、视觉评分 | 已实现 |
| IP 资产中心 | 场景/道具提取、主资产、版本、Prompt、冲突检查 | 已实现但 UI/测试仍在磨合 |
| 长篇记忆 | 剧情记忆、角色记忆、伏笔线程、连续性检查 | 已实现但测试未同步 |
| 分集 | 动态数量、质量闸门、请求预览与 Prompt 覆盖 | 已实现但当前一条质量测试失败 |
| 剧本 | 剧本生成、人工编辑、确认、请求预览 | 已实现 |
| 分镜 | 动态时长、关键帧/视频 Prompt、前后镜衔接、转场字段、视觉板 | 已实现 |
| 关键帧 | 角色/场景/道具参考、单镜/批量、视觉审核 | 已实现且有真实图片调用 |
| 视频 | 单镜/批量、多候选、首帧/首尾帧/参考图、原生音频 Provider | 已实现且有真实视频调用 |
| 视频 QC | 自动评分、同模型重试、Fallback、人工确认、候选选择 | 已实现但测试和策略仍在变化 |
| 视频合并 | 硬切/转场、画面归一、源音轨、字幕、BGM、SFX、FFmpeg | 已实现但产品质量仍需持续验收 |
| 原创音乐 | 音乐圣经、MusicProvider、BGM 对齐、资产包 | 部分接入,默认关闭 |
| 口型 | LipSync Provider 抽象、策略与桥接 | 部分接入;当前真实 LipSync Provider 全部禁用 |
| 素材库 | 类型、别名、分镜号/范围、选中/候选/淘汰、Range 播放、下载 | 已实现 |
| 队列 | 14 队列、任务幂等、重试、取消、过期恢复、人工介入 | 已实现但部分任务类型无 Worker 执行器 |
| 成本 | Provider 成本规则、调用日志、人民币展示、额度冻结/释放 | 已实现;财务口径仍需统一 |
| 支付 | 套餐、订单模型与 mock-pay | 仅测试,不是生产支付 |
| 内容审核 | 文本、素材、后台复核、案例授权 | API/UI 已实现,但当前 ContentReview 为 0 条 |
| 爆款诊断 | 样本、片段、创意模式、项目绑定 | 已实现,属于原设计后的扩展 |
5. 数据库结构
5.1 总体规模
- Prisma Model:61 个。
- Prisma Enum:0 个。
- 数据库迁移:33 个,当前全部已部署。
- 索引、唯一约束和 JSON 字段大量使用。
- 业务状态主要使用字符串字段,而不是数据库枚举。
5.2 模型分组
用户与项目
UserUserModelPreferenceProjectProjectPipelineConfigProjectCreativePatternCreativePattern
小说与 Agent
NovelSourceNovelChapterNovelReadingProgressNovelBookmarkNovelAnnotationNovelGenerationPlanNovelChapterVersionNovelContextMemoryNovelQualityReportNovelVersionSnapshotNovelDerivativeJobAgentPromptAgentRun
故事、版权与世界观
CopyrightRecordStoryBibleWorldBible
角色与 IP 资产
CharacterStoryCharacterCharacterExtractionVersionGlobalCharacterGlobalCharacterAssetGlobalCharacterLookVersionCharacterImageCharacterImageQualityReviewCharacterMemoryCharacterDesignVersionCharacterPromptVersionCharacterPromptReviewCharacterPromptOptimizationLessonCharacterStateActorProfileProjectVisualAsset
剧集生产
EpisodeEpisodeScriptStoryboardShotShotImageVideoClipPlotMemoryPlotThreadContinuityCheck
素材、任务与 Provider
AssetRenderTaskProviderConfigProviderLog
计费、审核与运营
OrderQuotaAccountQuotaLogRevisionRequestContentReviewCaseShowcaseHitAnalysisCaseHitAnalysisSegmentAnalyticsEventSystemConfigOperationLog
5.3 当前数据库数据快照
| 数据 | 数量 |
|---|---|
| 用户 | 2 |
| 项目 | 20 |
| 小说源 | 10 |
| 小说章节 | 256 |
| 故事圣经 | 13 |
| 项目角色 | 87 |
| 全局角色 | 14 |
| 分集 | 87 |
| 单集剧本 | 21 |
| 分镜 | 114 |
| 素材 | 977 |
| 任务 | 748 |
| Provider 配置 | 112 |
| Provider 调用日志 | 1002 |
| 内容审核记录 | 0 |
| 操作审计记录 | 44 |
素材构成:
| 类型 | 数量 |
|---|---|
| image | 600 |
| video_clip | 215 |
| video | 74 |
| audio | 50 |
| subtitle | 33 |
| 其他角色图、片段音频、成品类型 | 5 |
任务状态:
| 状态 | 数量 |
|---|---|
| success | 646 |
| failed | 77 |
| manual_required | 22 |
| pending | 2 |
| completed | 1 |
completed 不在当前 TASK_STATUSES 常量中,属于历史状态漂移,需要迁移或兼容处理。
6. API 接口现状
6.1 总量
- Controller:25 个。
- HTTP 方法装饰器:289 个。
- API 全局前缀:
/api。 - 当前没有生成 OpenAPI/Swagger 规范,接口事实依赖 Controller、DTO 与前端 client。
6.2 分组
| 接口域 | 代表能力 | 路由规模 |
|---|---|---|
| Admin | 仪表盘、项目、用户、素材、作品、Provider、成本、审计、Router | 47 |
| Characters | 项目角色、全局角色、版本、状态、IP 资产、Prompt、声音 | 47 |
| Projects | 项目、库、阅读入口、创意模式、流水线配置 | 28 |
| Live Action | 角色档案、关键帧、视频、QC、候选、渲染、音乐 | 21 |
| Novel Generation | 生成计划、IP 圣经、章节、批次、暂停恢复 | 17 |
| Providers | 目录、配置、执行、日志、成本、偏好 | 16 |
| Billing | 套餐、订单、额度、冻结/释放、后台调整 | 13 |
| Scripts | 剧本、分镜、请求预览、确认、重生 | 12 |
| Memories | 剧情、角色、伏笔、上下文、连续性 | 11 |
| Images | 角色图、关键帧、锚点、视觉质检 | 9 |
| Queues | 创建、列表、重试、取消、恢复、统计 | 9 |
| Reviews | 文本/素材审核、案例授权、后台复核 | 9 |
| Novels / Wizard / Original | 导入、解析、原创、创作向导 | 16 |
| Assets | 上传、预览、Range 下载、临时 URL | 7 |
| Auth / Crypto | 登录注册、用户信息、加密会话 | 7 |
| Episodes / StoryBible / Media | 分集、故事圣经、音频字幕视频 | 14 |
6.3 安全边界
- 业务接口主要使用 JWT Guard。
- 管理能力在 Service 层执行 permission 检查。
- Worker 内部接口使用
WORKER_SECRET和 timing-safe 比较。 - 生产环境缺失 Worker secret 时不会使用本地默认值。
- 素材为私有存储,支持鉴权下载、Range 请求和带签名的临时 URL。
- API Key 经服务端密钥加密存储,后台不回显明文。
7. 前后端目录结构
7.1 后端
backend/src/
├── admin/
├── ai-router/
├── assets/
├── auth/
├── billing/
├── characters/
├── common/
├── config/
├── episodes/
├── images/
├── live-action/
├── media/
├── memories/
├── novels/
├── prisma/
├── projects/
├── provider-lab/
├── providers/
├── queues/
├── reviews/
├── scripts/
├── story-bibles/
└── users/
当前后端约 9.39 万行 TypeScript。最大文件:
live-action.service.ts:约 1.42 万行。characters.service.ts:约 7443 行。providers.service.ts:约 6776 行。admin.service.ts:约 6096 行。scripts.service.ts:约 4600 行。
7.2 用户端
user-app/src/
├── api/
├── components/tools/CreativeTools.vue
├── pages/index/index.vue
├── pages/auth/
├── pages/help/
├── pages/projects/
├── pages/user/
├── App.vue
├── workflow.ts
└── styles.css
当前约 2.37 万行,主要功能集中在 index.vue、api/client.ts 和全局 CSS。
7.3 管理端
admin/src/
├── api/client.ts
├── api/crypto.ts
├── App.vue
├── main.ts
└── styles.css
router/、stores/、views/ 当前只有占位文件。管理端约 1.34 万行。
7.4 Worker
workers/src/main.ts
每个队列由 BullMQ Worker 消费,任务本体通过内部 HTTP 接口委托后端执行,Worker 本身不重复实现业务逻辑。
8. 当前 AI 调用流程
8.1 通用 Provider 流程
flowchart LR
Input[业务输入] --> Preference[用户/项目模型偏好]
Preference --> Config[ProviderConfig]
Config --> Limit[启停、优先级、成本上限]
Limit --> Execute[ProvidersService]
Execute --> Sync[同步文本/图片/音频]
Execute --> Async[异步视频提交与轮询]
Sync --> Log[ProviderLog]
Async --> Log
Log --> Asset[Asset / VideoClip]
Log --> Task[RenderTask 状态与成本]
Execute --> Fallback[失败回退或人工介入]
8.2 Provider 现状
- Provider 配置共 112 个。
- Mock 配置 11 个,其中 10 个启用、1 个 LipSync mock 关闭。
- Real 配置 101 个,其中 64 个启用、37 个关闭。
- 当前已启用的真实 Provider 覆盖 Text、Novel、Image、Video、Voice、Music、Embedding、Moderation。
- 真实 LipSync Provider 当前全部关闭。
- 代表性已启用模型族:OpenAI、豆包/火山、DeepSeek、Qwen、Kimi、智谱、MiniMax、Kling、Seedance、Seedream、Sora 等。
- 全局默认仍为 mock,显式选择真实 Provider 时可产生真实调用。
Provider 日志当前共 1002 条:
| 状态 | 数量 |
|---|---|
| success | 825 |
| failed | 170 |
| running | 5 |
| cancelled | 2 |
数据库 cost_actual 原始累计值为 354.9416。由于 Provider 成本币种和历史规则可能不同,该值只能用于技术对账,不能直接视为财务账单。
近期真实使用主要集中在:
openai-image。kling-v3-native-audio-720p-video。openai-responses-text。volcengine_seedance_20_mini。volcengine-seedream-50-image。openai-tts。
8.3 真人短剧流程
剧本/外部提示词
-> 动态分镜与前后镜关系
-> 角色/场景/道具资产计划
-> Prompt Engine
-> 关键帧
-> 视频 Provider 预检与成本估算
-> 单镜或批量视频、多候选
-> 自动 QC / 重试 / Fallback / 人工选择
-> Scene Composer 计划
-> 字幕 / 源音轨 / TTS / BGM / SFX / 转场
-> FFmpeg 合成
-> 成品与素材库
当前支持的后期参数包括:源音轨、额外音频、字幕、BGM、SFX、环境音、无源音轨回退 SFX、口型、字幕模式和音量控制。原创音乐与 Scene Composer 由项目配置控制,默认并非全部开启。
8.4 小说流程
创作 Brief / 导入小说
-> 生成计划
-> IP/故事/世界观规则
-> Agent Prompt
-> 章节草稿
-> 质量报告
-> 自动修复或重写
-> 章节版本与上下文记忆
-> 小说快照
-> 听书/短剧派生任务
小说新引擎代码已形成,但目前自动测试和管理体验还没有达到可无人值守批量生产的程度。
9. 队列任务流程
9.1 队列与任务
BullMQ 队列共 14 个:
novel_queue
parse_queue
story_queue
character_queue
episode_queue
script_queue
storyboard_queue
image_queue
audio_queue
subtitle_queue
video_queue
qc_queue
review_queue
analytics_queue
任务类型共 21 个,状态包括:
pending / running / success / failed / retrying
cancelled / manual_required / skipped
9.2 执行链
flowchart LR
API[API 创建 RenderTask] --> Idempotency[输入哈希 / 幂等键]
Idempotency --> Queue[BullMQ 入队]
Queue --> Worker[独立 Worker]
Worker --> Secret[WORKER_SECRET]
Secret --> Delegate[backend internal/worker execute]
Delegate --> Provider[通用 Provider 执行]
Delegate --> Live[真人视频业务执行]
Provider --> Result[日志 / 素材 / 状态]
Live --> Result
Result --> Retry[按类型自动重试]
Retry --> Manual[耗尽后 manual_required]
已实现:
- 幂等键与输入哈希。
- 不同任务类型的默认重试次数。
- 任务取消与队列 Job 清理。
- stale running 任务恢复。
- 失败后自动重试与人工介入。
- 队列统计。
9.3 当前队列覆盖缺口
任务目录比 Worker 执行器更宽。以下任务在当前 providerTypeForTask 中没有实际 Provider 映射,也不属于真人业务执行器,走通用 Worker 时会被标记为 skipped:
long_memory_generatesubtitle_generatelive_action_keyframe_generatelive_action_video_renderanalytics_event
其中部分能力目前由同步 Service 方法直接执行,因此功能本身不一定不可用;但“全部已队列化”的说法不准确。video_render 在通用任务映射中指向 VideoProvider,与 FFmpeg 合成语义也需要重新核对。
10. 已实现但未完整写入原设计文档的功能
相较 docs/system_a、docs/system_b 的早期设计,当前代码额外出现或显著深化了:
- 小说创作向导、章节 Agent、上下文构建、质量修复、版本快照与派生任务。
- 小说阅读器、书签、批注、阅读进度。
- 全局角色资产、外观版本、角色状态、角色 Prompt 版本与审核经验闭环。
- 人物三视图独立工具,以及“主锚点参考/本次描述覆盖”两种模式。
- 三视图视觉质量评分、问题提取、优化经验进入下一次生成。
- 项目级场景/道具/IP 资产中心和主资产版本。
- 动态分镜时长、前后镜衔接、转场字段、请求预览与 Prompt 人工覆盖。
- 真人短剧 AI Router、镜头评分、成本预检、候选视频与自动质量闭环。
- Kling 原生音频、Seedance、Seedream、Hailuo、Sora 等多模型目录。
- Scene Composer、字幕/BGM/SFX/环境音开关、源音轨策略和原创音乐包。
- 素材别名、选中/候选/淘汰状态、按分镜号和范围联合筛选。
- Provider Lab、模型偏好、人民币成本标签和 Provider 调用审计。
- 爆款诊断、拉片片段、创意模式和项目模式绑定。
- API 应用层加密、临时素材签名 URL、视频 Range 流式播放。
11. 与原设计文档的主要差异
| 领域 | 原设计世界 | 当前代码现实 |
|---|---|---|
| 产品定位 | 系统 A 小说转漫剧 + 系统 B 真人写真 | 已合并演化为小说、短剧、视频、角色/IP 资产、创作工具平台 |
| 用户端 | uni-app 多页面 | Vue 3 + Vite H5,核心集中在单一大页面 |
| 管理端 | GeekerAdmin | 自研 Vue 单页后台,未引入完整 GeekerAdmin 架构 |
| 数据库 | 约 20 个核心表 | 61 个 Model、33 个迁移 |
| Provider | 抽象层与少量真实模型 | 112 个配置,覆盖大量国内外文本/图像/视频/声音模型 |
| AI Router | 后续路由能力 | 已用于真人视频,但未成为全平台统一入口 |
| 小说 | 原创 mock + 导入改编 | 已加入 Agent、质量循环、版本、阅读器和派生任务 |
| 分镜 | 固定镜头/宫格倾向 | 动态时长、上下镜关系、首尾帧/多图、转场与声音层 |
| 视频 | 图片、TTS、字幕、简单合成 | 真人视频候选、QC、原生音频、Scene Composer、复杂 FFmpeg 后期 |
| 队列 | 所有生产任务统一异步 | Worker 已运行,但部分声明任务没有异步执行器,部分流程仍同步 |
| 存储 | MinIO 优先设计 | 当前实际使用本地私有存储,MinIO 未完整配置 |
| 支付 | 订单支付闭环 | 额度与 mock-pay 可用,真实支付未接入 |
| 审核 | 内容审核闭环 | API/UI 已有,但数据库没有实际审核记录 |
| 测试 | 文档定义生产验收 | 后端单测有覆盖但当前 35 条失败,前后端无自动测试 |
| 版本管理 | 设计文档持续推进 | Git 只有初始提交,大量现实代码尚未形成版本基线 |
12. 当前待优化问题
P0:必须先处理
12.1 Git 无法代表当前系统
main只有 1 个提交。- 当前有 85 个修改项、47 个未跟踪项。
- 多个数据库迁移、小说新引擎、Provider Lab、人物三视图、数据与文档都未纳入提交。
风险:服务器故障、误操作或换机后,无法从 Git 恢复当前系统。
建议:先做数据库与素材备份,再把当前状态拆成可审阅提交;不要把生成素材和临时文件混入源码提交。
12.2 测试未达到发布基线
后端结果:
Test Files: 19 passed / 8 failed
Tests: 238 passed / 35 failed
失败主要分为:
- 新增 Prisma 依赖后,旧测试 mock 没有补齐。
- 动态分镜、质量闸门、BGM/SFX 策略改变后,旧期望未更新。
- Provider 成本标签新增人民币后,断言仍使用旧文案。
- Seedance 真人参考图预检策略出现测试与实现不一致。
应逐条判断“测试旧了”还是“代码回归”,不能简单批量改断言。
12.3 当前运行进程未加载最新构建
审计期间全仓构建通过,但 backend 和 worker 进程启动时间早于最新构建产物。需要在备份、测试和变更确认后执行受控重启,并做健康检查与核心链路冒烟测试。
P1:高优先级
12.4 队列执行覆盖不完整
补齐或明确移出队列:长篇记忆、字幕、真人关键帧、真人合并、分析事件。避免任务显示已入队,Worker 最后却标记 skipped。
12.5 状态字段漂移
数据库中存在历史 completed,当前代码只认 success。项目、任务、素材、审核等大量状态均为自由字符串。建议建立状态字典、迁移脚本和兼容测试。
12.6 本地素材是单机风险点
当前 977 个素材使用本地私有存储,MinIO 未完整配置,部署目录中也没有可执行备份脚本。至少需要:
- 数据库定时备份。
storage/private增量备份。- 恢复演练。
- 磁盘容量与失败告警。
12.7 任务和调用失败积压
- RenderTask:77 failed、22 manual_required、2 pending。
- ProviderLog:170 failed、5 running。
需要区分历史测试垃圾、外部异步任务和真实待处理任务,并提供批量归档/恢复策略。
12.8 Provider 配置过多且默认策略不清晰
数据库中有 112 个 Provider 配置,但全局默认仍是 mock。真实 Provider 启停、用户偏好、项目偏好、Router 和显式 provider_code 同时存在,容易出现“页面选了 A,实际走 B”的理解成本。
建议为每次调用固定记录并展示:请求 Provider、路由原因、实际 Provider、模型、参数、输入参考图、成本和回退链。
12.9 外部 Provider 素材 URL 配置需复核
当前公开素材基础 URL 未设置,而部分第三方视频/图片 Provider 需要可访问的临时参考图 URL。应把此项纳入 Provider preflight,而不是运行到提交时才失败。
12.10 审核闭环尚未实际使用
ContentReview 当前为 0 条。需要确认是入口未触发、审核结果写到了其他字段,还是生产流程绕过了正式审核。
P2:结构性优化
12.11 超大文件与前端单体化
live-action.service.ts约 1.42 万行。- 用户端主页面约 1.35 万行。
- 管理端主页面约 1.03 万行。
这会放大回归风险和协作冲突。建议按稳定业务边界逐步拆分,不做一次性大重构。
12.12 缺少前后端自动测试与正式 E2E
用户端、管理端目前没有测试文件。后端以单元测试为主,没有覆盖“登录 -> 项目 -> 分镜 -> 真实 Provider -> 素材 -> 合并”的稳定 E2E。
12.13 API 缺少机器可读契约
当前 289 个接口依赖 TypeScript DTO 和手写 client,没有 OpenAPI 文档与自动 client 生成。接口数量继续增长后,前后端容易漂移。
12.14 生产运维不完整
deploy/ 只有开发 compose、Nginx 示例和说明,没有落地的发布、回滚、备份、日志轮转、监控和告警脚本。当前主要依靠 systemd 日志与人工检查。
12.15 真实支付、多租户和财务对账未完成
- 支付仍为 mock-pay。
- 当前是用户级数据隔离,没有组织/租户模型。
cost_actual的币种与财务账单口径需统一。
13. 建议建立的唯一真相机制
13.1 Work 负责
产品定位
业务规则
架构决策
未来路线
功能设计文档
13.2 Git + Codex 负责
当前代码
数据库迁移
实现细节
测试结果
部署与运行事实
13.3 同步规则
每个重要功能建议使用以下闭环:
Work 讨论
-> FEATURE_xxx_V1.md
-> Codex 实现
-> 测试与部署
-> 更新 CHANGELOG.md
-> 更新 PROJECT_STATUS_Vn.md
-> 回灌 Work
状态文档不应每次全量覆盖,而应保留 V1、V2、V3,便于追踪系统如何演化。
14. 建议放入 Work 的首批资料
AI 内容生产平台/
├── 01_项目现状/
│ └── PROJECT_STATUS_V1.md
├── 02_架构设计/
│ └── SYSTEM_ARCHITECTURE.md
├── 03_小说引擎/
│ └── NOVEL_ENGINE.md
├── 04_短剧引擎/
│ └── DRAMA_ENGINE.md
├── 05_AI流水线/
│ └── AI_PIPELINE.md
├── 06_数据库/
│ └── DATABASE.md
└── 07_版本记录/
└── CHANGELOG.md
本次只生成真实状态基线。其余文档应以本文件为依据重新整理,而不是直接复制旧系统 A/B 文档并假定其全部已实现。
15. 本次验证记录
已执行并确认:
- 全仓生产构建通过。
- Prisma schema 可用。
- 33 个迁移与当前数据库一致。
- 后端健康检查通过。
- backend 与 worker systemd 服务正在运行。
- MySQL、Redis、Nginx 正在运行。
- 数据库只读数量与 Provider/任务状态统计完成。
- 自动测试执行完成,并如实记录 35 条失败。
未执行:
- 未重启生产服务。
- 未修改数据库数据。
- 未触发新的付费 AI 生成。
- 未做浏览器端完整 E2E。
- 未做数据库或素材恢复演练。