61 lines
2.2 KiB
Python
61 lines
2.2 KiB
Python
"""
|
|
系统配置相关 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)
|