import os
from datetime import timedelta

class Config:
    # =========================================================
    # 1. 基础路径与安全配置
    # =========================================================
    # 获取当前文件所在目录的绝对路径 (用于定位 uploads 文件夹等)
    BASE_DIR = os.path.abspath(os.path.dirname(__file__))

    # Flask 的基础密钥 (用于 Session, Flash 消息等安全签名)
    SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret-key-1234')

    # =========================================================
    # 2. 数据库配置
    # =========================================================
    # 优先读取 .env 中的 'DATABASE_URL'。
    # 如果读不到，才回退使用默认的 localhost 连接字符串。
    SQLALCHEMY_DATABASE_URI = os.getenv(
        'DATABASE_URL',
        'postgresql://postgres:1234@localhost:5432/inventory_system'
    )

    # 关闭 SQLAlchemy 的事件追踪，减少内存消耗 (推荐设为 False)
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # =========================================================
    # 3. JWT 配置 (修复 500 报错的核心区域)
    # =========================================================
    # 【核心】必须设置 JWT_SECRET_KEY，否则 create_access_token 会报错
    # 逻辑：优先读环境变量，读不到就用默认字符串
    JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'default-jwt-secret-key-if-missing')

    # 设置 Token 过期时间 (这里设为 1 天)
    JWT_ACCESS_TOKEN_EXPIRES = timedelta(days=1)

    # =========================================================
    # 4. 文件上传配置
    # =========================================================
    # 上传文件存储路径
    UPLOAD_FOLDER = os.path.join(BASE_DIR, 'uploads')
    # 限制最大上传 16MB
    MAX_CONTENT_LENGTH = 16 * 1024 * 1024