"""
从 LPL/LOL orderbook JSONL 录制中重建指定时间窗口的盘口。

示例：
    python3 scripts/replay_lpl_orderbook.py \
      --slug lol-lgd-edg-2026-04-23-game1 \
      --at "2026-04-23 17:04:22+08:00" \
      --window-seconds 60
"""
from __future__ import annotations

import os
import sys
from pathlib import Path

import click
from loguru import logger

ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if ROOT not in sys.path:
    sys.path.insert(0, ROOT)

from analysis.lpl_orderbook.replay import replay_orderbook_window  # noqa: E402


def _setup_logging() -> None:
    logger.remove()
    logger.add(
        sys.stderr,
        level=os.environ.get("LOG_LEVEL", "INFO").upper(),
        format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level:<7}</level> | {message}",
        colorize=True,
    )


@click.command()
@click.option("--slug", required=True, help="已录制的 market slug")
@click.option("--at", "at_time", required=True, help="要重放的时间，建议带时区，例如 2026-04-23 17:04:22+08:00")
@click.option("--window-seconds", default=60, show_default=True, type=int, help="前后窗口秒数")
@click.option(
    "--data-root",
    default="data/lpl",
    show_default=True,
    type=click.Path(file_okay=False, path_type=Path),
    help="录制数据根目录",
)
def main(slug: str, at_time: str, window_seconds: int, data_root: Path) -> None:
    _setup_logging()
    result = replay_orderbook_window(
        slug=slug,
        at=at_time,
        window_seconds=window_seconds,
        data_root=data_root,
    )
    logger.info(
        "重放完成: "
        f"processed_events={result['processed_events']} "
        f"rows={result['rows']} "
        f"output={result['output_path']}"
    )


if __name__ == "__main__":
    main()
