#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# NQ 29,204 도달 시 1회 알림. 리셋과 무관 — SOXL 증량 검토 신호일 뿐.
import os, re, json, datetime, urllib.request, urllib.parse

BASE = os.path.expanduser("~/Claude/Projects/에이전트구축")
NQLEV = os.path.join(BASE, "nq_levels.py")
FLAG = os.path.join(BASE, "watch_nq_state.json")
TRIGGER = 29204

def send(msg):
    s = open(NQLEV, encoding="utf-8").read()
    tok = re.search(r'BOT_TOKEN\s*=\s*["\']([^"\']+)', s).group(1)
    cid = re.search(r'CHAT_ID\s*=\s*["\']?([^"\'\s]+)', s).group(1)
    d = urllib.parse.urlencode({"chat_id": cid, "text": msg}).encode()
    urllib.request.urlopen(f"https://api.telegram.org/bot{tok}/sendMessage", d, timeout=15)

def nq():
    u = "https://query1.finance.yahoo.com/v8/finance/chart/NQ=F?interval=1m&range=1d"
    r = urllib.request.Request(u, headers={"User-Agent": "Mozilla/5.0"})
    d = json.load(urllib.request.urlopen(r, timeout=15))
    return float(d["chart"]["result"][0]["meta"]["regularMarketPrice"])

try: st = json.load(open(FLAG))
except Exception: st = {}
today = str(datetime.date.today())
if st.get("date") != today: st = {"date": today}

p = nq()
now = datetime.datetime.now().strftime("%m-%d %H:%M")
if p <= TRIGGER and not st.get("fired"):
    send(f"[NQ {TRIGGER:,} 도달] 현재 {p:,.0f}")
    st["fired"] = True
    print(f"{now} 발송함 {p:,.2f}")
else:
    print(f"{now} NQ {p:,.2f} — 트리거까지 {p-TRIGGER:,.0f}p")
json.dump(st, open(FLAG, "w"))
