feat: add unified generation entrypoint
This commit is contained in:
@@ -17,6 +17,8 @@ from app.schemas.story_schemas import (
|
||||
AchievementItem,
|
||||
FullStoryResponse,
|
||||
GenerateRequest,
|
||||
GenerationRequest,
|
||||
GenerationResponse,
|
||||
StoryAssetRetryRequest,
|
||||
StorybookRequest,
|
||||
StorybookResponse,
|
||||
@@ -37,13 +39,45 @@ logger = get_logger(__name__)
|
||||
router = APIRouter()
|
||||
|
||||
RATE_LIMIT_WINDOW = 60 # seconds
|
||||
RATE_LIMIT_REQUESTS = 10
|
||||
|
||||
|
||||
@router.post("/stories/generate", response_model=StoryResponse)
|
||||
async def generate_story(
|
||||
request: GenerateRequest,
|
||||
user: User = Depends(require_user),
|
||||
RATE_LIMIT_REQUESTS = 10
|
||||
|
||||
|
||||
@router.post("/generations", response_model=GenerationResponse)
|
||||
async def create_generation(
|
||||
request: GenerationRequest,
|
||||
user: User = Depends(require_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Create a story or storybook through the unified generation workflow."""
|
||||
await check_rate_limit(f"story:{user.id}", RATE_LIMIT_REQUESTS, RATE_LIMIT_WINDOW)
|
||||
return await story_service.generate_generation_service(request, user.id, db)
|
||||
|
||||
|
||||
@router.get("/generations/{story_id}", response_model=StoryDetailResponse)
|
||||
async def get_generation(
|
||||
story_id: int,
|
||||
user: User = Depends(require_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Get a generated story/storybook through the unified generation API."""
|
||||
return await story_service.get_story_detail(story_id, user.id, db)
|
||||
|
||||
|
||||
@router.post("/generations/{story_id}/retry-assets", response_model=StoryDetailResponse)
|
||||
async def retry_generation_assets(
|
||||
story_id: int,
|
||||
payload: StoryAssetRetryRequest,
|
||||
user: User = Depends(require_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Retry generated assets through the unified generation API."""
|
||||
return await story_service.retry_story_assets(story_id, user.id, payload.assets, db)
|
||||
|
||||
|
||||
@router.post("/stories/generate", response_model=StoryResponse)
|
||||
async def generate_story(
|
||||
request: GenerateRequest,
|
||||
user: User = Depends(require_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Generate or enhance a story."""
|
||||
|
||||
Reference in New Issue
Block a user