feat: expand novel IP and production workflows
This commit is contained in:
@@ -0,0 +1,222 @@
|
||||
# AI 流水线与 Provider 设计 V1
|
||||
|
||||
> 文档状态:当前有效
|
||||
> 基线日期:2026-07-15
|
||||
> 目的:说明当前 AI 请求如何选择、执行、记录、回退和进入业务资产。
|
||||
|
||||
## 1. 设计目标
|
||||
|
||||
- 业务不直接绑定单一厂商 SDK。
|
||||
- 每次调用可解释、可审计、可计费、可重试。
|
||||
- 同步和异步 Provider 使用统一日志与业务结果。
|
||||
- 用户指定的模型和参数不被静默替换。
|
||||
- Prompt 模板、实验请求和原样透传有明确边界。
|
||||
- AI 失败不会破坏已经确认的业务资产。
|
||||
|
||||
## 2. Provider 类型
|
||||
|
||||
当前目录覆盖:
|
||||
|
||||
- `TextProvider`
|
||||
- `NovelProvider`
|
||||
- `ImageProvider`
|
||||
- `VideoProvider`
|
||||
- `VoiceProvider`
|
||||
- `MusicProvider`
|
||||
- `EmbeddingProvider`
|
||||
- `ModerationProvider`
|
||||
- `LipSyncProvider`(抽象存在,真实配置当前关闭)
|
||||
|
||||
数据库当前有 112 个 Provider 配置,其中真实配置 101 个、启用 64 个;Mock 配置 11 个、启用 10 个。全局 `AI_PROVIDER_MODE` 当前仍为 `mock`,但业务显式选择真实 Provider 时会产生真实调用。
|
||||
|
||||
## 3. 调用选择
|
||||
|
||||
一次调用可能同时受到以下输入影响:
|
||||
|
||||
1. 用户明确选择的 `provider_code`。
|
||||
2. 项目级模型偏好。
|
||||
3. 用户级模型偏好。
|
||||
4. 业务模块默认 Provider。
|
||||
5. Provider 启停、优先级、能力和成本限制。
|
||||
6. AI Router 的业务评分与回退规则。
|
||||
|
||||
当前 AI Router 主要用于真人视频,不是全平台统一路由。后续必须固定一套明确优先级,并在调用详情展示:请求选择、路由原因、实际 Provider、实际模型和回退链。
|
||||
|
||||
## 4. 请求生命周期
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Input[业务输入] --> Build[构建请求]
|
||||
Build --> Preflight[参数/能力/素材 URL/成本预检]
|
||||
Preflight --> Config[解析 ProviderConfig]
|
||||
Config --> Submit[同步执行或异步提交]
|
||||
Submit --> Log[ProviderLog]
|
||||
Log --> Poll[异步轮询/回调]
|
||||
Poll --> Normalize[结果归一]
|
||||
Normalize --> Asset[Asset / VideoClip / 文本版本]
|
||||
Normalize --> QC[质量评估]
|
||||
QC --> Pass{通过?}
|
||||
Pass -- 否 --> Retry[同模型重试/回退/人工介入]
|
||||
Pass -- 是 --> Done[业务确认]
|
||||
```
|
||||
|
||||
### 4.1 请求构建
|
||||
|
||||
请求快照至少保存:
|
||||
|
||||
- 业务类型和关联项目/分镜/角色。
|
||||
- 原始输入与最终 Prompt。
|
||||
- 公共模板版本和是否旁路模板。
|
||||
- 模型、比例、时长、分辨率、种子等参数。
|
||||
- 参考素材的资产 ID、顺序和用途。
|
||||
- 预估成本和用户确认条件。
|
||||
|
||||
### 4.2 Preflight
|
||||
|
||||
提交前检查:
|
||||
|
||||
- Provider 是否启用且类型匹配。
|
||||
- 参数是否在模型能力范围。
|
||||
- 参考图数量、格式、大小和顺序。
|
||||
- 外部 Provider 能否访问临时素材 URL。
|
||||
- 账户额度和项目成本上限。
|
||||
- 原生音频、首尾帧、多图参考等能力是否真实支持。
|
||||
- 实验请求是否要求禁止模板注入。
|
||||
- 新生产任务的画幅是否为唯一允许值16:9。
|
||||
- S+ Kling Omni 镜头的每个出场角色是否绑定质检分不低于90的已审批视频角色元素。
|
||||
- Omni 的图片、视频与元素组合是否满足数量和互斥限制;无参考视频时图片与元素合计不超过7。
|
||||
|
||||
### 4.3 结果归一
|
||||
|
||||
不同 Provider 的任务 ID、状态、URL、用量和错误格式必须转换为平台统一结构,再写入业务资产。临时 URL 不是最终资产,需下载到私有存储并保存来源信息。
|
||||
|
||||
## 5. Prompt 管理
|
||||
|
||||
Prompt 分为四层:
|
||||
|
||||
1. 业务事实:剧本、角色、场景、动作和台词。
|
||||
2. 公共质量模板:画质、一致性、可用性和负向约束。
|
||||
3. Provider 适配:模型特有参数与表达。
|
||||
4. 本次覆盖:用户人工修改或严格原样提交。
|
||||
|
||||
优先级为“本次明确覆盖 > 已确认业务事实 > 公共模板 > Provider 默认”。公共模板不得改变台词、人物、镜头时长或参考图集合。
|
||||
|
||||
人物三视图已具备“主锚点参考”和“本次唯一角色描述覆盖”两种模式,并将视觉质检问题沉淀为后续优化经验。经验只能以版本化、可审阅方式进入公共模板,避免单个角色的专用词污染全局。
|
||||
|
||||
Kling 正式镜头不再重复大段描述已锁定角色五官。平台从不可变 Generation Plan 读取 `CharacterProviderBinding` 快照,把真实 `element_id` 写入 `element_list`,再在 Prompt 中使用与数组顺序一致的 `<<<element_n>>>` 标记。角色元素控制身份和绑定声线,镜头 Prompt 控制本次动作、表演、空间、台词与摄影。
|
||||
|
||||
S+ 结构化写路径新增阶段 Prompt Builder。Source Analyst、Adaptation Showrunner、Episode Planner 的公共模板与项目数据分离,运行时只注入不可变来源快照、已确认父合同和上一集状态。Writer 输出完整合同;Reviewer 只输出问题与结构化修复差异,不静默重写正文。用户可以在调用 Provider 前预览最终阶段 Prompt;Phase 2 默认不提供一键付费生成入口。
|
||||
|
||||
## 6. 任务与队列
|
||||
|
||||
### 6.1 队列
|
||||
|
||||
```text
|
||||
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
|
||||
```
|
||||
|
||||
### 6.2 平台任务状态
|
||||
|
||||
```text
|
||||
pending / running / success / failed / retrying
|
||||
cancelled / manual_required / skipped
|
||||
```
|
||||
|
||||
数据库中仍有历史 `completed`,需要迁移或兼容,不应继续产生新值。
|
||||
|
||||
### 6.3 执行模式
|
||||
|
||||
Worker 消费 BullMQ 后,通过受密钥保护的内部 API 委托 backend 执行。这样可复用业务逻辑,但也意味着 backend 必须能承受 Worker 回调并保持幂等。
|
||||
|
||||
### 6.4 已知覆盖缺口
|
||||
|
||||
以下任务在通用 Worker 映射中没有 Provider 执行器,可能被标记为 `skipped`:
|
||||
|
||||
- `long_memory_generate`
|
||||
- `subtitle_generate`
|
||||
- `live_action_keyframe_generate`
|
||||
- `live_action_video_render`
|
||||
- `analytics_event`
|
||||
|
||||
部分能力目前由同步 Service 完成,因此应选择:补齐 Worker 执行器,或从异步任务目录移除并明确同步语义。`video_render` 当前映射到 VideoProvider,与 FFmpeg 成片合成的命名也需要拆分。
|
||||
|
||||
## 7. 重试与回退
|
||||
|
||||
重试策略按错误性质区分:
|
||||
|
||||
| 错误 | 处理 |
|
||||
| --- | --- |
|
||||
| 参数/素材不可用 | 不盲目重试,返回可修复原因 |
|
||||
| 限流/临时网络故障 | 指数退避重试 |
|
||||
| 异步任务超时 | 先核对外部任务,避免重复扣费 |
|
||||
| 质量不达标 | 同模型定向重试,必要时回退其他模型 |
|
||||
| 多次失败 | `manual_required`,保留全部候选和日志 |
|
||||
|
||||
回退不可静默发生。UI 应展示实际使用模型和回退原因。
|
||||
|
||||
## 8. 成本与额度
|
||||
|
||||
- `ProviderConfig` 保存成本规则和能力配置。
|
||||
- `ProviderLog` 保存本次调用的估算/实际成本、耗时和状态。
|
||||
- `QuotaAccount`、`QuotaLog` 支持冻结、释放和扣减。
|
||||
- 数据库历史 `cost_actual` 可能混有不同币种/规则,只能技术对账,不能直接作为财务总额。
|
||||
- 真实支付仍为 mock,不能把订单模型描述成生产支付闭环。
|
||||
|
||||
提交付费任务建议采用:
|
||||
|
||||
```text
|
||||
预估 -> 冻结额度 -> 执行 -> 按实际结算 -> 释放差额
|
||||
```
|
||||
|
||||
异步任务重试必须复用或核验外部任务 ID,避免重复扣费。
|
||||
|
||||
## 9. 日志与审计
|
||||
|
||||
每次 AI 调用应能回答:
|
||||
|
||||
- 谁、在哪个项目、为了哪个业务对象调用?
|
||||
- 用户请求了什么 Provider/模型?
|
||||
- 系统为何选择实际 Provider/模型?
|
||||
- 最终提交了什么参数和参考素材?
|
||||
- 是否注入模板、是否回退、重试了几次?
|
||||
- 外部任务 ID、耗时、状态和错误是什么?
|
||||
- 产生了哪些资产,哪一个被选择?
|
||||
- 估算成本、实际成本和额度变化是什么?
|
||||
|
||||
API Key、JWT、数据库密码和临时签名参数不能进入可下载日志或 Work 文档。
|
||||
|
||||
## 10. 新 Provider 接入清单
|
||||
|
||||
1. 明确能力类型、模型和区域。
|
||||
2. 定义请求 DTO、参数范围和默认值。
|
||||
3. 实现鉴权、提交、轮询/回调、取消和结果归一。
|
||||
4. 处理文本、二进制和临时 URL 输入。
|
||||
5. 定义成本规则和币种。
|
||||
6. 增加 preflight 与错误分类。
|
||||
7. 增加 mock、单元测试和至少一次真实小额冒烟。
|
||||
8. 在 Provider Lab 验证参数透传。
|
||||
9. 验证日志不泄露密钥。
|
||||
10. 更新本文件、CHANGELOG 和项目状态文档。
|
||||
|
||||
## 11. 当前优先级
|
||||
|
||||
### P0
|
||||
|
||||
- 修复 Provider/Seedance 相关测试与真实策略不一致。
|
||||
- 对齐运行进程与最新构建。
|
||||
|
||||
### P1
|
||||
|
||||
- 固化模型选择优先级和路由解释。
|
||||
- 补齐素材 URL preflight。
|
||||
- 清理历史 running/failed 日志和任务积压。
|
||||
- 补齐队列执行映射与任务命名。
|
||||
|
||||
### P2
|
||||
|
||||
- 将 AI Router 扩展为可选的平台统一入口。
|
||||
- 建立 Provider 契约测试和录制回放测试。
|
||||
- 统一成本币种和财务口径。
|
||||
Reference in New Issue
Block a user