""" 알림 스레드용 mutable state — 사용자별 격리. 모든 key 는 (user_id, ...) tuple 로 시작. 사용자별 alert_symbol 도 별도 dict. FastAPI 프로세스 lifetime 동안 sys.modules 캐싱으로 보존. 옛 글로벌 변수 (alert_symbol, last_report_date) 는 backward-compat 으로 남김. """ import threading # (user_id, interval, key) 별 마지막 알림 시각 (cooldown) last_alert = {} # (user_id, interval, key) 별 마지막 발사 candle open_time last_fired_candle = {} # (user_id, interval) 별 진입 추적 — value = entry_record dict or None long_entry = {} short_entry = {} # 사용자별 pending forming candle 감시 — element = {"user_id", "interval", "direction", ...} pending_groups = [] # (user_id, interval) tuple 셋 — 초기 silent sync 완료 표시 synced_intervals = set() # (user_id, interval, sig) 별 forming candle 연속 True 카운트 signal_seen_count = {} # 사용자별 monitored symbol — { user_id: "BTCUSDT" } alert_symbol_by_user = {} # 사용자별 마지막 일일 리포트 발송 일자 — { user_id: "YYYY-MM-DD" } last_report_date_by_user = {} # 옛 글로벌 (legacy, 미사용 — 일부 옛 코드 참조 위해 남김) alert_symbol = "BTCUSDT" alert_interval = "5m" last_report_date = None alert_lock = threading.Lock() alert_started = False daily_report_started = False