From 0892e6aa04bdc1cc635df92df92aea0765e04e6f Mon Sep 17 00:00:00 2001 From: bwstudio Date: Tue, 2 Jun 2026 19:56:35 +0800 Subject: [PATCH] feat(api): add GenerateRequest/GenerateResponse schemas --- api/app/schemas/joke.py | 44 ++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/api/app/schemas/joke.py b/api/app/schemas/joke.py index cdf6a97..43bdcbb 100644 --- a/api/app/schemas/joke.py +++ b/api/app/schemas/joke.py @@ -6,8 +6,8 @@ from pydantic import BaseModel class JokeBase(BaseModel): title: str content: str - type_id: int | None = None - crowd_id: int | None = None + type_ids: list[int] | None = None + crowd_ids: list[int] | None = None class JokeCreate(JokeBase): @@ -17,20 +17,22 @@ class JokeCreate(JokeBase): class JokeUpdate(BaseModel): title: str | None = None content: str | None = None - type_id: int | None = None - crowd_id: int | None = None + polished_content: str | None = None + type_ids: list[int] | None = None + crowd_ids: list[int] | None = None status: str | None = None class JokeResponse(JokeBase): id: int status: str + polished_content: str | None = None view_count: int like_count: int created_at: datetime updated_at: datetime - type_name: str | None = None - crowd_name: str | None = None + type_names: list[str] | None = None + crowd_names: list[str] | None = None class Config: from_attributes = True @@ -40,4 +42,32 @@ class PaginatedJokeResponse(BaseModel): items: list[JokeResponse] total: int page: int - page_size: int \ No newline at end of file + page_size: int + + +# ============================================================ +# 笑话生成器 Schema +# ============================================================ + +class GenerateRequest(BaseModel): + """笑话生成请求""" + keywords: list[str] = [] + scenarios: list[str] = [] + + class Config: + json_schema_extra = { + "example": { + "keywords": ["加班"], + "scenarios": ["职场"] + } + } + + +class GenerateResponse(BaseModel): + """笑话生成响应""" + title: str + content: str + created_at: datetime | None = None + + class Config: + from_attributes = True \ No newline at end of file