wendajia/backend/app/schemas.py

55 lines
2.0 KiB
Python

from pydantic import BaseModel, Field
class LoginRequest(BaseModel):
username: str = Field(min_length=1, max_length=64)
password: str = Field(min_length=1, max_length=128)
class RegisterRequest(BaseModel):
username: str = Field(min_length=3, max_length=64, pattern=r"^[A-Za-z0-9_.-]+$")
password: str = Field(min_length=8, max_length=128)
display_name: str = Field(min_length=1, max_length=64)
class AdminUserCreate(BaseModel):
username: str = Field(min_length=3, max_length=64, pattern=r"^[A-Za-z0-9_.-]+$")
password: str = Field(min_length=8, max_length=128)
display_name: str = Field(min_length=1, max_length=64)
role_code: str = Field(default="operator", pattern=r"^(super_admin|dept_manager|operator)$")
class AdminUserUpdate(BaseModel):
password: str | None = Field(default=None, min_length=8, max_length=128)
display_name: str | None = Field(default=None, min_length=1, max_length=64)
role_code: str | None = Field(default=None, pattern=r"^(super_admin|dept_manager|operator)$")
is_active: bool | None = None
class QAGenerateRequest(BaseModel):
product_name: str = Field(default="", max_length=200)
category: str = Field(default="", max_length=100)
benefits: str = Field(default="", max_length=1000)
selling_points: str = Field(default="", max_length=2000)
language_style: str = Field(default="口语(亲切随性)", max_length=40)
target_group: str = Field(default="女性", max_length=100)
usage_scene: str = Field(default="居家", max_length=100)
purchase_channel: str = Field(default="电商平台", max_length=100)
question_count: int = Field(default=5, ge=1)
answers_per_question: int = Field(default=2, ge=1, le=50)
answer_requirement: str = Field(default="", max_length=1000)
reference_qa: str = Field(default="", max_length=20000)
seed_style: bool = True
class UserOut(BaseModel):
id: int
username: str
display_name: str
role_code: str
class LoginResponse(BaseModel):
success: bool = True
data: dict