67 lines
1.2 KiB
Python
67 lines
1.2 KiB
Python
"""管理后台 Schema"""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class AdminLoginRequest(BaseModel):
|
|
password: str
|
|
|
|
|
|
class AdminLoginResponse(BaseModel):
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
|
|
|
|
class DashboardStats(BaseModel):
|
|
total_users: int
|
|
online_users: int
|
|
total_messages: int
|
|
today_messages: int
|
|
total_conversations: int
|
|
new_users_7d: int
|
|
|
|
|
|
class TrendDataPoint(BaseModel):
|
|
date: str
|
|
value: int
|
|
|
|
|
|
class UserAdminRead(BaseModel):
|
|
id: str
|
|
username: str
|
|
email: str
|
|
avatar_url: str | None = None
|
|
status: str
|
|
is_banned: bool
|
|
banned_reason: str | None = None
|
|
last_seen_at: datetime | None = None
|
|
created_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class UserBanRequest(BaseModel):
|
|
is_banned: bool
|
|
reason: str | None = None
|
|
|
|
|
|
class SystemConfigRead(BaseModel):
|
|
key: str
|
|
value: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class SystemConfigUpdate(BaseModel):
|
|
configs: dict[str, str]
|
|
|
|
|
|
class AdminMessageFilter(BaseModel):
|
|
user_id: str | None = None
|
|
conversation_id: str | None = None
|
|
keyword: str | None = None
|
|
date_from: str | None = None
|
|
date_to: str | None = None
|