1
This commit is contained in:
@@ -162,3 +162,29 @@
|
||||
5. `npm run test -- src/services/ai.test.ts src/hooks/rpg-runtime-story/storyRequestCoordinator.test.ts src/hooks/rpg-runtime-story/useRpgRuntimeStoryController.test.tsx`
|
||||
6. `npm run test -- src/hooks/rpg-runtime-story/sessionActions.test.ts src/hooks/rpg-runtime-story/choiceActions.test.ts src/hooks/rpg-runtime-story/npcEncounterActions.test.ts`
|
||||
7. `npx eslint src/hooks/rpg-runtime-story/sessionActions.ts src/hooks/rpg-runtime-story/sessionActions.test.ts src/hooks/rpg-runtime-story/useRpgRuntimeNpcInteraction.ts src/hooks/rpg-runtime-story/choiceActions.ts src/hooks/rpg-runtime-story/choiceActions.test.ts --max-warnings 0`
|
||||
|
||||
### 4.6 `camp_travel_home_scene` 后端收尾
|
||||
|
||||
本轮继续收口完成度核验中最后一个残留点:`camp_travel_home_scene` 不能再被前端 `runCampTravelHomeChoice(...)` 提前拦截并本地拼装正式状态。
|
||||
|
||||
落地规则:
|
||||
|
||||
1. 前端点击 `camp_travel_home_scene` 后统一进入 `runServerRuntimeChoiceAction(...)`,只提交 `sessionId / clientVersion / functionId / optionText / runtimePayload`。
|
||||
2. `server-rs/crates/api-server/src/runtime_story/compat.rs` 负责解析离营目标场景:
|
||||
- 优先使用 action payload 中的 `targetSceneId`。
|
||||
- 内置世界按 `playerCharacter.id + worldType` 映射到角色主场景。
|
||||
- 自定义世界优先找玩家角色在 `landmarks[].sceneNpcIds` 中绑定的地点,否则使用当前营地的 `forwardSceneId / connectedSceneIds` 或第一个 landmark。
|
||||
3. 后端 resolver 写入完整离营状态:
|
||||
- `currentScenePreset`
|
||||
- `currentEncounter / sceneHostileNpcs / npcInteractionActive / inBattle`
|
||||
- `runtimeStats.scenesTraveled`
|
||||
- `playerX / playerFacing / animationState / playerActionMode / scrollWorld`
|
||||
- `lastObserveSigns* / currentBattle* / spar* / activeCombatEffects`
|
||||
4. 后端在目标场景上生成确定性的 encounter preview;内置场景至少带一个可交互 NPC,自定义场景复用 `build_custom_scene_preset(...)` 中的 NPC 投影。
|
||||
5. 后端保存 `storyHistory` 与 `currentStory`,随后继续走 `project_story_engine_after_action(...)` 和持久化快照。
|
||||
6. 前端保留 `camp_travel_home_scene` 作为 function id 与展示用 helper,但不再保留正式状态构造函数。
|
||||
|
||||
验证新增:
|
||||
|
||||
1. 后端 route 测试覆盖 `camp_travel_home_scene` 点击后 hydrated snapshot 已进入角色主场景、生成 encounter preview、递增 `scenesTraveled` 并持久化。
|
||||
2. 前端 `choiceActions.test.ts` 覆盖 `camp_travel_home_scene` 即使命中旧 helper 判定,也只调用 `runServerRuntimeChoiceAction(...)`。
|
||||
|
||||
Reference in New Issue
Block a user