config_app.py 960 B

123456789101112131415161718192021222324252627282930
  1. from pydantic_settings import BaseSettings
  2. from pydantic import field_validator
  3. import re
  4. class AppConfig(BaseSettings):
  5. """应用基础配置"""
  6. name: str = "Smart Question Bank"
  7. version: str = "1.0.0"
  8. debug: bool = False
  9. @field_validator('name')
  10. def validate_name(cls, value):
  11. if not value or len(value) < 2:
  12. raise ValueError('应用名称不能为空且至少2个字符')
  13. return value
  14. @field_validator('version')
  15. def validate_version(cls, value):
  16. if not re.match(r'^\d+\.\d+\.\d+$', value):
  17. raise ValueError('版本号格式必须为x.x.x')
  18. return value
  19. def to_string(self, indent: int = 0) -> str:
  20. """将配置转换为字符串"""
  21. indent_str = ' ' * indent
  22. result = []
  23. for field_name, field_value in self.__dict__.items():
  24. result.append(f"{indent_str}{field_name}: {field_value}")
  25. return '\n'.join(result)