"""应用配置

从项目根目录的 .env 文件加载配置（若存在）。
API_KEY 留空表示不启用写操作鉴权（适用于纯内网环境）。
"""

import os
from pathlib import Path

from dotenv import load_dotenv

BASE_DIR = Path(__file__).resolve().parent.parent.parent
load_dotenv(BASE_DIR / ".env")


class Settings:
    """应用配置项"""

    APP_NAME: str = os.getenv("APP_NAME", "VPS 资产管理系统")
    # 写操作（POST/PUT/DELETE）鉴权密钥；留空则不校验
    API_KEY: str = os.getenv("API_KEY", "")
    # Agent 上报鉴权密钥；配置后 Agent 上报需携带 X-Agent-Key
    AGENT_KEY: str = os.getenv("AGENT_KEY", "")
    # 凭证加密主密钥（Fernet）；生成：python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())'
    MASTER_KEY: str = os.getenv("MASTER_KEY", "")

    # ---- 通知渠道：Telegram ----
    TELEGRAM_BOT_TOKEN: str = os.getenv("TELEGRAM_BOT_TOKEN", "")
    TELEGRAM_CHAT_ID: str = os.getenv("TELEGRAM_CHAT_ID", "")

    # ---- 通知渠道：邮件（SMTP）----
    SMTP_HOST: str = os.getenv("SMTP_HOST", "")
    SMTP_PORT: int = int(os.getenv("SMTP_PORT", "465"))
    SMTP_USER: str = os.getenv("SMTP_USER", "")
    SMTP_PASSWORD: str = os.getenv("SMTP_PASSWORD", "")
    SMTP_FROM: str = os.getenv("SMTP_FROM", "")
    SMTP_TO: str = os.getenv("SMTP_TO", "")

    # ---- 续费提醒 ----
    RENEWAL_THRESHOLD_DAYS: int = int(os.getenv("RENEWAL_THRESHOLD_DAYS", "30"))


settings = Settings()
