from typing import List, Dict, Optional from pydantic import BaseModel, Field from pydantic import ConfigDict class ActivityThresholds(BaseModel): """活跃度阈值配置""" extreme_active_recent_7d: int = Field(default=15, description="极高活跃:近7天发布阈值") high_active_recent_7d: int = Field(default=8, description="高活跃:近7天发布阈值") medium_active_recent_7d: int = Field(default=3, description="中活跃:近7天发布阈值") low_active_recent_7d: int = Field(default=1, description="低活跃:近7天发布阈值") dormant_recent_30d: int = Field(default=1, description="休眠:近30天发布阈值") new_user_total: int = Field(default=0, description="新用户:总视频数阈值") class ActivityLevel(BaseModel): """活跃度等级配置""" label: str = Field(description="活跃度标签") priority: int = Field(description="优先级") class ActivityLevels(BaseModel): """活跃度等级映射""" new_user: ActivityLevel = Field(default=ActivityLevel(label="新用户", priority=0)) extreme_active: ActivityLevel = Field(default=ActivityLevel(label="极高活跃", priority=1)) high_active: ActivityLevel = Field(default=ActivityLevel(label="高活跃", priority=2)) medium_active: ActivityLevel = Field(default=ActivityLevel(label="中活跃", priority=3)) low_active: ActivityLevel = Field(default=ActivityLevel(label="低活跃", priority=4)) dormant: ActivityLevel = Field(default=ActivityLevel(label="休眠", priority=5)) zombie: ActivityLevel = Field(default=ActivityLevel(label="僵尸", priority=6)) class ActivityCalculatorConfig(BaseModel): """活跃度计算器配置""" platforms: List[str] = Field(default=["xiaoniangao", "zhongqingkandian"], description="要分析的平台列表") activity_thresholds: ActivityThresholds = Field(default=ActivityThresholds(), description="活跃度阈值配置") activity_levels: ActivityLevels = Field(default=ActivityLevels(), description="活跃度等级配置") model_config = ConfigDict(extra='forbid') # 使用V2兼容的方式