Merge remote-tracking branch 'origin/master' into hermes/hermes-1e775b03
Some checks failed
CI / verify (pull_request) Has been cancelled
Some checks failed
CI / verify (pull_request) Has been cancelled
# Conflicts: # docs/technical/README.md # src/components/custom-world-home/CustomWorldCreationHub.tsx # src/components/custom-world-home/creationWorkShelf.ts # src/components/platform-entry/PlatformEntryFlowShellImpl.tsx # src/components/rpg-entry/RpgEntryFlowShell.agent.interaction.test.tsx
This commit is contained in:
@@ -124,7 +124,7 @@ Match3D 必须形成独立玩法域,后续技术方案至少需要覆盖:
|
||||
3. 不做排行榜正式展示。
|
||||
4. 不做道具,但需要预留功能口。
|
||||
5. 不做洗牌、重置、旋转、放大等局内操作。
|
||||
6. 不做真实 3D 模型。
|
||||
6. 不做多批次真实 3D 模型生成;当前草稿生成只固定产出 `3` 个 GLB 模型并写入 OSS。
|
||||
7. 不做真实 3D 物理遮挡。
|
||||
8. 不做真实物理碰撞结算。
|
||||
9. 不做必须试玩通关才能发布的门槛。
|
||||
@@ -161,7 +161,7 @@ Match3D 首版参考拼图后期的入口表单收集方式,而不是早期的
|
||||
|
||||
题材决定后续生成或选择物品素材的方向。用户可以自定义主题,例如水果、玩具、食物、符号等。
|
||||
|
||||
首版 demo 不接入真实图片生成。当前运行态可消除物统一使用题材方向的 25 个积木件类型表现,不使用透明气泡,也不在图案上放文字标识。前端首版用差异化颜色、积木造型和 3D 程序化模型表现可消除物,避免玩家在堆叠状态下难以辨认。
|
||||
当前抓大鹅草稿生成会固定生成 `3` 个题材物品:素材图切割出的独立图片会作为 Rodin 图生 3D 参考图,生成出的 GLB 模型必须转存 OSS,并随作品 profile 的 `generatedItemAssets` 持久化。运行态优先使用这些生成模型;只有模型缺失、加载失败或未进入 3D 渲染模式时,才回退到 25 个默认积木件视觉键。默认素材不使用透明气泡,也不在图案上放文字标识。
|
||||
|
||||
可消除物尺寸使用五档相对体积规则:XL 型相对体积为 `1.60~2.30`,L 型为 `1.25~1.60`,M 型为 `1.00`,XS 型为 `0.65~0.85`,S 型为 `0.35~0.50`。单局中 XL / L / M / XS / S 按本局使用的消除物类型数的 `20% / 30% / 30% / 15% / 5%` 分配;非整数配额按最大余数补齐,确保总数等于本局使用类型数量。同一关卡内同一个颜色和造型的物品只能对应一个尺寸档位;可存在同尺寸但不同颜色和造型的物品。后端运行态通过 `radius` 下发权威尺寸,前端只按快照表现。
|
||||
|
||||
@@ -195,7 +195,7 @@ Match3D 首版参考拼图后期的入口表单收集方式,而不是早期的
|
||||
|
||||
## 6.3 参考图片
|
||||
|
||||
抓大鹅入口页不展示参考图片上传。题材表现先由题材文本和草稿切割图片链路承接;后续需要 3D 模型时,在结果页 `3D素材` Tab 以切割图片作为图生模型参考图手动触发。
|
||||
抓大鹅入口页不展示参考图片上传。题材表现由题材文本和草稿切割图片链路承接;草稿生成阶段会直接以切割图片作为 Rodin 图生模型参考图生成首批 GLB。结果页 `3D素材` Tab 仍可对单个素材触发重新生成。
|
||||
|
||||
---
|
||||
|
||||
@@ -222,9 +222,9 @@ Match3D 首版参考拼图后期的入口表单收集方式,而不是早期的
|
||||
|
||||
## 7.3 素材生成边界
|
||||
|
||||
抓大鹅草稿生成链路会生成首批 `3` 个题材物品素材:文本模型生成物品名,VectorEngine 生成 `2*2` 素材图并切割独立图片。入口页选择的 `assetStylePrompt` 必须写入素材图提示词;结果页手动 Rodin 图生模型时,继续以该物品图片和默认提示词作为起点。
|
||||
抓大鹅草稿生成链路会生成首批 `3` 个题材物品素材:文本模型生成物品名,VectorEngine 生成 `2*2` 素材图并切割独立图片,再以每张独立图片调用 Rodin 图生 3D,下载 `.glb` 并转存 OSS。入口页选择的 `assetStylePrompt` 必须写入素材图提示词;结果页手动 Rodin 图生模型时,继续以该物品图片和默认提示词作为起点。
|
||||
|
||||
生成出的独立图片先作为草稿页 `3D素材` Tab 的预览资产返回,状态为 `image_ready`,模型文件为空。正式平台资产绑定、Rodin 生成模型转存和二次编辑流程以后续技术方案为准。
|
||||
生成出的独立图片与 GLB 模型都必须作为草稿页 `3D素材` Tab 的预览资产返回。模型生成成功时 `generatedItemAssets[].status = model_ready`,并携带 `modelSrc`、`modelObjectKey`、`modelFileName`、`taskUuid` 和 `subscriptionKey`;正式平台资产绑定和更完整的二次编辑流程以后续技术方案为准。
|
||||
|
||||
## 7.4 发布前试玩
|
||||
|
||||
@@ -297,12 +297,14 @@ itemTypeCount = clearCount <= 25 ? clearCount : 25
|
||||
|
||||
## 8.5 物品资产
|
||||
|
||||
首版 demo 使用 2D 图案素材。
|
||||
当前 demo 使用生成 GLB 优先、默认积木兜底的物品资产策略。
|
||||
|
||||
1. demo 至少提供 `25` 种彼此不同的颜色与几何造型组合素材,支撑 `clearCount > 25` 时的类型上限。
|
||||
2. 当前 demo 使用 25 个积木件视觉键作为默认素材池;前端首版必须把这些视觉键映射为无文字的纯色 2D 图标和程序化 3D 积木模型,不能显示为透明气泡或文字标记。
|
||||
3. 后续可以尝试替换为伪 3D 或 3D 模型。
|
||||
4. 用户题材主题后续会映射为符合常识预期的物品集合。
|
||||
1. demo 至少提供 `25` 种彼此不同的颜色与几何造型组合默认素材,支撑 `clearCount > 25` 时的类型上限和 GLB 缺失兜底。
|
||||
2. 有 `generatedItemAssets[].modelSrc` 或 `modelObjectKey` 时,运行态与备选栏必须优先读取该 GLB;默认积木件只作为加载失败、模型缺失或 2D 回退时的兜底素材池。
|
||||
3. 前端读取生成模型必须通过 `/api/assets/read-bytes` 获取私有 OSS 字节,再交给 Three.js `GLTFLoader` 解析;不得直接把 `/generated-match3d-assets/...` 当裸 URL 请求。
|
||||
4. 当前固定 `clearCount = 3` 的生成草稿中,运行态 `match3d-type-01/02/03` 按类型编号顺序映射到生成出的 `3` 个模型;后续恢复更大生成数量时,模型列表顺序必须继续与类型编号稳定对应。
|
||||
5. 默认积木视觉键仍需映射为无文字的纯色 2D 图标和程序化 3D 积木模型,不能显示为透明气泡或文字标记。
|
||||
6. 用户题材主题后续会映射为符合常识预期的物品集合。
|
||||
|
||||
示例:水果题材可以对应红色苹果、黄色香蕉、紫色葡萄等。
|
||||
|
||||
@@ -706,10 +708,10 @@ GET /api/runtime/match3d/runs/:runId
|
||||
3. 入口页不展示参考图上传。
|
||||
4. 内置风格显示画风参考图,自定义风格通过独立面板填写并进入提交 payload。
|
||||
5. 移动端入口页所有内容一屏展示,不产生纵向滚动。
|
||||
6. 系统可生成待发布结果页,并在草稿中返回首批切割图片素材预览。
|
||||
6. 系统可生成待发布结果页,并在草稿中返回首批切割图片与 OSS GLB 模型素材预览。
|
||||
7. 用户可编辑游戏名称、标签、封面图等基础信息。
|
||||
8. 用户可发布前试玩,且试玩失败不阻断发布。
|
||||
9. 运行态能展示圆形空间、倒计时、物品和 `7` 格备选栏。
|
||||
9. 运行态能展示圆形空间、倒计时、物品和 `7` 格备选栏;存在 `generatedItemAssets` 模型时必须优先展示生成 GLB,而不是默认积木素材。
|
||||
10. 物品可重叠、遮挡、堆叠。
|
||||
11. 被完全遮挡物品不可点击,露出可点击区域的物品可点击。
|
||||
12. 点击通过后物品飞入备选栏。
|
||||
|
||||
@@ -50,18 +50,18 @@
|
||||
|
||||
外部仓库文件只作为玩法语义参考,不能作为目录结构迁入依据:
|
||||
|
||||
| 外部参考 | 可参考内容 | Genarrative 落点 |
|
||||
| --- | --- | --- |
|
||||
| `interface/routes/visual.js` | 视觉小说创作和运行时路由语义 | `server-rs/crates/api-server/src/visual_novel.rs` |
|
||||
| `interface/handlers/visual/sendActionStream.js` | 流式动作推进事件 | Axum SSE handler + `shared-contracts` typed envelope |
|
||||
| `interface/handlers/visual/getHistory.js` | 历史记录读取 | 平台 runtime history API |
|
||||
| `interface/handlers/visual/saves.js` | 存档语义 | 平台统一 `profile/save-archives` |
|
||||
| `services/visual/gameLogic.js` | step 解析、会话状态推进 | `server-rs/crates/module-visual-novel` |
|
||||
| `services/visual/storyGeneration.js` | 创作底稿生成语义 | `platform-agent` / `platform-llm` + visual novel Tool |
|
||||
| `prompts/visual.gm.system/1.0.1/body.js` | 视觉小说 GM 输出结构经验 | 新 prompt 必须适配 Genarrative 契约,不原样照搬平台规则 |
|
||||
| `src/page/Galgame.tsx` | 运行时界面结构 | `src/components/visual-novel-runtime/VisualNovelRuntimeShell.tsx` |
|
||||
| `src/hooks/galgame/useGalgameController.ts` | 前端运行时状态组织 | visual novel runtime hooks |
|
||||
| `src/page/GameSettingsEditor.tsx` | 创作编辑器模块划分 | visual novel result / workspace 组件 |
|
||||
| 外部参考 | 可参考内容 | Genarrative 落点 |
|
||||
| ----------------------------------------------- | ---------------------------- | ----------------------------------------------------------------- |
|
||||
| `interface/routes/visual.js` | 视觉小说创作和运行时路由语义 | `server-rs/crates/api-server/src/visual_novel.rs` |
|
||||
| `interface/handlers/visual/sendActionStream.js` | 流式动作推进事件 | Axum SSE handler + `shared-contracts` typed envelope |
|
||||
| `interface/handlers/visual/getHistory.js` | 历史记录读取 | 平台 runtime history API |
|
||||
| `interface/handlers/visual/saves.js` | 存档语义 | 平台统一 `profile/save-archives` |
|
||||
| `services/visual/gameLogic.js` | step 解析、会话状态推进 | `server-rs/crates/module-visual-novel` |
|
||||
| `services/visual/storyGeneration.js` | 创作底稿生成语义 | `platform-agent` / `platform-llm` + visual novel Tool |
|
||||
| `prompts/visual.gm.system/1.0.1/body.js` | 视觉小说 GM 输出结构经验 | 新 prompt 必须适配 Genarrative 契约,不原样照搬平台规则 |
|
||||
| `src/page/Galgame.tsx` | 运行时界面结构 | `src/components/visual-novel-runtime/VisualNovelRuntimeShell.tsx` |
|
||||
| `src/hooks/galgame/useGalgameController.ts` | 前端运行时状态组织 | visual novel runtime hooks |
|
||||
| `src/page/GameSettingsEditor.tsx` | 创作编辑器模块划分 | visual novel result / workspace 组件 |
|
||||
|
||||
---
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
### 3.1 必须完成的模板闭环
|
||||
|
||||
1. 平台创作中心展示 `视觉小说` 入口,并在实现完成后从 `open: false` 改为 `open: true`。
|
||||
1. 平台创作中心展示 `视觉小说` 入口;2026-05-11 起当前运营状态回退为 `open: false`,入口显示敬请期待,不允许创建新视觉小说草稿。
|
||||
2. 创作者可选择 `idea`、`document`、`blank` 三种起点创建视觉小说底稿。
|
||||
3. Agent 或表单工作台生成 / 编辑同一份 `VisualNovelResultDraft`。
|
||||
4. 结果页可编辑世界观、角色、场景、剧情阶段、资产和运行时配置。
|
||||
@@ -160,8 +160,8 @@
|
||||
5. 玩家身份。
|
||||
6. 3 到 6 个主要角色。
|
||||
7. 3 到 8 个可用场景。
|
||||
7. 3 到 6 个剧情阶段。
|
||||
8. 初始场景、初始旁白和第一轮可选行动。
|
||||
8. 3 到 6 个剧情阶段。
|
||||
9. 初始场景、初始旁白和第一轮可选行动。
|
||||
|
||||
### 5.2 文档创建 `document`
|
||||
|
||||
@@ -399,7 +399,15 @@ export type VisualNovelAgentActionKind =
|
||||
```ts
|
||||
export type VisualNovelAgentStreamEvent =
|
||||
| { type: 'start'; sessionId: string }
|
||||
| { type: 'phase'; phase: 'perception' | 'reasoning' | 'drafting' | 'reflection' | 'finalizing' }
|
||||
| {
|
||||
type: 'phase';
|
||||
phase:
|
||||
| 'perception'
|
||||
| 'reasoning'
|
||||
| 'drafting'
|
||||
| 'reflection'
|
||||
| 'finalizing';
|
||||
}
|
||||
| { type: 'text_delta'; text: string }
|
||||
| { type: 'draft_patch'; patch: VisualNovelDraftPatch }
|
||||
| { type: 'action_required'; action: VisualNovelAgentPendingAction }
|
||||
@@ -558,35 +566,35 @@ export type VisualNovelRuntimeStreamEvent =
|
||||
|
||||
### 9.1 创作 session
|
||||
|
||||
| 方法 | 路由 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `POST` | `/api/creation/visual-novel/sessions` | 创建视觉小说创作 session |
|
||||
| `GET` | `/api/creation/visual-novel/sessions/{session_id}` | 读取 session snapshot |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/messages` | 非流式发送创作消息 |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/messages/stream` | 流式发送创作消息 |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/actions` | 执行结构化创作 action |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/compile` | 编译为 work profile 草稿 |
|
||||
| 方法 | 路由 | 用途 |
|
||||
| ------ | ------------------------------------------------------------------ | ------------------------ |
|
||||
| `POST` | `/api/creation/visual-novel/sessions` | 创建视觉小说创作 session |
|
||||
| `GET` | `/api/creation/visual-novel/sessions/{session_id}` | 读取 session snapshot |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/messages` | 非流式发送创作消息 |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/messages/stream` | 流式发送创作消息 |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/actions` | 执行结构化创作 action |
|
||||
| `POST` | `/api/creation/visual-novel/sessions/{session_id}/compile` | 编译为 work profile 草稿 |
|
||||
|
||||
### 9.2 作品草稿与发布
|
||||
|
||||
| 方法 | 路由 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `GET` | `/api/creation/visual-novel/works` | 读取当前用户视觉小说作品草稿列表 |
|
||||
| `GET` | `/api/creation/visual-novel/works/{profile_id}` | 读取作品详情 |
|
||||
| `PUT/PATCH` | `/api/creation/visual-novel/works/{profile_id}` | 更新作品草稿 |
|
||||
| `DELETE` | `/api/creation/visual-novel/works/{profile_id}` | 删除未发布草稿或用户自有作品 |
|
||||
| `POST` | `/api/creation/visual-novel/works/{profile_id}/publish` | 发布到平台作品体系 |
|
||||
| 方法 | 路由 | 用途 |
|
||||
| ----------- | ------------------------------------------------------- | -------------------------------- |
|
||||
| `GET` | `/api/creation/visual-novel/works` | 读取当前用户视觉小说作品草稿列表 |
|
||||
| `GET` | `/api/creation/visual-novel/works/{profile_id}` | 读取作品详情 |
|
||||
| `PUT/PATCH` | `/api/creation/visual-novel/works/{profile_id}` | 更新作品草稿 |
|
||||
| `DELETE` | `/api/creation/visual-novel/works/{profile_id}` | 删除未发布草稿或用户自有作品 |
|
||||
| `POST` | `/api/creation/visual-novel/works/{profile_id}/publish` | 发布到平台作品体系 |
|
||||
|
||||
### 9.3 运行时
|
||||
|
||||
| 方法 | 路由 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `GET` | `/api/runtime/visual-novel/gallery` | 读取平台聚合后的视觉小说公开作品列表 |
|
||||
| `POST` | `/api/runtime/visual-novel/works/{profile_id}/runs` | 创建测试或正式 run |
|
||||
| `GET` | `/api/runtime/visual-novel/runs/{run_id}` | 读取 run snapshot |
|
||||
| `POST` | `/api/runtime/visual-novel/runs/{run_id}/actions/stream` | 提交选择 / 自由行动并流式推进 |
|
||||
| `GET` | `/api/runtime/visual-novel/runs/{run_id}/history` | 读取当前 run 历史 |
|
||||
| `POST` | `/api/runtime/visual-novel/runs/{run_id}/regenerate` | 从历史节点重生成 |
|
||||
| 方法 | 路由 | 用途 |
|
||||
| ------ | -------------------------------------------------------- | ------------------------------------ |
|
||||
| `GET` | `/api/runtime/visual-novel/gallery` | 读取平台聚合后的视觉小说公开作品列表 |
|
||||
| `POST` | `/api/runtime/visual-novel/works/{profile_id}/runs` | 创建测试或正式 run |
|
||||
| `GET` | `/api/runtime/visual-novel/runs/{run_id}` | 读取 run snapshot |
|
||||
| `POST` | `/api/runtime/visual-novel/runs/{run_id}/actions/stream` | 提交选择 / 自由行动并流式推进 |
|
||||
| `GET` | `/api/runtime/visual-novel/runs/{run_id}/history` | 读取当前 run 历史 |
|
||||
| `POST` | `/api/runtime/visual-novel/runs/{run_id}/regenerate` | 从历史节点重生成 |
|
||||
|
||||
### 9.4 存档
|
||||
|
||||
@@ -627,16 +635,16 @@ GET /api/runtime/profile/save-archives
|
||||
|
||||
### 10.1 crate 职责
|
||||
|
||||
| crate / 层 | 职责 |
|
||||
| --- | --- |
|
||||
| crate / 层 | 职责 |
|
||||
| -------------------------------------- | ------------------------------------------------------------- |
|
||||
| `server-rs/crates/module-visual-novel` | 纯领域规则:草稿校验、step 解析、run 状态推进、历史重生成边界 |
|
||||
| `server-rs/crates/shared-contracts` | DTO、请求响应、SSE envelope、草稿和运行时契约 |
|
||||
| `server-rs/crates/spacetime-module` | 表、reducer、procedure、migration 和事务编排 |
|
||||
| `server-rs/crates/spacetime-client` | api-server 到 SpacetimeDB 的 typed facade |
|
||||
| `server-rs/crates/api-server` | Axum 路由、鉴权、SSE、LLM 编排、资产和钱包 facade 调用 |
|
||||
| `server-rs/crates/platform-llm` | 视觉小说创作和运行时 GM 的模型调用 |
|
||||
| `server-rs/crates/platform-oss` | 文档、图片、音乐等资产对象读写 |
|
||||
| `server-rs/crates/platform-agent` | 如复用创意 Agent,负责 Agent 编排和工具注册 |
|
||||
| `server-rs/crates/shared-contracts` | DTO、请求响应、SSE envelope、草稿和运行时契约 |
|
||||
| `server-rs/crates/spacetime-module` | 表、reducer、procedure、migration 和事务编排 |
|
||||
| `server-rs/crates/spacetime-client` | api-server 到 SpacetimeDB 的 typed facade |
|
||||
| `server-rs/crates/api-server` | Axum 路由、鉴权、SSE、LLM 编排、资产和钱包 facade 调用 |
|
||||
| `server-rs/crates/platform-llm` | 视觉小说创作和运行时 GM 的模型调用 |
|
||||
| `server-rs/crates/platform-oss` | 文档、图片、音乐等资产对象读写 |
|
||||
| `server-rs/crates/platform-agent` | 如复用创意 Agent,负责 Agent 编排和工具注册 |
|
||||
|
||||
### 10.2 领域规则
|
||||
|
||||
@@ -654,14 +662,14 @@ GET /api/runtime/profile/save-archives
|
||||
|
||||
新增表必须同步 `migration.rs`、表目录和 bindings:
|
||||
|
||||
| 表 | 用途 |
|
||||
| --- | --- |
|
||||
| `visual_novel_agent_session` | 创作 session 主表 |
|
||||
| `visual_novel_agent_message` | 创作消息和模型回复 |
|
||||
| `visual_novel_work_profile` | 视觉小说作品草稿 / 发布 profile |
|
||||
| `visual_novel_runtime_run` | 玩家或测试 run |
|
||||
| `visual_novel_runtime_history_entry` | 运行时历史 |
|
||||
| `visual_novel_runtime_event` | 可审计事件,不用于回放 |
|
||||
| 表 | 用途 |
|
||||
| ------------------------------------ | ------------------------------- |
|
||||
| `visual_novel_agent_session` | 创作 session 主表 |
|
||||
| `visual_novel_agent_message` | 创作消息和模型回复 |
|
||||
| `visual_novel_work_profile` | 视觉小说作品草稿 / 发布 profile |
|
||||
| `visual_novel_runtime_run` | 玩家或测试 run |
|
||||
| `visual_novel_runtime_history_entry` | 运行时历史 |
|
||||
| `visual_novel_runtime_event` | 可审计事件,不用于回放 |
|
||||
|
||||
不得新增:
|
||||
|
||||
@@ -684,27 +692,27 @@ GET /api/runtime/profile/save-archives
|
||||
|
||||
### 11.1 入口配置
|
||||
|
||||
当前 `src/config/newWorkEntryConfig.ts` 已存在:
|
||||
入口配置事实源已经迁移到 SpacetimeDB 的 `creation_entry_type_config` 表,默认种子位于 `server-rs/crates/spacetime-module/src/runtime/creation_entry_config.rs`。2026-05-11 起视觉小说当前默认状态为:
|
||||
|
||||
```ts
|
||||
{
|
||||
id: 'visual-novel',
|
||||
title: '视觉小说',
|
||||
subtitle: '敬请期待',
|
||||
subtitle: '分支叙事体验',
|
||||
badge: '敬请期待',
|
||||
visible: true,
|
||||
open: false,
|
||||
}
|
||||
```
|
||||
|
||||
实现完成后更新为:
|
||||
重新开放创建时再通过后台入口开关或默认种子更新为:
|
||||
|
||||
```ts
|
||||
{
|
||||
id: 'visual-novel',
|
||||
title: '视觉小说',
|
||||
subtitle: 'AI 生成可玩的视觉小说',
|
||||
badge: '新玩法',
|
||||
subtitle: '分支叙事体验',
|
||||
badge: '可创建',
|
||||
visible: true,
|
||||
open: true,
|
||||
}
|
||||
@@ -781,6 +789,8 @@ service client 要复用现有请求封装、鉴权和错误提示风格,不
|
||||
3. 生成草稿按钮。
|
||||
4. 错误、忙碌与禁用态。
|
||||
|
||||
视觉画风卡片使用 `public/visual-novel-style-references/` 下的 `gpt-image-2-all` 参考图,分别对应映画动画、水彩绘本、像素霓虹、水墨幻想、柔彩校园和暗色哥特。卡片只承载图像和标签,不额外展示说明文案。
|
||||
|
||||
点击生成草稿后进入 `visual-novel-generating` 过程页,过程页复用平台已有生成进度面板,展示一句话输入、画风和草稿生成阶段;完成后自动进入 `visual-novel-result` 草稿页。
|
||||
|
||||
不展示:
|
||||
@@ -975,13 +985,13 @@ V1 默认提供平台统一存档能力;如果平台存档 UI 当前按槽位
|
||||
|
||||
### 16.1 并行批次总览
|
||||
|
||||
| 批次 | 可并行任务 | 进入条件 | 汇合点 |
|
||||
| --- | --- | --- | --- |
|
||||
| Batch 0 | `VN-00` | PRD 已冻结 | 所有人以本文为唯一口径 |
|
||||
| Batch 1 | `VN-01`、`VN-02`、`VN-03`、`VN-04` | `VN-00` 完成 | 契约、领域、UI 骨架、Prompt 口径可对齐 |
|
||||
| Batch 2 | `VN-05`、`VN-06`、`VN-07`、`VN-08` | `VN-01` 产出契约初稿;`VN-02` 产出表草案 | 后端 API、前端创作、前端运行时可联调 |
|
||||
| Batch 3 | `VN-09`、`VN-10`、`VN-11` | `VN-05`、`VN-06`、`VN-07`、`VN-08` 主链路可跑 | 发布、存档、广场、负向扫描收口 |
|
||||
| Batch 4 | `VN-12`、`VN-13` | 主链路完成 | 全链路验收和文档同步 |
|
||||
| 批次 | 可并行任务 | 进入条件 | 汇合点 |
|
||||
| ------- | ---------------------------------- | --------------------------------------------- | -------------------------------------- |
|
||||
| Batch 0 | `VN-00` | PRD 已冻结 | 所有人以本文为唯一口径 |
|
||||
| Batch 1 | `VN-01`、`VN-02`、`VN-03`、`VN-04` | `VN-00` 完成 | 契约、领域、UI 骨架、Prompt 口径可对齐 |
|
||||
| Batch 2 | `VN-05`、`VN-06`、`VN-07`、`VN-08` | `VN-01` 产出契约初稿;`VN-02` 产出表草案 | 后端 API、前端创作、前端运行时可联调 |
|
||||
| Batch 3 | `VN-09`、`VN-10`、`VN-11` | `VN-05`、`VN-06`、`VN-07`、`VN-08` 主链路可跑 | 发布、存档、广场、负向扫描收口 |
|
||||
| Batch 4 | `VN-12`、`VN-13` | 主链路完成 | 全链路验收和文档同步 |
|
||||
|
||||
并行规则:
|
||||
|
||||
@@ -992,22 +1002,22 @@ V1 默认提供平台统一存档能力;如果平台存档 UI 当前按槽位
|
||||
|
||||
### 16.2 并行任务具体要求速查表
|
||||
|
||||
| 任务 | 可并行窗口 | 输入依赖 | 必须完成 | 禁止事项 | 验收口径 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| `VN-00` 口径冻结 | Batch 0 | 本 PRD、旧 TXT 文档、Hermes 决策记录 | 冻结 `visual-novel` 只做模板玩法、平台接口、删除回放;标注旧文档冲突口径 | 不再使用“原样迁入外部平台工程”作为实现目标 | 文档和 Hermes 记录明确三条硬边界;`npm run check:encoding` 通过 |
|
||||
| `VN-01` 契约与领域 | Batch 1 | PRD 第 6 到 8 章契约 | TS contracts、Rust shared-contracts、`module-visual-novel`、领域单测 | 不写 HTTP、DB reducer、LLM、UI;不出现 replay 类型 | TS/Rust 契约一致;草稿校验、step 解析、状态推进、重生成测试通过 |
|
||||
| `VN-02` SpacetimeDB 与 facade | Batch 1 | `VN-01` 契约草案、SpacetimeDB 约束文档 | 表、reducer/procedure、migration、表目录、bindings、`spacetime-client` facade | 不手改 bindings 绕过 schema;不建 replay 表或私有 save 表 | schema 可生成;表目录写明 event 不是回放;`cargo check -p spacetime-client` 通过 |
|
||||
| `VN-03` Prompt / LLM 工具 | Batch 1 | `VN-01` draft 与 step 契约 | 创作 prompt、运行 GM prompt、repair prompt、工具参数 | 不照搬外部平台规则、扣费规则、回放规则;不让前端猜业务 step | fixture 输出可解析;坏格式进入 repair 或可重试错误 |
|
||||
| `VN-04` 前端 UI 骨架 | Batch 1 | PRD 第 12 章 UI 要求 | workspace、result、runtime mock 骨架;移动端优先布局;独立面板模式 | 不接真实 API;不写规则长文;不出现回放入口 | 桌面 / 移动基础布局可检查;长文本不撑破按钮 |
|
||||
| `VN-05` API Server | Batch 2 | `VN-01`、`VN-02`,真实 LLM 依赖 `VN-03` | creation、works、runtime、history、regenerate 路由;SSE;平台 save archive 接入 | 不把领域规则塞 handler;不新增 replay 路由;不新增私有 save API | `/api/creation/visual-novel/*` 和 `/api/runtime/visual-novel/*` 可 smoke;`cargo check -p api-server` 通过 |
|
||||
| `VN-06` 前端 service 与入口 | Batch 2 | `VN-01` TS 契约草案;mock 可先行 | service client、selection stage、入口分流、壳层挂载、登录态清理 | 不设计表单细节;不写 runtime UI 细节;不绕过平台入口 | 创作中心可进入 workspace;service 路由与 PRD 一致;`npm run typecheck` 通过 |
|
||||
| `VN-07` 创作工作台与结果页 | Batch 2 | `VN-04`、`VN-06`,真实生成依赖 `VN-05` | `idea` / `document` / `blank`、Agent 进度、结果页表单、保存草稿、测试 run 入口 | 不做正式玩家 runtime;不新增说明页;复杂内容不在卡片下展开 | 三种创建起点可用;草稿写入 `VisualNovelResultDraft`;发布校验 issue 可见 |
|
||||
| `VN-08` 前端运行时 | Batch 2 | `VN-04`、`VN-06`,真实运行依赖 `VN-05` | runtime shell、SSE 消费、step 渲染、历史、设置、存档、重生成 | 不做回放 UI;历史不生成分享播放页;`raw_text` 不作为业务真相 | typed step 可渲染;历史与重生成可用;save archive 可继续体验 |
|
||||
| `VN-09` 作品架 / 广场 / 发布 | Batch 3 | `VN-05` works/gallery API、`VN-06` 壳层 | work summary 聚合、作品架、公开聚合、public work code、详情跳转 | 不新增独立视觉小说市场;不迁入外部平台详情页;不做分享回放 | 发布后作品架可见;公开作品可启动 run;聚合 key 不冲突 |
|
||||
| `VN-10` 资产与文档输入 | Batch 3 | `VN-05` action/API、平台资产接口 | 文档资产读取、封面/场景/角色/音乐资产引用、可选图片生成 action | 不迁入外部 R2;不存大 Data URL;不绕过资产鉴权 | 文档创建使用资产引用;SpacetimeDB 不保存二进制或大 base64 |
|
||||
| `VN-11` 负向扫描 | Batch 1 到发布前 | 所有任务增量改动 | 扫描 replay 和外部平台功能;补负向测试或脚本清单 | 不把历史误判为回放;不做大范围重构 | 新工程代码无 replay;外部平台账号/订单/会员/后台等未误入 |
|
||||
| `VN-12` 全链路验收 | Batch 4 | `VN-05` 到 `VN-10` 主链路完成 | 创作、结果页、测试 run、发布、正式 run、历史、重生成、存档联调 | 不跳过移动端;不只测 mock;不忽略负向验收 | 全链路可跑;前端 typecheck、后端相关 cargo 检查、编码检查通过 |
|
||||
| `VN-13` 文档与交接 | Batch 4 | 实际工程落地结果 | PRD、技术方案、表目录、Hermes 决策 / 踩坑同步 | 不让旧 TXT 文档重新成为实现口径;不留下过期接口描述 | 新开发者可按最新文档维护;文档与代码一致 |
|
||||
| 任务 | 可并行窗口 | 输入依赖 | 必须完成 | 禁止事项 | 验收口径 |
|
||||
| ----------------------------- | ---------------- | --------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| `VN-00` 口径冻结 | Batch 0 | 本 PRD、旧 TXT 文档、Hermes 决策记录 | 冻结 `visual-novel` 只做模板玩法、平台接口、删除回放;标注旧文档冲突口径 | 不再使用“原样迁入外部平台工程”作为实现目标 | 文档和 Hermes 记录明确三条硬边界;`npm run check:encoding` 通过 |
|
||||
| `VN-01` 契约与领域 | Batch 1 | PRD 第 6 到 8 章契约 | TS contracts、Rust shared-contracts、`module-visual-novel`、领域单测 | 不写 HTTP、DB reducer、LLM、UI;不出现 replay 类型 | TS/Rust 契约一致;草稿校验、step 解析、状态推进、重生成测试通过 |
|
||||
| `VN-02` SpacetimeDB 与 facade | Batch 1 | `VN-01` 契约草案、SpacetimeDB 约束文档 | 表、reducer/procedure、migration、表目录、bindings、`spacetime-client` facade | 不手改 bindings 绕过 schema;不建 replay 表或私有 save 表 | schema 可生成;表目录写明 event 不是回放;`cargo check -p spacetime-client` 通过 |
|
||||
| `VN-03` Prompt / LLM 工具 | Batch 1 | `VN-01` draft 与 step 契约 | 创作 prompt、运行 GM prompt、repair prompt、工具参数 | 不照搬外部平台规则、扣费规则、回放规则;不让前端猜业务 step | fixture 输出可解析;坏格式进入 repair 或可重试错误 |
|
||||
| `VN-04` 前端 UI 骨架 | Batch 1 | PRD 第 12 章 UI 要求 | workspace、result、runtime mock 骨架;移动端优先布局;独立面板模式 | 不接真实 API;不写规则长文;不出现回放入口 | 桌面 / 移动基础布局可检查;长文本不撑破按钮 |
|
||||
| `VN-05` API Server | Batch 2 | `VN-01`、`VN-02`,真实 LLM 依赖 `VN-03` | creation、works、runtime、history、regenerate 路由;SSE;平台 save archive 接入 | 不把领域规则塞 handler;不新增 replay 路由;不新增私有 save API | `/api/creation/visual-novel/*` 和 `/api/runtime/visual-novel/*` 可 smoke;`cargo check -p api-server` 通过 |
|
||||
| `VN-06` 前端 service 与入口 | Batch 2 | `VN-01` TS 契约草案;mock 可先行 | service client、selection stage、入口分流、壳层挂载、登录态清理 | 不设计表单细节;不写 runtime UI 细节;不绕过平台入口 | 创作中心可进入 workspace;service 路由与 PRD 一致;`npm run typecheck` 通过 |
|
||||
| `VN-07` 创作工作台与结果页 | Batch 2 | `VN-04`、`VN-06`,真实生成依赖 `VN-05` | `idea` / `document` / `blank`、Agent 进度、结果页表单、保存草稿、测试 run 入口 | 不做正式玩家 runtime;不新增说明页;复杂内容不在卡片下展开 | 三种创建起点可用;草稿写入 `VisualNovelResultDraft`;发布校验 issue 可见 |
|
||||
| `VN-08` 前端运行时 | Batch 2 | `VN-04`、`VN-06`,真实运行依赖 `VN-05` | runtime shell、SSE 消费、step 渲染、历史、设置、存档、重生成 | 不做回放 UI;历史不生成分享播放页;`raw_text` 不作为业务真相 | typed step 可渲染;历史与重生成可用;save archive 可继续体验 |
|
||||
| `VN-09` 作品架 / 广场 / 发布 | Batch 3 | `VN-05` works/gallery API、`VN-06` 壳层 | work summary 聚合、作品架、公开聚合、public work code、详情跳转 | 不新增独立视觉小说市场;不迁入外部平台详情页;不做分享回放 | 发布后作品架可见;公开作品可启动 run;聚合 key 不冲突 |
|
||||
| `VN-10` 资产与文档输入 | Batch 3 | `VN-05` action/API、平台资产接口 | 文档资产读取、封面/场景/角色/音乐资产引用、可选图片生成 action | 不迁入外部 R2;不存大 Data URL;不绕过资产鉴权 | 文档创建使用资产引用;SpacetimeDB 不保存二进制或大 base64 |
|
||||
| `VN-11` 负向扫描 | Batch 1 到发布前 | 所有任务增量改动 | 扫描 replay 和外部平台功能;补负向测试或脚本清单 | 不把历史误判为回放;不做大范围重构 | 新工程代码无 replay;外部平台账号/订单/会员/后台等未误入 |
|
||||
| `VN-12` 全链路验收 | Batch 4 | `VN-05` 到 `VN-10` 主链路完成 | 创作、结果页、测试 run、发布、正式 run、历史、重生成、存档联调 | 不跳过移动端;不只测 mock;不忽略负向验收 | 全链路可跑;前端 typecheck、后端相关 cargo 检查、编码检查通过 |
|
||||
| `VN-13` 文档与交接 | Batch 4 | 实际工程落地结果 | PRD、技术方案、表目录、Hermes 决策 / 踩坑同步 | 不让旧 TXT 文档重新成为实现口径;不留下过期接口描述 | 新开发者可按最新文档维护;文档与代码一致 |
|
||||
|
||||
每个任务的交付回复必须包含:
|
||||
|
||||
@@ -1143,20 +1153,20 @@ cd server-rs
|
||||
cargo check -p spacetime-client
|
||||
```
|
||||
|
||||
阻塞关系:
|
||||
|
||||
1. 依赖 `VN-01` 的 Rust 契约。
|
||||
2. 阻塞 `VN-05` 的真实数据库联调。
|
||||
阻塞关系:
|
||||
|
||||
VN-02 实施收口记录(2026-05-05):
|
||||
1. 依赖 `VN-01` 的 Rust 契约。
|
||||
2. 阻塞 `VN-05` 的真实数据库联调。
|
||||
|
||||
1. 已新增 `server-rs/crates/spacetime-module/src/visual_novel.rs`,落地 `visual_novel_agent_session`、`visual_novel_agent_message`、`visual_novel_work_profile`、`visual_novel_runtime_run`、`visual_novel_runtime_history_entry`、`visual_novel_runtime_event` 六张表及对应 procedure。
|
||||
2. 已同步 `server-rs/crates/spacetime-module/src/lib.rs`、`server-rs/crates/spacetime-module/src/migration.rs`、`docs/technical/SPACETIMEDB_TABLE_CATALOG.md` 和 Rust bindings。
|
||||
3. 已新增 `server-rs/crates/spacetime-client/src/visual_novel.rs` typed facade,并从 `server-rs/crates/spacetime-client/src/lib.rs` 导出视觉小说 record / input 类型。
|
||||
4. `visual_novel_runtime_event` 只作为 `public event` 审计事件表使用;`visual_novel_runtime_history_entry` 只保存继续体验与历史重生成所需 step 和快照哈希,二者均不是 replay 数据源。
|
||||
5. 本阶段未新增 Axum 路由、LLM prompt、前端 UI、replay 表、replay 路由或私有 save 表;后续 VN-05 只应通过本阶段 facade 接入真实数据库。
|
||||
|
||||
### VN-03:创作与运行 Prompt / LLM 工具
|
||||
VN-02 实施收口记录(2026-05-05):
|
||||
|
||||
1. 已新增 `server-rs/crates/spacetime-module/src/visual_novel.rs`,落地 `visual_novel_agent_session`、`visual_novel_agent_message`、`visual_novel_work_profile`、`visual_novel_runtime_run`、`visual_novel_runtime_history_entry`、`visual_novel_runtime_event` 六张表及对应 procedure。
|
||||
2. 已同步 `server-rs/crates/spacetime-module/src/lib.rs`、`server-rs/crates/spacetime-module/src/migration.rs`、`docs/technical/SPACETIMEDB_TABLE_CATALOG.md` 和 Rust bindings。
|
||||
3. 已新增 `server-rs/crates/spacetime-client/src/visual_novel.rs` typed facade,并从 `server-rs/crates/spacetime-client/src/lib.rs` 导出视觉小说 record / input 类型。
|
||||
4. `visual_novel_runtime_event` 只作为 `public event` 审计事件表使用;`visual_novel_runtime_history_entry` 只保存继续体验与历史重生成所需 step 和快照哈希,二者均不是 replay 数据源。
|
||||
5. 本阶段未新增 Axum 路由、LLM prompt、前端 UI、replay 表、replay 路由或私有 save 表;后续 VN-05 只应通过本阶段 facade 接入真实数据库。
|
||||
|
||||
### VN-03:创作与运行 Prompt / LLM 工具
|
||||
|
||||
负责范围:
|
||||
|
||||
@@ -1744,7 +1754,7 @@ VN-11 从 Batch 1 开始持续运行,最终阻塞发布。
|
||||
|
||||
### 17.1 正向验收
|
||||
|
||||
1. `visual-novel` 入口可见并可点击创建。
|
||||
1. `visual-novel` 入口当前可见但处于敬请期待禁用态;重新开放 `open=true` 后,再验收点击创建闭环。
|
||||
2. 一句话创建能生成可编辑底稿。
|
||||
3. 文档创建能读取平台文档资产并生成底稿。
|
||||
4. 空白创建能进入结果页。
|
||||
|
||||
Reference in New Issue
Block a user