feat: expand novel IP and production workflows
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
# S+ 内核 Phase 0-1 实施报告
|
||||
|
||||
> 日期:2026-07-15
|
||||
> 范围:保护基线、Prompt 去污染、生产合同与硬门
|
||||
> 付费 AI 调用:无
|
||||
> 数据迁移:无
|
||||
> 生产服务重启:无
|
||||
|
||||
## 1. 本轮完成
|
||||
|
||||
### 保护基线
|
||||
|
||||
- 数据库完整逻辑备份:`/www/wwwroot/ai-backups/20260715-splus-phase0/database.sql`
|
||||
- 私有素材归档:`/www/wwwroot/ai-backups/20260715-splus-phase0/storage-private.tar`
|
||||
- 校验文件:`/www/wwwroot/ai-backups/20260715-splus-phase0/SHA256SUMS`
|
||||
- 数据库约 90MB,私有素材约 4.7GB。
|
||||
- 两份备份均通过 SHA-256 回读校验。
|
||||
|
||||
### 生产内核
|
||||
|
||||
新增 `backend/src/production-kernel/`:
|
||||
|
||||
```text
|
||||
contracts/production-contracts.ts
|
||||
validators/production-contract-validators.ts
|
||||
prompts/prompt-rule-registry.ts
|
||||
prompts/prompt-contamination.ts
|
||||
fixtures/neutral-production-fixtures.ts
|
||||
production-kernel.spec.ts
|
||||
legacy-behavior-guard.spec.ts
|
||||
index.ts
|
||||
```
|
||||
|
||||
已定义:
|
||||
|
||||
- `SourceAnalysisSpecV1`
|
||||
- `AdaptationBibleSpecV1`
|
||||
- `EpisodePlanSpecV1`
|
||||
- `SceneScriptSpecV1`
|
||||
- `ShotExecutionSpecV1`
|
||||
- `StageQualityResultV1`
|
||||
- `ShotQcDeltaV1`
|
||||
- `PromptRuleCandidateV1`
|
||||
|
||||
硬门已覆盖:
|
||||
|
||||
- 来源与事实引用;
|
||||
- 改编决策账本;
|
||||
- 开场钩子时间线与本集兑现;
|
||||
- 分集目标、阻力、高潮选择和不可逆变化;
|
||||
- 场景目标、人物策略、阻力、转折和结果;
|
||||
- 中文台词时长预算;
|
||||
- 镜头资产、表演、运镜、声音和验收条件;
|
||||
- 参考图数量与职责;
|
||||
- 首尾帧同空间轴线和运动方向;
|
||||
- 非首镜连续性接力。
|
||||
|
||||
### 去劣取优
|
||||
|
||||
- 建立版本化 Prompt 规则注册表,当前批准 22 条公共/题材规则,另保留 1 条废弃规则作为防回归标记。
|
||||
- 历史规则已按 global、genre、provider、project 分级。
|
||||
- 公共规则可按 stage、genre、provider 条件激活。
|
||||
- 脚本分镜和分集 Prompt 已接入规则注册表。
|
||||
- 新增污染扫描,阻断项目专名、内部数据库 ID、临时 URL 和嵌入素材编号进入公共规则。
|
||||
- 脚本与分集公共链路已清除本轮命中的历史项目人物、地点和终局专名。
|
||||
- 终局质量检查已从特定故事关键词改为通用的冲突结果、主角选择、状态变化和余波。
|
||||
- 镜头目标数量不再增删已确认剧情点。
|
||||
- 删除自动“导演补拍节奏点”。
|
||||
- 删除按说话人自动拆分对白素材的后处理行为。
|
||||
- 无法从已确认剧本提取可追溯动作/台词/反应时,直接阻断,不再生成一套都市会议室兜底剧情。
|
||||
|
||||
详细规则见 `PROMPT_RULE_AUDIT_V1.md`。
|
||||
|
||||
## 2. 验证结果
|
||||
|
||||
| 检查 | 结果 |
|
||||
| --- | --- |
|
||||
| 后端生产构建 | 通过 |
|
||||
| 新内核合同/硬门测试 | 7/7 通过 |
|
||||
| 公共污染与旧行为守卫 | 2/2 通过 |
|
||||
| 保持真实镜头数的脚本回归测试 | 1/1 通过 |
|
||||
| 全仓后端测试 | 248 通过,34 失败,共 282 条 |
|
||||
| 备份 SHA-256 回读 | 通过 |
|
||||
| `git diff --check` | 通过 |
|
||||
|
||||
全仓失败没有在本轮伪装修复。主要仍是:
|
||||
|
||||
- Prisma 新字段/新查询加入后旧 mock 未补齐;
|
||||
- 旧分集样本不满足当前制作蓝图和闭环质量门;
|
||||
- Provider 成本展示文案断言仍是旧格式;
|
||||
- Live Action 的旧参考图预检、BGM/SFX 和导演计划断言漂移。
|
||||
|
||||
审计基线为 238 通过、35 失败;本轮新增测试后为 248 通过、34 失败。
|
||||
|
||||
## 3. Schema 影响
|
||||
|
||||
本轮没有修改 Prisma schema,也没有执行数据库迁移。
|
||||
|
||||
原因:当前工作区已有大量未提交迁移与测试 mock 漂移;先完成可独立验证的合同、验证器和规则清理,避免在同一批次叠加持久化风险。
|
||||
|
||||
Phase 2 前需要评审并落库:
|
||||
|
||||
- 项目 `engine_version` 与生命周期;
|
||||
- 五级合同的版本、状态、输入哈希、来源和质量结果;
|
||||
- Prompt 规则候选、A/B 证据、审核与回滚版本;
|
||||
- Provider 编译请求快照和参考图职责;
|
||||
- 结构化 QC Delta。
|
||||
|
||||
现有 `ProjectPipelineConfig.video_engine_version` 与角色/图片 Prompt 版本字段可复用,但不能替代完整生产合同版本。
|
||||
|
||||
## 4. 尚未清理的隔离区
|
||||
|
||||
以下旧服务仍存在项目专属分支,暂不允许成为 `splus_v1` 公共规则来源:
|
||||
|
||||
- `characters/characters.service.ts`
|
||||
- `images/images.service.ts`
|
||||
- `live-action/live-action.service.ts`
|
||||
- `live-action/prompt-builder.service.ts`
|
||||
|
||||
下一轮必须逐段判断哪些属于历史项目读取兼容、哪些是公共生成逻辑,不能批量替换。
|
||||
|
||||
## 5. 未解决风险
|
||||
|
||||
1. 新合同尚未落库,也尚未成为新项目唯一写路径。
|
||||
2. 公共脚本 Service 仍是大文件,旧 Prompt 文本与新规则并存;本轮只先切断确定有害行为。
|
||||
3. Provider Compiler 和能力档案未实现,模型时长、参考图数量和音频能力仍由旧链路判断。
|
||||
4. 污染扫描已实现并保护公共规则,但还没有覆盖所有 Prompt 生成入口。
|
||||
5. 全仓类型检查仍被旧测试 fixture 类型漂移阻断;生产构建可以通过。
|
||||
6. 没有浏览器 E2E,也没有真实 Provider A/B;本阶段按要求未产生付费调用。
|
||||
|
||||
## 6. Phase 2 建议
|
||||
|
||||
下一阶段只推进“原著分析 -> 改编圣经 -> 分集计划”三段:
|
||||
|
||||
1. 评审生产合同持久化 schema。
|
||||
2. 为新项目建立 `splus_v1` 唯一写入口,旧项目只读。
|
||||
3. 实现 Source Analyst、Adaptation Showrunner、Episode Planner 的阶段请求与 Reviewer Delta。
|
||||
4. 用三个中性样本验证事实引用、改编决策、钩子兑现和跨集状态。
|
||||
5. 只批准其中一集进入 SceneScript,暂不接真实视频生成。
|
||||
|
||||
进入 Phase 2 前,建议先单独处理测试 mock 基线,避免新合同测试与历史失败混在一起。
|
||||
Reference in New Issue
Block a user