activity_config_models.py 2.1 KB

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