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

@@ -29,6 +29,19 @@ class GenerateRequest(BaseModel):
universe_id: str | None = None
class GenerationRequest(BaseModel):
"""Unified generation request for story and storybook outputs."""
output_mode: Literal["story", "storybook"] = Field(default="story")
type: Literal["keywords", "full_story"] = Field(default="keywords")
data: str = Field(..., min_length=1, max_length=MAX_DATA_LENGTH)
education_theme: str | None = Field(default=None, max_length=MAX_EDU_THEME_LENGTH)
generate_images: bool = Field(default=True)
page_count: int = Field(default=6, ge=4, le=12)
child_profile_id: str | None = None
universe_id: str | None = None
class StoryResponse(StoryStatusMixin):
"""Story generation response."""
@@ -99,6 +112,25 @@ class StorybookResponse(StoryStatusMixin):
cover_url: str | None = None
class GenerationResponse(StoryStatusMixin):
"""Unified generation response for the target workflow API."""
id: int
title: str
mode: str
story_text: str | None = None
pages: list[StorybookPageResponse] | None = None
cover_prompt: str | None = None
image_url: str | None = None
cover_url: str | None = None
audio_ready: bool = False
errors: dict[str, str | None] = Field(default_factory=dict)
main_character: str | None = None
art_style: str | None = None
child_profile_id: str | None = None
universe_id: str | None = None
class StoryDetailResponse(StoryStatusMixin):
"""Story detail response for both stories and storybooks."""