""" 系统配置相关 Schema """ from pydantic import BaseModel, Field from typing import Optional, Dict, Any from datetime import datetime class SystemConfigBase(BaseModel): """系统配置基础 Schema""" config_key: str = Field(..., description="配置键", max_length=100) config_value: Dict[str, Any] = Field(..., description="配置值") config_type: Optional[str] = Field(None, description="配置类型", max_length=50) description: Optional[str] = Field(None, description="配置描述") class SystemConfigCreate(SystemConfigBase): """创建系统配置请求""" pass class SystemConfigUpdate(BaseModel): """更新系统配置请求""" config_value: Optional[Dict[str, Any]] = Field(None, description="配置值") description: Optional[str] = Field(None, description="配置描述") is_active: Optional[bool] = Field(None, description="是否启用") class SystemConfigResponse(SystemConfigBase): """系统配置响应""" id: int is_active: bool created_at: datetime updated_at: datetime class Config: from_attributes = True class ScheduleConfig(BaseModel): """调度配置""" task_start_hour: int = Field(9, description="活动开始时间", ge=0, le=23) task_end_hour: int = Field(22, description="活动结束时间", ge=0, le=23) task_interval_min: int = Field(10, description="最小间隔(分钟)", ge=1) task_interval_max: int = Field(30, description="最大间隔(分钟)", ge=1) is_task_running: bool = Field(False, description="任务是否运行中") class LimitConfig(BaseModel): """限额配置""" max_tokens_per_day: int = Field(10000, description="每日 Token 上限", ge=0) max_comments_per_user_per_day: int = Field(20, description="单用户每日最大评论数", ge=0) max_replies_per_user_per_day: int = Field(10, description="单用户每日最大回复数", ge=0) class ProbabilityConfig(BaseModel): """概率配置""" like_probability: float = Field(0.8, description="点赞概率", ge=0, le=1) favorite_probability: float = Field(0.5, description="收藏概率", ge=0, le=1) share_probability: float = Field(0.3, description="转发概率", ge=0, le=1)