feat: 统一创作页表头跟随后台入口配置

This commit is contained in:
2026-06-06 22:49:38 +08:00
parent 95f17cd920
commit 18908609fc
14 changed files with 276 additions and 53 deletions

View File

@@ -36,41 +36,49 @@ describe('unified creation specs', () => {
test('主要链路都映射到统一创作、生成、结果阶段', () => {
expect(getUnifiedCreationSpec('rpg')).toMatchObject({
title: '文字冒险',
workspaceStage: 'agent-workspace',
generationStage: 'custom-world-generating',
resultStage: 'custom-world-result',
});
expect(getUnifiedCreationSpec('puzzle')).toMatchObject({
title: '拼图',
workspaceStage: 'puzzle-agent-workspace',
generationStage: 'puzzle-generating',
resultStage: 'puzzle-result',
});
expect(getUnifiedCreationSpec('match3d')).toMatchObject({
title: '抓大鹅',
workspaceStage: 'match3d-agent-workspace',
generationStage: 'match3d-generating',
resultStage: 'match3d-result',
});
expect(getUnifiedCreationSpec('jump-hop')).toMatchObject({
title: '跳一跳',
workspaceStage: 'jump-hop-workspace',
generationStage: 'jump-hop-generating',
resultStage: 'jump-hop-result',
});
expect(getUnifiedCreationSpec('wooden-fish')).toMatchObject({
title: '敲木鱼',
workspaceStage: 'wooden-fish-workspace',
generationStage: 'wooden-fish-generating',
resultStage: 'wooden-fish-result',
});
expect(getUnifiedCreationSpec('bark-battle')).toMatchObject({
title: '汪汪声浪',
workspaceStage: 'bark-battle-workspace',
generationStage: 'bark-battle-generating',
resultStage: 'bark-battle-result',
});
expect(getUnifiedCreationSpec('visual-novel')).toMatchObject({
title: '视觉小说',
workspaceStage: 'visual-novel-agent-workspace',
generationStage: 'visual-novel-generating',
resultStage: 'visual-novel-result',
});
expect(getUnifiedCreationSpec('baby-object-match')).toMatchObject({
title: '宝贝识物',
workspaceStage: 'baby-object-match-workspace',
generationStage: 'baby-object-match-generating',
resultStage: 'baby-object-match-result',

View File

@@ -27,7 +27,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
> = {
rpg: {
playId: 'rpg',
title: '想做个什么玩法?',
title: '文字冒险',
workspaceStage: 'agent-workspace',
generationStage: 'custom-world-generating',
resultStage: 'custom-world-result',
@@ -42,7 +42,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'big-fish': {
playId: 'big-fish',
title: '想做个什么玩法?',
title: '摸鱼',
workspaceStage: 'big-fish-agent-workspace',
generationStage: 'big-fish-generating',
resultStage: 'big-fish-result',
@@ -57,7 +57,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
puzzle: {
playId: 'puzzle',
title: '想做个什么玩法?',
title: '拼图',
workspaceStage: 'puzzle-agent-workspace',
generationStage: 'puzzle-generating',
resultStage: 'puzzle-result',
@@ -84,7 +84,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
match3d: {
playId: 'match3d',
title: '想做个什么玩法?',
title: '抓大鹅',
workspaceStage: 'match3d-agent-workspace',
generationStage: 'match3d-generating',
resultStage: 'match3d-result',
@@ -105,7 +105,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'jump-hop': {
playId: 'jump-hop',
title: '想做个什么玩法?',
title: '跳一跳',
workspaceStage: 'jump-hop-workspace',
generationStage: 'jump-hop-generating',
resultStage: 'jump-hop-result',
@@ -120,7 +120,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'wooden-fish': {
playId: 'wooden-fish',
title: '想做个什么玩法?',
title: '敲木鱼',
workspaceStage: 'wooden-fish-workspace',
generationStage: 'wooden-fish-generating',
resultStage: 'wooden-fish-result',
@@ -153,7 +153,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'square-hole': {
playId: 'square-hole',
title: '想做个什么玩法?',
title: '方洞',
workspaceStage: 'square-hole-agent-workspace',
generationStage: 'square-hole-generating',
resultStage: 'square-hole-result',
@@ -168,7 +168,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'bark-battle': {
playId: 'bark-battle',
title: '想做个什么玩法?',
title: '汪汪声浪',
workspaceStage: 'bark-battle-workspace',
generationStage: 'bark-battle-generating',
resultStage: 'bark-battle-result',
@@ -213,7 +213,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'visual-novel': {
playId: 'visual-novel',
title: '想做个什么玩法?',
title: '视觉小说',
workspaceStage: 'visual-novel-agent-workspace',
generationStage: 'visual-novel-generating',
resultStage: 'visual-novel-result',
@@ -234,7 +234,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'baby-object-match': {
playId: 'baby-object-match',
title: '想做个什么玩法?',
title: '宝贝识物',
workspaceStage: 'baby-object-match-workspace',
generationStage: 'baby-object-match-generating',
resultStage: 'baby-object-match-result',
@@ -255,7 +255,7 @@ const FALLBACK_UNIFIED_CREATION_SPECS: Record<
},
'creative-agent': {
playId: 'creative-agent',
title: '想做个什么玩法?',
title: '智能体创作',
workspaceStage: 'creative-agent-workspace',
generationStage: 'puzzle-generating',
resultStage: 'puzzle-result',

View File

@@ -78,7 +78,7 @@ test('match3d workspace submits derived entry form payload instead of agent chat
/>,
);
expect(screen.getByText('想做个什么玩法?')).toBeTruthy();
expect(screen.getByText('抓大鹅')).toBeTruthy();
expect(screen.getByLabelText('想做一个什么题材的抓大鹅?')).toBeTruthy();
expect(screen.queryByText('2D素材风格')).toBeNull();
expect(screen.queryByRole('button', { name: '扁平图标' })).toBeNull();
@@ -130,7 +130,7 @@ test('match3d workspace can defer visible chrome to the unified creation page',
expect(workspace?.className).not.toContain('h-full');
expect(workspace?.className).not.toContain('overflow-hidden');
expect(workspace?.className).not.toContain('platform-remap-surface');
expect(screen.queryByRole('heading', { name: '想做个什么玩法?' })).toBeNull();
expect(screen.queryByRole('heading', { name: '抓大鹅' })).toBeNull();
const themeInput = screen.getByLabelText('想做一个什么题材的抓大鹅?');
expect(themeInput).toBeTruthy();
expect(themeInput.className).not.toContain('h-full');

View File

@@ -115,7 +115,7 @@ export function Match3DCreationWorkspace({
onCreateFromForm,
initialFormPayload = null,
showBackButton = true,
title = '想做个什么玩法?',
title = '抓大鹅',
unifiedChrome = false,
}: Match3DCreationWorkspaceProps) {
const [formState, setFormState] = useState<Match3DFormState>(() =>

View File

@@ -188,7 +188,7 @@ test('puzzle workspace submits the work form instead of agent chat', () => {
expect(screen.queryByLabelText('作品名称')).toBeNull();
expect(screen.queryByLabelText('作品描述')).toBeNull();
expect(screen.getByText('想做个什么玩法?')).toBeTruthy();
expect(screen.getByText('拼图')).toBeTruthy();
expect(screen.queryByText('try')).toBeNull();
expect(screen.queryByText('Template')).toBeNull();
@@ -238,7 +238,7 @@ test('puzzle workspace can defer visible chrome to the unified creation page', (
expect(workspace?.className).not.toContain('platform-remap-surface');
expect(imagePanel?.className).toContain('flex-none');
expect(imagePanel?.className).not.toContain('flex-1');
expect(screen.queryByRole('heading', { name: '想做个什么玩法?' })).toBeNull();
expect(screen.queryByRole('heading', { name: '拼图' })).toBeNull();
expect(screen.getByLabelText('画面描述')).toBeTruthy();
});

View File

@@ -246,7 +246,7 @@ export function PuzzleCreationWorkspace({
onAutoSaveForm,
initialFormPayload = null,
showBackButton = true,
title = '想做个什么玩法?',
title = '拼图',
unifiedChrome = false,
}: PuzzleCreationWorkspaceProps) {
const [formState, setFormState] = useState<PuzzleFormState>(() =>