#!/usr/bin/env python3
"""
kis_trader/utils/trade_time.py — 실매·백테 시각 파싱 공통
========================================================
실매 buy_time: ``YYYY-MM-DD HH:MM:SS``
백테 봉/틱키: ``YYYYMMDDHHMM`` / ``YYYYMMDDHHMMSS``

엔진별 ``_t2dt`` 가 ``[:12]``+``%Y%m%d%H%M`` 만 쓰면 실매 시간컷이
``None`` 으로 무력화된다 → 전 전략이 이 함수를 쓰도록 통일.
"""
from __future__ import annotations

from datetime import datetime


def parse_trade_datetime(t: str) -> datetime:
    """실매·백테 시각 문자열 → datetime. 실패 시 ValueError."""
    s = str(t or "").strip()
    if not s:
        raise ValueError("empty time")
    if "-" in s or "T" in s or ":" in s:
        compact = (
            s.replace("-", "").replace(":", "").replace(" ", "").replace("T", "")
        )
        digits = "".join(c for c in compact if c.isdigit())
    else:
        digits = "".join(c for c in s if c.isdigit())
    if len(digits) >= 14:
        return datetime.strptime(digits[:14], "%Y%m%d%H%M%S")
    if len(digits) >= 12:
        return datetime.strptime(digits[:12], "%Y%m%d%H%M")
    raise ValueError(f"bad time: {t!r}")
