feat: expand novel IP and production workflows

This commit is contained in:
www
2026-09-18 08:14:05 +02:00
parent b2ae4600b4
commit d9c81a3ac0
235 changed files with 117971 additions and 2721 deletions
@@ -0,0 +1,209 @@
# AI 内容生产平台架构设计 V1
> 文档状态:当前有效
> 基线日期:2026-07-15
> 事实来源:当前源码、Prisma schema、生产配置与 `PROJECT_STATUS_V1.md`
> 维护原则:记录稳定边界和已确认事实,不复制完整代码。
## 1. 架构目标
平台面向小说、角色/IP 资产、短剧和音视频成品的一体化生产,当前架构要同时满足:
- 长文本生产中的记忆、版本和质量循环。
- 图片、视频、声音等多 Provider 的差异化调用。
- 角色、服装、场景和道具在跨镜头生产中的连续性。
- 耗时任务的异步执行、重试、人工介入和成本追踪。
- 素材私有访问、Range 播放、下载与后期合成。
- 用户端生产工作台和管理端运营审计。
## 2. 系统边界
```mermaid
flowchart TB
User[用户端 Vue 3 H5] --> Nginx[Nginx]
Admin[管理端 Vue 3 H5] --> Nginx
Nginx --> API[NestJS API :3010]
API --> MySQL[(MySQL)]
API --> Redis[(Redis / BullMQ)]
API --> Storage[本地私有存储\nMinIO 可选]
API --> AI[外部 AI Providers]
API --> Media[FFmpeg / FFprobe]
Redis --> Worker[独立 Worker]
Worker --> Internal[受密钥保护的内部执行接口]
Internal --> API
```
外部依赖包括文本、图片、视频、语音、音乐、Embedding 和审核模型。平台负责业务编排、资产关系、质量控制和成本记录,不把外部模型的临时任务状态当作最终业务状态。
## 3. 仓库结构
项目采用 npm workspaces 单仓库:
| 目录 | 职责 |
| --- | --- |
| `backend/` | NestJS API、Prisma、业务编排、Provider 与媒体处理 |
| `workers/` | BullMQ 消费,委托后端内部接口执行业务 |
| `user-app/` | Vue 3 + Vite 用户端 H5 |
| `admin/` | Vue 3 + Vite 管理后台 |
| `deploy/` | 开发依赖和 Nginx 示例,生产运维脚本尚不完整 |
| `docs/` | 当前设计、历史设计、经验和同步包 |
| `data/` | 项目内容、剧本、分镜和生产资料 |
| `storage/` | 当前本地私有素材存储 |
| `tmp/` | 临时媒体处理文件 |
## 4. 后端分层
### 4.1 接入层
- HTTP API 统一使用 `/api` 前缀。
- JWT 负责用户身份,管理能力执行角色和 permission 校验。
- 统一响应 envelope、异常过滤、请求 ID 和安全响应头。
- 请求体上限当前为 160 MB。
- 素材接口支持鉴权下载、Range 流和临时签名 URL。
### 4.2 业务域
| 业务域 | 核心模块 |
| --- | --- |
| 身份与计费 | `AuthModule``UsersModule``BillingModule` |
| 项目与素材 | `ProjectsModule``AssetsModule` |
| 小说与世界观 | `NovelsModule``StoryBiblesModule``MemoriesModule` |
| 角色与 IP | `CharactersModule``ImagesModule` |
| 分集与剧本 | `EpisodesModule``ScriptsModule` |
| 真人短剧 | `LiveActionModule``MediaModule` |
| AI 与任务 | `ProvidersModule``ProviderLabModule``QueuesModule` |
| 审核与运营 | `ReviewsModule``AdminModule` |
`AiRouterModule` 当前服务于真人视频域,尚未成为全平台所有 AI 请求的统一入口。文档和界面不得把它描述成已完成的全局智能路由。
### 4.3 数据层
- Prisma 6 + MySQL。
- 当前 61 个 Model、33 个已部署迁移。
- 业务状态大多为字符串;历史值漂移需要通过状态字典和兼容迁移治理。
- JSON 用于保存 Provider 参数、Prompt 快照、质量报告和扩展元数据。
### 4.4 异步执行层
- Redis + BullMQ,共 14 个队列。
- Worker 并发当前为 2。
- Worker 不重复业务实现,通过受 `WORKER_SECRET` 保护的内部接口委托后端。
- `RenderTask` 保存幂等键、输入哈希、重试、成本与人工介入状态。
当前并非所有声明任务都已完整队列化。长篇记忆、字幕、真人关键帧、真人合并和分析事件存在同步执行或 Worker 映射缺口,详见 `AI_PIPELINE_V1.md`
### 4.5 媒体层
- FFmpeg 负责归一、拼接、转场、字幕、BGM、SFX、环境音和混音。
- FFprobe 负责媒体元信息探测。
- 视频模型可返回原生音轨;后期策略决定保留、压低或补充外部音频。
- LipSync 已有抽象和策略字段,但真实 Provider 当前均未启用。
## 5. 前端架构现实
### 5.1 用户端
用户端为 Vue 3 + Vite H5。当前核心功能集中在 `pages/index/index.vue`,没有启用 Vue Router。顶级入口包括创作、工具、项目、作品、任务和我的。
独立工具目前只有“人物三视图”正式开放;影视场景、9/16/25 宫格和原创剧本仍为待接入状态。
### 5.2 管理端
管理端是自研 Vue 3 单页后台,并非完整 GeekerAdmin。主要功能集中在 `App.vue``router/``stores/``views/` 仍是占位结构。
### 5.3 结构风险
用户端、管理端和若干后端 Service 已形成超大文件。后续应按稳定业务边界渐进拆分,避免一次性重构影响现有真实生产链路。
## 6. 核心数据流
### 6.1 内容生产
```text
来源/创作 Brief
-> 版权与项目规则
-> 故事/世界观/角色/IP 资产
-> 分集与剧本
-> 动态分镜
-> 关键帧或多图参考
-> 视频候选
-> 自动 QC / 人工选择
-> 字幕、音频、BGM、SFX、转场
-> FFmpeg 成品
-> 审核与作品库
```
### 6.2 AI 调用
```text
业务请求
-> 用户/项目模型偏好
-> Provider 配置与预检
-> 同步调用或异步提交
-> ProviderLog
-> Asset / VideoClip / RenderTask
-> 质量评估、回退或人工介入
```
## 7. 安全与隐私
- API Key 由服务端密钥加密保存,后台不回显明文。
- Worker 内部接口使用 timing-safe 密钥比较。
- 素材默认私有,不依赖可枚举静态 URL。
- Nginx 承担公网 TLS;应用当前未强制 `HTTPS_REQUIRED`
- 外部 Provider 使用参考图时,应只提交限时、最小权限 URL。
- Work 同步文档禁止包含 `.env`、API Key、JWT、数据库密码、私有素材 URL 和用户个人数据。
## 8. 部署与运行
当前生产事实:
- `ai-backend.service``ai-workers.service` 由 systemd 托管。
- Nginx 托管两套前端静态产物并代理 API。
- MySQL、Redis 为本机服务。
- 主存储为本地私有目录,MinIO 仅有代码能力,尚未完整配置。
- 全仓生产构建已通过,但运行进程需受控重启后才会加载最新构建。
当前缺少完整的发布、回滚、备份、日志轮转、监控和恢复演练脚本。这些属于发布基线,不应只保留为历史设计。
## 9. 架构约束
1. 数据库 schema 和迁移是数据结构唯一真相。
2. Provider 调用必须留下实际 Provider、模型、参数快照、成本和回退记录。
3. 角色、场景和道具应通过资产 ID/版本引用,不靠 Prompt 文本隐式继承。
4. 外部模型状态、平台任务状态和素材状态必须分层管理。
5. 付费生成前必须完成参数和参考图预检。
6. 视频质量闭环允许人工确认,不能把模型评分直接等同于发布通过。
7. 历史设计只能解释来路,不能覆盖当前代码事实。
## 10. 当前优先级
### P0
- 备份数据库和素材,固化 Git 基线。
- 修复 35 条后端失败测试。
- 受控重启并验证最新构建。
### P1
- 补齐队列执行覆盖和状态字典。
- 建立本地素材备份与恢复演练。
- 明确 Provider 路由优先级和实际调用展示。
- 补齐外部素材 URL preflight。
### P2
- 渐进拆分超大 Service 和前端单体组件。
- 引入 OpenAPI 契约和关键 E2E。
- 完善生产发布、回滚、监控与告警。
## 11. 更新触发条件
发生以下任一变化时更新本文并提升版本:
- 新增或删除顶层业务模块。
- 数据库、队列、存储或部署拓扑改变。
- AI Router 扩展为平台级入口。
- 前端路由或应用边界发生结构性变化。
- 安全边界、租户模型或支付模式改变。