feat: add unified generation entrypoint

This commit is contained in:
2026-04-18 12:55:20 +08:00
parent 9e1a17fa67
commit e201fa3358
10 changed files with 358 additions and 67 deletions

View File

@@ -133,37 +133,35 @@ async function generateStory() {
}
loading.value = true
error.value = ''
try {
const payload: Record<string, unknown> = {
type: inputType.value,
data: inputData.value,
education_theme: educationTheme.value || undefined,
}
if (selectedProfileId.value) payload.child_profile_id = selectedProfileId.value
if (selectedUniverseId.value) payload.universe_id = selectedUniverseId.value
if (outputMode.value === 'storybook') {
const response = await api.post<any>('/api/storybook/generate', {
keywords: inputData.value,
education_theme: educationTheme.value || undefined,
generate_images: true,
page_count: 6,
child_profile_id: selectedProfileId.value || undefined,
universe_id: selectedUniverseId.value || undefined
})
error.value = ''
try {
const requestedOutputMode =
inputType.value === 'full_story' ? 'story' : outputMode.value === 'storybook' ? 'storybook' : 'story'
const payload: Record<string, unknown> = {
output_mode: requestedOutputMode,
type: inputType.value,
data: inputData.value,
education_theme: educationTheme.value || undefined,
generate_images: true,
page_count: 6,
}
if (selectedProfileId.value) payload.child_profile_id = selectedProfileId.value
if (selectedUniverseId.value) payload.universe_id = selectedUniverseId.value
if (requestedOutputMode === 'storybook') {
const response = await api.post<any>('/api/generations', payload)
storybookStore.setStorybook(response)
close()
const storybookPath = response.id ? `/storybook/view/${response.id}` : '/storybook/view'
router.push(storybookPath)
} else {
const result = await api.post<any>('/api/stories/generate/full', payload)
const result = await api.post<any>('/api/generations', payload)
const query: Record<string, string> = {}
if (result.errors && Object.keys(result.errors).length > 0) {
if (result.errors.image) query.imageError = '1'
}
}
close()
router.push({ path: `/story/${result.id}`, query })
}