"""
AkDevz AI Market Intelligence — Python Analytics Configuration
Loads environment variables and sets deterministic operational thresholds.
"""
import os
from pathlib import Path
from typing import Optional
from pydantic import BaseModel

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

def load_env(path: Path) -> dict:
    env_vars = {}
    if path.exists():
        with open(path, "r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()
                if not line or line.startswith("#"):
                    continue
                if "=" in line:
                    k, v = line.split("=", 1)
                    k = k.strip()
                    v = v.strip().strip("\"'")
                    env_vars[k] = v
                    os.environ[k] = v
    return env_vars

_raw_env = load_env(ENV_PATH)

class Settings(BaseModel):
    # App
    app_name: str = os.getenv("APP_NAME", "AkDevz AI Market Intelligence")
    app_env: str = os.getenv("APP_ENV", "production")
    timezone: str = os.getenv("APP_TIMEZONE", "Asia/Kolkata")
    deployment_mode: str = os.getenv("DEPLOYMENT_MODE", "cpanel")

    # FYERS API V3 (Standard Plan)
    fyers_app_id: str = os.getenv("FYERS_APP_ID", "")
    fyers_secret_key: str = os.getenv("FYERS_SECRET_KEY", "")
    fyers_redirect_uri: str = os.getenv("FYERS_REDIRECT_URI", "")
    fyers_req_per_second: int = int(os.getenv("FYERS_REQ_PER_SECOND", "5"))
    fyers_req_per_minute: int = int(os.getenv("FYERS_REQ_PER_MINUTE", "50"))
    fyers_req_per_day: int = int(os.getenv("FYERS_REQ_PER_DAY", "5000"))
    fyers_max_symbols_quote: int = int(os.getenv("FYERS_MAX_SYMBOLS_PER_QUOTE", "50"))
    fyers_max_ws_symbols: int = int(os.getenv("FYERS_MAX_WS_SYMBOLS", "100"))

    # AI Intelligence (Groq & Gemini)
    ai_provider: str = os.getenv("AI_PROVIDER", "groq")
    groq_api_key: str = os.getenv("GROQ_API_KEY", "")
    groq_model: str = os.getenv("GROQ_MODEL", "openai/gpt-oss-120b")
    gemini_api_key: str = os.getenv("GEMINI_API_KEY", "")
    gemini_model: str = os.getenv("GEMINI_MODEL", "models/gemini-3.8-flash")
    gemini_timeout_sec: int = int(os.getenv("GEMINI_TIMEOUT_SECONDS", "30"))

    # Database
    db_connection: str = os.getenv("DB_CONNECTION", "mysql")
    db_host: str = os.getenv("DB_HOST", "127.0.0.1")
    db_port: int = int(os.getenv("DB_PORT", "3306"))
    db_database: str = os.getenv("DB_DATABASE", "rmjhsmjb_trade")
    db_username: str = os.getenv("DB_USERNAME", "rmjhsmjb_trade")
    db_password: str = os.getenv("DB_PASSWORD", "rmjhsmjb_trade")

    # Risk & Quality
    max_data_age_sec: int = int(os.getenv("DATA_FRESHNESS_INTRADAY_MAX_AGE_SEC", "60"))
    min_reward_risk_ratio: float = float(os.getenv("RISK_MIN_REWARD_TO_RISK_RATIO", "1.5"))
    max_option_spread_pct: float = float(os.getenv("RISK_MAX_OPTION_SPREAD_PCT", "3.0"))
    min_option_oi: int = int(os.getenv("RISK_MIN_OPTION_OPEN_INTEREST", "50000"))

settings = Settings()
