#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""全局配置。敏感项从同目录 .env 读取，真实环境变量（如 cron 注入）优先。"""
import os

BASE_DIR = os.path.dirname(os.path.abspath(__file__))


def _load_dotenv(path):
    """极简零依赖 .env 加载器：把 KEY=VALUE 写入 os.environ。
    已存在的真实环境变量优先（不覆盖），故 cron/命令行注入仍可压过 .env。
    支持 # 注释、空行、行内 KEY=VALUE，值两侧成对的单/双引号会被去掉。"""
    try:
        with open(path, "r", encoding="utf-8") as fp:
            for raw in fp:
                line = raw.strip()
                if not line or line.startswith("#") or "=" not in line:
                    continue
                key, _, val = line.partition("=")
                key, val = key.strip(), val.strip()
                if len(val) >= 2 and val[0] == val[-1] and val[0] in "\"'":
                    val = val[1:-1]
                if key:
                    os.environ.setdefault(key, val)
    except FileNotFoundError:
        pass


_load_dotenv(os.path.join(BASE_DIR, ".env"))

# ---- Zectrix 极趣云平台 API ----
API_BASE = "https://cloud.zectrix.com/open/v1"
API_KEY = os.environ.get("ZECTRIX_API_KEY", "")

# 目标设备 ID（硬件 MAC）。必填——直接据此调推送接口，不再获取设备列表。
DEVICE_ID = os.environ.get("ZECTRIX_DEVICE_ID", "")

# 推送参数
PAGE_ID = "1"        # 持久化页面编号 1-5
DITHER = False       # 纯黑白点阵图用硬阈值最锐利；设备无真灰阶，勿开抖动

# ---- 画布 ----
WIDTH, HEIGHT = 400, 300

# ---- 资源路径 ----
FONT_PATH = os.path.join(BASE_DIR, "fonts", "fusion-pixel-12px-proportional-zh_hans.otf")
OUTPUT_DIR = os.path.join(BASE_DIR, "output")
OUTPUT_PATH = os.path.join(OUTPUT_DIR, "dashboard.png")

# ---- 橘喵 jm-devops 后端（今日经营 / 近30天趋势 数据源）----
# 鉴权方式：设备密钥授权（grant_type=client_secret，免验证码）。
# 用 CLIENT_ID + CLIENT_SECRET 调 /auth/login 换 token，再带 Bearer 调统计接口（详见 jm_api.py）。
# CLIENT_SECRET 等价于长期凭证，务必走 HTTPS、优先用环境变量覆盖、可在后端 sys_client 轮换。
BASE_API = os.environ.get("JM_BASE_API", "https://admin.jumiaotandian.com/prod-api")
CLIENT_ID = os.environ.get("JM_CLIENT_ID", "")
CLIENT_SECRET = os.environ.get("JM_CLIENT_SECRET", "")
GRANT_TYPE = os.environ.get("JM_GRANT_TYPE", "client_secret")
TENANT_ID = os.environ.get("JM_TENANT_ID", "000000")

# ---- 和风天气（QWeather）数据源 ----
# 专属 API Host 与 Key 在 https://console.qweather.com/setting 查看，须用环境变量配置；
# 未配置时天气区显示占位 "--"，不影响其余渲染与推送。
QWEATHER_HOST = os.environ.get("QWEATHER_HOST", "")  # 用户专属 API Host
QWEATHER_KEY = os.environ.get("QWEATHER_KEY", "")
# 定位固定为南京·秦淮区。和风经纬度格式为「经度,纬度」
WEATHER_LOCATION = os.environ.get("WEATHER_LOCATION", "118.788,32.014")
WEATHER_LOC_NAME = "南京·秦淮"
# 天气缓存：业务数据每分钟刷新，但天气 15 分钟才重新拉一次（cron 每次独立进程，缓存须落盘）。
WEATHER_TTL = int(os.environ.get("WEATHER_TTL", "900"))  # 秒，默认 900=15 分钟
WEATHER_CACHE_PATH = os.path.join(BASE_DIR, ".weather_cache.json")
# 近30天趋势缓存：recent-days 每天只更新一次，按日期为 key 缓存，当天命中即不再请求。
TREND_CACHE_PATH = os.path.join(BASE_DIR, ".trend_cache.json")
