"""
AkDevz AI Market Intelligence — Intraday Monitoring Worker
Executes monitoring sweep across selected universe, updates regimes, and checks alert conditions.
Compatible with cPanel single-pass execution or VPS persistent loop.
"""
import sys
import json
import time
import argparse
from pathlib import Path

PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent
if str(PROJECT_ROOT) not in sys.path:
    sys.path.insert(0, str(PROJECT_ROOT))

from python.workers.analysis_worker import run_analysis
from python.fyers.rate_limiter import rate_limiter

def monitor_universe(symbols: list, continuous: bool = False, interval_sec: int = 60) -> dict:
    """
    Sweeps active symbols, triggers analysis worker logic, and generates aggregate state summary.
    """
    summary = {
        "timestamp": int(time.time()),
        "symbols_monitored": len(symbols),
        "results": {},
        "alerts_triggered": []
    }

    for sym in symbols:
        try:
            analysis = run_analysis(sym, mode="quick")
            summary["results"][sym] = {
                "decision": analysis.get("decision", "WAIT"),
                "bias": analysis.get("market_bias", "UNCERTAIN"),
                "regime": analysis.get("regime", "UNKNOWN"),
                "ltp": analysis.get("ltp", 0.0),
                "vwap": analysis.get("vwap", 0.0),
            }

            # Check for high-priority alert triggers
            decision = analysis.get("decision")
            if decision in ["BUY_CE", "BUY_PE"]:
                summary["alerts_triggered"].append({
                    "symbol": sym,
                    "type": "CANDIDATE_TRIGGERED",
                    "severity": "HIGH",
                    "message": f"Actionable setup triggered for {sym}: {decision} ({analysis.get('regime')})"
                })
        except Exception as e:
            summary["results"][sym] = {
                "decision": "ERROR",
                "message": str(e)
            }

    summary["rate_limits"] = rate_limiter.get_stats()
    return summary

def main():
    parser = argparse.ArgumentParser(description="AkDevz Monitoring Worker")
    parser.add_argument("--symbols", type=str, default="NSE:NIFTY50-INDEX,NSE:BANKNIFTY-INDEX", help="Comma-separated symbols")
    parser.add_argument("--continuous", action="store_true", help="Run continuously in VPS mode")
    parser.add_argument("--interval", type=int, default=60, help="Poll interval in seconds")
    args = parser.parse_args()

    symbol_list = [s.strip() for s in args.symbols.split(",") if s.strip()]

    if args.continuous:
        print(json.dumps({"status": "STARTED_VPS_CONTINUOUS_MODE", "symbols": symbol_list}))
        while True:
            res = monitor_universe(symbol_list, continuous=True, interval_sec=args.interval)
            print(json.dumps(res))
            time.sleep(args.interval)
    else:
        # Standard cPanel single pass execution
        res = monitor_universe(symbol_list, continuous=False)
        print(json.dumps(res, indent=2))

if __name__ == "__main__":
    main()
