| | |
| | | """ |
| | | |
| | | import os |
| | | from typing import Optional |
| | | from pydantic_settings import BaseSettings |
| | | import json |
| | | |
| | | |
| | | class Settings(BaseSettings): |
| | | class Settings: |
| | | """应用配置""" |
| | | |
| | | # 数据库配置 |
| | | database_url: str = "mysql+pymysql://root:TAI%402019%23Zjun@120.24.39.179:3306/ecloud_dify" |
| | | def __init__(self, config_file: str = "config.json"): |
| | | """初始化配置,从JSON文件加载""" |
| | | self.config_file = config_file |
| | | self._load_config() |
| | | |
| | | # Redis配置 |
| | | redis_url: str = "redis://localhost:6379/0" |
| | | def _load_config(self): |
| | | """从JSON文件加载配置""" |
| | | if not os.path.exists(self.config_file): |
| | | raise FileNotFoundError(f"配置文件 {self.config_file} 不存在") |
| | | |
| | | # E云管家配置 |
| | | ecloud_base_url: str = "http://your-ecloud-domain.com" |
| | | ecloud_authorization: str = "your-authorization-token" |
| | | try: |
| | | with open(self.config_file, 'r', encoding='utf-8') as f: |
| | | config_data = json.load(f) |
| | | self._set_config_from_dict(config_data) |
| | | except Exception as e: |
| | | raise Exception(f"加载配置文件失败: {e}") |
| | | |
| | | # DifyAI配置 |
| | | dify_base_url: str = "https://api.dify.ai/v1" |
| | | dify_api_key: str = "your-dify-api-key" |
| | | def _set_config_from_dict(self, config_data: dict): |
| | | """从字典设置配置""" |
| | | # 数据库配置 |
| | | self.database_url = config_data["database"]["url"] |
| | | |
| | | # 服务配置 |
| | | server_host: str = "0.0.0.0" |
| | | server_port: int = 8000 |
| | | debug: bool = True |
| | | # Redis配置 |
| | | self.redis_url = config_data["redis"]["url"] |
| | | |
| | | # 日志配置 |
| | | log_level: str = "INFO" |
| | | log_file: str = "logs/app.log" |
| | | # E云管家配置 |
| | | ecloud_config = config_data["ecloud"] |
| | | self.ecloud_base_url = ecloud_config["base_url"] |
| | | self.ecloud_authorization = ecloud_config["authorization"] |
| | | self.ecloud_w_id = ecloud_config["w_id"] |
| | | |
| | | # 消息处理配置 |
| | | max_retry_count: int = 3 |
| | | retry_delay: int = 5 # 秒 |
| | | queue_timeout: int = 300 # 秒 |
| | | # DifyAI配置 |
| | | dify_config = config_data["dify"] |
| | | self.dify_base_url = dify_config["base_url"] |
| | | self.dify_api_key = dify_config["api_key"] |
| | | self.dify_streaming_enabled = dify_config["streaming_enabled"] |
| | | self.dify_streaming_timeout = dify_config["streaming_timeout"] |
| | | |
| | | class Config: |
| | | env_file = ".env" |
| | | env_file_encoding = "utf-8" |
| | | # 服务配置 |
| | | server_config = config_data["server"] |
| | | self.server_host = server_config["host"] |
| | | self.server_port = server_config["port"] |
| | | self.debug = server_config["debug"] |
| | | |
| | | # 日志配置 |
| | | logging_config = config_data["logging"] |
| | | self.log_level = logging_config["level"] |
| | | self.log_file = logging_config["file"] |
| | | |
| | | # 消息处理配置 |
| | | msg_config = config_data["message_processing"] |
| | | self.max_retry_count = msg_config["max_retry_count"] |
| | | self.retry_delay = msg_config["retry_delay"] |
| | | self.queue_timeout = msg_config["queue_timeout"] |
| | | |
| | | # 客服配置 |
| | | customer_service_config = config_data["customer_service"] |
| | | self.customer_service_names = customer_service_config["names"] |
| | | |
| | | # 好友忽略配置 |
| | | friend_ignore_config = config_data["friend_ignore"] |
| | | self.friend_ignore_enabled = friend_ignore_config["enabled"] |
| | | self.friend_ignore_whitelist = friend_ignore_config["whitelist"] |
| | | |
| | | |
| | | # 全局配置实例 |