| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- """全局配置聚合根 —— 唯一的配置入口,启动时一次创建、四处注入"""
- from pydantic import Field
- from pydantic_settings import BaseSettings, SettingsConfigDict
- from supply.config.database import (
- AigcDatabaseConfig,
- LongVideoDatabaseConfig,
- LongArticlesDatabaseConfig,
- PiaoquanCrawlerDatabaseConfig,
- GrowthDatabaseConfig,
- ContentDeconstructionSupplyConfig,
- )
- from supply.config.aliyun import AliyunLogConfig, AliyunOssConfig
- from supply.config.xxljob import XxlJobConfig
- class GlobalConfig(BaseSettings):
- """应用全局配置 —— 所有子配置的聚合根
- 启动时一次性创建,注入到各组件:
- global_config = GlobalConfig()
- db = DatabaseManager(create_backend("aigc", global_config.aigc_db))
- log_service = LogService(global_config.aliyun_log)
- executor = XxlJobExecutor(global_config.xxl_job)
- 每个子配置保持独立的 env_prefix,环境变量按各自前缀覆盖。
- """
- # ============ 应用基础配置 ============
- app_name: str = Field(
- default="long-articles-agentic-supply",
- description="应用名称,用于 XXL-JOB 执行器注册和日志标识",
- )
- environment: str = Field(
- default="development",
- description="运行环境: development / pre / production",
- )
- debug: bool = Field(default=False, description="调试模式")
- # ============ 数据库配置 ============
- aigc_db: AigcDatabaseConfig = Field(default_factory=AigcDatabaseConfig)
- long_video_db: LongVideoDatabaseConfig = Field(
- default_factory=LongVideoDatabaseConfig
- )
- long_articles_db: LongArticlesDatabaseConfig = Field(
- default_factory=LongArticlesDatabaseConfig
- )
- piaoquan_crawler_db: PiaoquanCrawlerDatabaseConfig = Field(
- default_factory=PiaoquanCrawlerDatabaseConfig
- )
- growth_db: GrowthDatabaseConfig = Field(default_factory=GrowthDatabaseConfig)
- content_decode_db: ContentDeconstructionSupplyConfig = Field(
- default_factory=ContentDeconstructionSupplyConfig
- )
- # ============ 阿里云服务配置 ============
- aliyun_log: AliyunLogConfig = Field(default_factory=AliyunLogConfig)
- aliyun_oss: AliyunOssConfig = Field(default_factory=AliyunOssConfig)
- # ============ XXL-JOB 配置 ============
- xxl_job: XxlJobConfig = Field(default_factory=XxlJobConfig)
- model_config = SettingsConfigDict(
- env_file=".env",
- env_file_encoding="utf-8",
- case_sensitive=False,
- extra="ignore",
- )
- # ============ 组合导出 ============
- def active_db_configs(self) -> dict[str, object]:
- """返回业务数据库配置映射 {name: config},供 DatabaseManager 使用"""
- return {
- "aigc": self.aigc_db,
- "long_articles": self.long_articles_db,
- "piaoquan_crawler": self.piaoquan_crawler_db,
- }
|