import os from dotenv import load_dotenv # 加载环境变量 load_dotenv() class Config: """基础配置""" # 密钥配置 SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production' # 数据库配置 DB_HOST = os.environ.get('DB_HOST') or 'localhost' DB_PORT = os.environ.get('DB_PORT') or '3306' DB_USER = os.environ.get('DB_USER') or 'root' DB_PASSWORD = os.environ.get('DB_PASSWORD') or '' DB_NAME = os.environ.get('DB_NAME') or 'ai_nav' SQLALCHEMY_DATABASE_URI = f'mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}?charset=utf8mb4' SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ECHO = False # 数据库连接池配置 SQLALCHEMY_ENGINE_OPTIONS = { 'pool_size': 10, # 连接池大小 'pool_recycle': 3600, # 连接回收时间(秒) 'pool_pre_ping': True, # 每次取连接前先ping,确保连接有效 'pool_timeout': 30, # 连接池超时时间 'max_overflow': 20, # 超过pool_size后最多创建的连接数 'connect_args': { 'connect_timeout': 10, # 连接超时(秒) 'read_timeout': 30, # 读取超时(秒) 'write_timeout': 30, # 写入超时(秒) } } # 分页配置 SITES_PER_PAGE = 20 # 上传文件配置 UPLOAD_FOLDER = 'static/uploads' MAX_CONTENT_LENGTH = 5 * 1024 * 1024 # 5MB ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'webp'} # DeepSeek API配置 DEEPSEEK_API_KEY = os.environ.get('DEEPSEEK_API_KEY') DEEPSEEK_BASE_URL = os.environ.get('DEEPSEEK_BASE_URL') or 'https://api.deepseek.com' # 博查 Web Search API配置 BOCHA_API_KEY = os.environ.get('BOCHA_API_KEY') BOCHA_BASE_URL = os.environ.get('BOCHA_BASE_URL') or 'https://api.bocha.cn' BOCHA_SEARCH_ENDPOINT = '/v1/web-search' # 新闻搜索配置 NEWS_SEARCH_COUNT = 10 # 每次搜索返回的新闻数量 NEWS_SEARCH_FRESHNESS = 'oneMonth' # 默认搜索一个月内的新闻 NEWS_SEARCH_SUMMARY = True # 是否显示摘要 # DeepSeek API配置 DEEPSEEK_API_KEY = os.environ.get('DEEPSEEK_API_KEY') DEEPSEEK_BASE_URL = os.environ.get('DEEPSEEK_BASE_URL') or 'https://api.deepseek.com' # 博查 Web Search API配置 BOCHA_API_KEY = os.environ.get('BOCHA_API_KEY') BOCHA_BASE_URL = os.environ.get('BOCHA_BASE_URL') or 'https://api.bocha.cn' BOCHA_SEARCH_ENDPOINT = '/v1/web-search' # 新闻搜索配置 NEWS_SEARCH_COUNT = 10 # 每次搜索返回的新闻数量 NEWS_SEARCH_FRESHNESS = 'oneMonth' # 默认搜索一个月内的新闻 NEWS_SEARCH_SUMMARY = True # 是否显示摘要 class DevelopmentConfig(Config): """开发环境配置""" DEBUG = True SQLALCHEMY_ECHO = True class ProductionConfig(Config): """生产环境配置""" DEBUG = False SQLALCHEMY_ECHO = False # 配置字典 config = { 'development': DevelopmentConfig, 'production': ProductionConfig, 'default': DevelopmentConfig }