#!/usr/bin/env python3
"""Update the top summary fields in live_account_state.json while preserving orders."""

from __future__ import annotations

import argparse
import datetime as dt
import json
import sys
from pathlib import Path


STATE_PATH = Path(__file__).resolve().parent / "live_account_state.json"
STATE_JS_PATH = Path(__file__).resolve().parent / "live_account_state.js"


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("--mode", required=True)
    parser.add_argument("--market-status", default=None)
    parser.add_argument("--verdict", required=True)
    parser.add_argument("--next-check", required=True)
    parser.add_argument("--summary", default=None, help="Kakao summary. If omitted, stdin is used.")
    args = parser.parse_args()

    state = json.loads(STATE_PATH.read_text(encoding="utf-8"))
    summary = args.summary if args.summary is not None else sys.stdin.read().strip()
    if not summary:
        summary = state.get("kakao_summary", "")

    state["state_version"] = dt.datetime.now().strftime("%Y%m%d-%H%M%S")
    state["updated_at"] = dt.datetime.now(dt.timezone.utc).astimezone().isoformat(timespec="seconds")
    state["mode"] = args.mode
    if args.market_status:
        state["market_status"] = args.market_status
    state["verdict"] = args.verdict
    state["next_check"] = args.next_check
    state["kakao_summary"] = summary

    state_json = json.dumps(state, ensure_ascii=False, indent=2)
    STATE_PATH.write_text(state_json + "\n", encoding="utf-8")
    STATE_JS_PATH.write_text("window.LIVE_ACCOUNT_STATE = " + state_json + ";\n", encoding="utf-8")
    print(STATE_PATH)
    return 0


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