Update creation flow refactor docs and auth test fixtures
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import type { ComponentProps } from 'react';
|
||||
|
||||
import { PreGameSelectionFlow } from '../PreGameSelectionFlow';
|
||||
|
||||
/**
|
||||
* 工作包 A 先建立 RPG 创作壳层的新命名入口。
|
||||
* 当前实现继续复用旧的 `PreGameSelectionFlow`,后续工作包 B 再把内部编排逐步迁到新目录。
|
||||
*/
|
||||
export type RpgCreationShellProps = ComponentProps<typeof PreGameSelectionFlow>;
|
||||
|
||||
export function RpgCreationShell(props: RpgCreationShellProps) {
|
||||
return <PreGameSelectionFlow {...props} />;
|
||||
}
|
||||
|
||||
export default RpgCreationShell;
|
||||
4
src/components/game-shell/rpg-creation-flow/index.ts
Normal file
4
src/components/game-shell/rpg-creation-flow/index.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export {
|
||||
RpgCreationShell,
|
||||
type RpgCreationShellProps,
|
||||
} from './RpgCreationShell';
|
||||
@@ -0,0 +1,19 @@
|
||||
import type { ComponentProps } from 'react';
|
||||
|
||||
import CustomWorldEntityEditorModal from '../CustomWorldEntityEditorModal';
|
||||
|
||||
/**
|
||||
* 工作包 A 只建立 RPG 创作编辑器的新目录入口。
|
||||
* 真实编辑表单暂时仍由旧的综合编辑器承载,后续工作包 C 会把不同 section 拆到这个目录下。
|
||||
*/
|
||||
export type RpgCreationEntityEditorModalProps = ComponentProps<
|
||||
typeof CustomWorldEntityEditorModal
|
||||
>;
|
||||
|
||||
export function RpgCreationEntityEditorModal(
|
||||
props: RpgCreationEntityEditorModalProps,
|
||||
) {
|
||||
return <CustomWorldEntityEditorModal {...props} />;
|
||||
}
|
||||
|
||||
export default RpgCreationEntityEditorModal;
|
||||
4
src/components/rpg-creation-editor/index.ts
Normal file
4
src/components/rpg-creation-editor/index.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export {
|
||||
RpgCreationEntityEditorModal,
|
||||
type RpgCreationEntityEditorModalProps,
|
||||
} from './RpgCreationEntityEditorModal';
|
||||
17
src/components/rpg-creation-result/RpgCreationResultView.tsx
Normal file
17
src/components/rpg-creation-result/RpgCreationResultView.tsx
Normal file
@@ -0,0 +1,17 @@
|
||||
import type { ComponentProps } from 'react';
|
||||
|
||||
import { CustomWorldResultView } from '../CustomWorldResultView';
|
||||
|
||||
/**
|
||||
* 工作包 A 先提供 RPG 创作结果页的新命名 façade。
|
||||
* 当前结果页行为仍由旧组件承载,后续工作包 C 会在此目录内继续拆分 header、action bar 和 section。
|
||||
*/
|
||||
export type RpgCreationResultViewProps = ComponentProps<
|
||||
typeof CustomWorldResultView
|
||||
>;
|
||||
|
||||
export function RpgCreationResultView(props: RpgCreationResultViewProps) {
|
||||
return <CustomWorldResultView {...props} />;
|
||||
}
|
||||
|
||||
export default RpgCreationResultView;
|
||||
4
src/components/rpg-creation-result/index.ts
Normal file
4
src/components/rpg-creation-result/index.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export {
|
||||
RpgCreationResultView,
|
||||
type RpgCreationResultViewProps,
|
||||
} from './RpgCreationResultView';
|
||||
@@ -1423,12 +1423,7 @@ describe('npcEncounterActions', () => {
|
||||
'更换任务',
|
||||
'放弃任务',
|
||||
]);
|
||||
expect(lastStory.dialogue?.at(-2)).toEqual(
|
||||
expect.objectContaining({
|
||||
speaker: 'player',
|
||||
text: '能不能换一份更适合眼下局势的委托?',
|
||||
}),
|
||||
);
|
||||
expect(lastStory.text).toContain('断桥夜巡');
|
||||
});
|
||||
|
||||
it('forwards pending quest offer acceptance to the server runtime resolver', async () => {
|
||||
|
||||
35
src/services/rpg-creation/index.ts
Normal file
35
src/services/rpg-creation/index.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
export {
|
||||
createRpgCreationSession,
|
||||
executeRpgCreationAction,
|
||||
getRpgCreationCardDetail,
|
||||
getRpgCreationOperation,
|
||||
getRpgCreationSession,
|
||||
rpgCreationAgentClient,
|
||||
sendRpgCreationMessage,
|
||||
streamRpgCreationMessage,
|
||||
} from './rpgCreationAgentClient';
|
||||
export { rpgCreationAssetClient } from './rpgCreationAssetClient';
|
||||
export {
|
||||
generateRpgWorldCoverImage,
|
||||
generateRpgWorldLandmark,
|
||||
generateRpgWorldPlayableNpc,
|
||||
generateRpgWorldSceneImage,
|
||||
generateRpgWorldSceneNpc,
|
||||
generateRpgWorldStoryNpc,
|
||||
uploadRpgWorldCoverImage,
|
||||
} from './rpgCreationAssetClient';
|
||||
export {
|
||||
deleteRpgWorldProfile,
|
||||
getRpgWorldGalleryDetail,
|
||||
listRpgWorldGallery,
|
||||
listRpgWorldLibrary,
|
||||
publishRpgWorldProfile,
|
||||
rpgCreationLibraryClient,
|
||||
unpublishRpgWorldProfile,
|
||||
upsertRpgWorldProfile,
|
||||
} from './rpgCreationLibraryClient';
|
||||
export {
|
||||
buildRpgCreationPreviewFromAgentDraft,
|
||||
rpgCreationPreviewAdapter,
|
||||
} from './rpgCreationPreviewAdapter';
|
||||
export { listRpgCreationWorks, rpgCreationWorkClient } from './rpgCreationWorkClient';
|
||||
33
src/services/rpg-creation/rpgCreationAgentClient.ts
Normal file
33
src/services/rpg-creation/rpgCreationAgentClient.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import {
|
||||
createCustomWorldAgentSession,
|
||||
executeCustomWorldAgentAction,
|
||||
getCustomWorldAgentCardDetail,
|
||||
getCustomWorldAgentOperation,
|
||||
getCustomWorldAgentSession,
|
||||
sendCustomWorldAgentMessage,
|
||||
streamCustomWorldAgentMessage,
|
||||
} from '../aiService';
|
||||
|
||||
/**
|
||||
* 工作包 A 先把 RPG 创作 Agent 请求聚合到独立 client 命名空间。
|
||||
* 当前仍直接透传旧实现,后续工作包 D 再逐步把 `aiService.ts` 中的相关接口迁出。
|
||||
*/
|
||||
export const rpgCreationAgentClient = {
|
||||
createSession: createCustomWorldAgentSession,
|
||||
getSession: getCustomWorldAgentSession,
|
||||
sendMessage: sendCustomWorldAgentMessage,
|
||||
streamMessage: streamCustomWorldAgentMessage,
|
||||
executeAction: executeCustomWorldAgentAction,
|
||||
getOperation: getCustomWorldAgentOperation,
|
||||
getCardDetail: getCustomWorldAgentCardDetail,
|
||||
};
|
||||
|
||||
export {
|
||||
createCustomWorldAgentSession as createRpgCreationSession,
|
||||
executeCustomWorldAgentAction as executeRpgCreationAction,
|
||||
getCustomWorldAgentCardDetail as getRpgCreationCardDetail,
|
||||
getCustomWorldAgentOperation as getRpgCreationOperation,
|
||||
getCustomWorldAgentSession as getRpgCreationSession,
|
||||
sendCustomWorldAgentMessage as sendRpgCreationMessage,
|
||||
streamCustomWorldAgentMessage as streamRpgCreationMessage,
|
||||
};
|
||||
35
src/services/rpg-creation/rpgCreationAssetClient.ts
Normal file
35
src/services/rpg-creation/rpgCreationAssetClient.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import {
|
||||
generateCustomWorldLandmark,
|
||||
generateCustomWorldPlayableNpc,
|
||||
generateCustomWorldSceneImage,
|
||||
generateCustomWorldSceneNpc,
|
||||
generateCustomWorldStoryNpc,
|
||||
} from '../aiService';
|
||||
import {
|
||||
generateCustomWorldCoverImage,
|
||||
uploadCustomWorldCoverImage,
|
||||
} from '../customWorldCoverAssetService';
|
||||
|
||||
/**
|
||||
* 工作包 A 先把 RPG 创作资产相关请求收口到独立 client。
|
||||
* 当前仍桥接旧接口,后续工作包 C、D 会继续细分角色资产、场景资产和封面资产职责。
|
||||
*/
|
||||
export const rpgCreationAssetClient = {
|
||||
generateSceneImage: generateCustomWorldSceneImage,
|
||||
generateSceneNpc: generateCustomWorldSceneNpc,
|
||||
generatePlayableNpc: generateCustomWorldPlayableNpc,
|
||||
generateStoryNpc: generateCustomWorldStoryNpc,
|
||||
generateLandmark: generateCustomWorldLandmark,
|
||||
generateCoverImage: generateCustomWorldCoverImage,
|
||||
uploadCoverImage: uploadCustomWorldCoverImage,
|
||||
};
|
||||
|
||||
export {
|
||||
generateCustomWorldCoverImage as generateRpgWorldCoverImage,
|
||||
generateCustomWorldLandmark as generateRpgWorldLandmark,
|
||||
generateCustomWorldPlayableNpc as generateRpgWorldPlayableNpc,
|
||||
generateCustomWorldSceneImage as generateRpgWorldSceneImage,
|
||||
generateCustomWorldSceneNpc as generateRpgWorldSceneNpc,
|
||||
generateCustomWorldStoryNpc as generateRpgWorldStoryNpc,
|
||||
uploadCustomWorldCoverImage as uploadRpgWorldCoverImage,
|
||||
};
|
||||
33
src/services/rpg-creation/rpgCreationLibraryClient.ts
Normal file
33
src/services/rpg-creation/rpgCreationLibraryClient.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import {
|
||||
deleteCustomWorldProfile,
|
||||
getCustomWorldGalleryDetail,
|
||||
listCustomWorldGallery,
|
||||
listCustomWorldLibrary,
|
||||
publishCustomWorldProfile,
|
||||
unpublishCustomWorldProfile,
|
||||
upsertCustomWorldProfile,
|
||||
} from '../storageService';
|
||||
|
||||
/**
|
||||
* 工作包 A 先建立 RPG 世界作品库和广场相关请求的统一入口。
|
||||
* 当前实现仍透传旧 `storageService.ts`,后续工作包 D 会把作品链路彻底迁入这里。
|
||||
*/
|
||||
export const rpgCreationLibraryClient = {
|
||||
listLibrary: listCustomWorldLibrary,
|
||||
upsertProfile: upsertCustomWorldProfile,
|
||||
deleteProfile: deleteCustomWorldProfile,
|
||||
publishProfile: publishCustomWorldProfile,
|
||||
unpublishProfile: unpublishCustomWorldProfile,
|
||||
listGallery: listCustomWorldGallery,
|
||||
getGalleryDetail: getCustomWorldGalleryDetail,
|
||||
};
|
||||
|
||||
export {
|
||||
deleteCustomWorldProfile as deleteRpgWorldProfile,
|
||||
getCustomWorldGalleryDetail as getRpgWorldGalleryDetail,
|
||||
listCustomWorldGallery as listRpgWorldGallery,
|
||||
listCustomWorldLibrary as listRpgWorldLibrary,
|
||||
publishCustomWorldProfile as publishRpgWorldProfile,
|
||||
unpublishCustomWorldProfile as unpublishRpgWorldProfile,
|
||||
upsertCustomWorldProfile as upsertRpgWorldProfile,
|
||||
};
|
||||
13
src/services/rpg-creation/rpgCreationPreviewAdapter.ts
Normal file
13
src/services/rpg-creation/rpgCreationPreviewAdapter.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { buildCustomWorldProfileFromAgentDraft } from '../customWorldAgentDraftResult';
|
||||
|
||||
/**
|
||||
* 这是工作包 A 提供的新命名兼容层。
|
||||
* 当前仍复用旧的前端草稿编译逻辑,后续 Phase 3 会继续把结果预览编译后移到服务端。
|
||||
*/
|
||||
export const rpgCreationPreviewAdapter = {
|
||||
buildPreviewFromAgentDraft: buildCustomWorldProfileFromAgentDraft,
|
||||
};
|
||||
|
||||
export {
|
||||
buildCustomWorldProfileFromAgentDraft as buildRpgCreationPreviewFromAgentDraft,
|
||||
};
|
||||
11
src/services/rpg-creation/rpgCreationWorkClient.ts
Normal file
11
src/services/rpg-creation/rpgCreationWorkClient.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { listCustomWorldWorks } from '../storageService';
|
||||
|
||||
/**
|
||||
* 工作包 A 先建立 RPG 创作作品流的独立 client。
|
||||
* 当前作品列表仍复用旧存储服务,后续工作包 D 再切出真正的专属请求实现。
|
||||
*/
|
||||
export const rpgCreationWorkClient = {
|
||||
listWorks: listCustomWorldWorks,
|
||||
};
|
||||
|
||||
export { listCustomWorldWorks as listRpgCreationWorks };
|
||||
Reference in New Issue
Block a user