"""GAS run_all()을 Gitea CI 스케줄러에서 원격 트리거.

언어 선택: Python — 이미 이 저장소의 모든 CI/도구가 Python이고(requests만으로 HTTP POST
한 번이면 충분), 새 언어를 도입할 이유가 없다(불필요한 복잡성 증가 경계).

대상 엔드포인트: src/gas/core/gas_lib.gs:doPost action="trigger_run_all" — 공유 비밀키로
보호된 GAS 웹앱. run_all()은 데이터 갱신/분석만 수행하며 매수/매도 주문을 실행하지
않는다(governance/rules/06,07과 동일 원칙).

필요한 자격정보(Windows 환경변수, KIS와 동일한 레지스트리 폴백 사용):
  GAS_WEBAPP_URL            — Apps Script 배포 웹앱 URL
  RUN_ALL_TRIGGER_SECRET    — gas_lib.gs Script Properties에 설정한 것과 동일한 값
"""
from __future__ import annotations

import json
import sys
from pathlib import Path

import requests

ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
    sys.path.insert(0, str(ROOT))

from src.quant_engine.kis_api_client_v1 import _read_env_var  # 동일한 env+registry 폴백 재사용


def trigger_run_all(timeout_sec: int = 280) -> dict:
    webapp_url = _read_env_var("GAS_WEBAPP_URL")
    secret = _read_env_var("RUN_ALL_TRIGGER_SECRET")
    if not webapp_url or not secret:
        return {"status": "ERROR", "message": "GAS_WEBAPP_URL/RUN_ALL_TRIGGER_SECRET 환경변수 없음"}

    resp = requests.post(
        webapp_url,
        json={"action": "trigger_run_all", "secret": secret},
        timeout=timeout_sec,
    )
    resp.raise_for_status()
    return resp.json()


def main() -> int:
    result = trigger_run_all()
    print(json.dumps(result, ensure_ascii=False, indent=2))
    return 0 if result.get("status") == "OK" else 1


if __name__ == "__main__":
    raise SystemExit(main())
