# -*- coding: utf-8 -*-
"""应用配置：开发用 SQLite，生产用 MySQL（DATABASE_URL 环境变量）。
部署架构：店员H5(静态)放FTP国内 + 后台/API/DB放新加坡yaocloud.win。
"""
import os

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

DEBUG = os.environ.get("FLASK_DEBUG", "0") == "1"
# 生产判定：配置了 DATABASE_URL(MySQL) 且非 debug 即视为生产。
# （项目约定：开发零依赖 SQLite，生产用 MySQL，DATABASE_URL 即天然的 prod 标记）
IS_PROD = bool(os.environ.get("DATABASE_URL")) and not DEBUG


def _resolve_secret_key():
    """生产环境 SECRET_KEY 必须显式配置且为强随机值；否则启动即失败（fail-fast）。"""
    sk = (os.environ.get("SECRET_KEY") or "").strip()
    unsafe = (not sk) or sk.startswith("dev-") or sk in (
        "change-me-to-a-random-string", "please-change-me", "admin123")
    if unsafe and IS_PROD:
        raise RuntimeError(
            "SECRET_KEY 未配置或为不安全默认值：生产环境必须经环境变量 SECRET_KEY 设置一个强随机值（见 .env.example）。")
    return sk or "dev-secret-change-me"


class Config:
    SECRET_KEY = _resolve_secret_key()

    # 默认 SQLite 零依赖开发；设置 DATABASE_URL 则用 MySQL/其他
    default_sqlite = "sqlite:///" + os.path.join(BASE_DIR, "staffapp.db")
    SQLALCHEMY_DATABASE_URI = os.environ.get("DATABASE_URL") or default_sqlite
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 上传目录（集赞截图/商品图）
    UPLOAD_DIR = os.environ.get("UPLOAD_DIR") or os.path.join(BASE_DIR, "uploads")
    MAX_CONTENT_LENGTH = 16 * 1024 * 1024  # 16MB

    # xyx 新营销看板目录（销售看板图标用：后台上传 xls 重生成 kb.html）。
    # 生产 = /home/ubuntu/html/data/xyxkb/xyx（容器挂载）；未配置则上传/同步功能禁用（可见范围仍可用）。
    XYX_DIR = os.environ.get("XYX_DIR")

    # CORS：经环境变量 CORS_ORIGINS（逗号分隔）显式配置；
    # 未配置时——生产默认空（最严格，同域部署本就不触发 CORS；跨域需显式列出），
    # 仅开发回退到本地来源。即：生产永远不会默认含 localhost/null。
    _cors_env = (os.environ.get("CORS_ORIGINS") or "").strip()
    if _cors_env:
        CORS_ORIGINS = [o.strip() for o in _cors_env.split(",") if o.strip()]
    elif IS_PROD:
        CORS_ORIGINS = []
    else:
        CORS_ORIGINS = [
            "http://ferp.yaopharma.com",
            "https://ferp.yaopharma.com",
            "http://localhost:8080",   # 本地开发H5
            "http://127.0.0.1:8080",
            "null",                    # 本地 file:// 打开H5调试
        ]

    # JWT（H5认证），复用 SECRET_KEY
    JWT_EXPIRE_DAYS = 7

    # H5 前端实际部署地址（后台发短信/链接等场景用）
    H5_BASE_URL = os.environ.get("H5_BASE_URL", "http://ferp.yaopharma.com/Files/yyf/staff/")

    PER_PAGE = 20
    WTF_CSRF_TIME_LIMIT = None

    # Session cookie 安全属性（后台 session 认证）：
    # HttpOnly 防 JS 读取；SameSite=Lax 削弱 CSRF；Secure 仅生产(HTTPS)开启，避免本地 http 不下发。
    SESSION_COOKIE_HTTPONLY = True
    SESSION_COOKIE_SAMESITE = "Lax"
    SESSION_COOKIE_SECURE = IS_PROD
