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
}
