feat(signal_v2-phase3a): scheduler NXT windows (20:00-23:30 / 04:30-07:00)

NXT 시간외 거래 시간대도 5분 cron 폴링 활성화. 23:30-04:30 dead zone
(KIS 점검) → 04:30 까지 skip. 기존 _seconds_until_next_market_open
(휴장일/주말용) 와 별개로 _seconds_until_nxt_or_market_open 신설.

3 new tests, scheduler suite 11 passed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-16 05:09:27 +09:00
parent 68eb7b073c
commit eafa73edb1
2 changed files with 65 additions and 16 deletions

View File

@@ -26,10 +26,10 @@ def test_next_interval_post_market_5min():
def test_next_interval_overnight_skip_to_next_morning():
now = _kst(2026, 5, 18, 22, 0) # Monday 22:00
now = _kst(2026, 5, 18, 2, 30) # Monday 02:30 (dead zone, not NXT window)
interval = _next_interval(now)
# Next polling: Tuesday 07:00 (9 hours away)
assert 9 * 3600 - 60 < interval < 9 * 3600 + 60
# Dead zone 23:30-04:30 → next 04:30 is ~2h away
assert 2 * 3600 - 60 < interval < 2 * 3600 + 60
def test_next_interval_holiday_skip():
@@ -54,8 +54,28 @@ def test_next_interval_at_market_close_boundary():
def test_next_interval_at_polling_window_end_boundary():
"""20:00:00 정확 second → overnight skip (다음 영업일 07:00 까지)."""
now = _kst(2026, 5, 18, 20, 0) # Monday 20:00:00
"""23:30:00 정확 second → dead zone skip (다음 04:30 까지)."""
now = _kst(2026, 5, 18, 23, 30) # Monday 23:30:00 (NXT_PRE_END boundary)
interval = _next_interval(now)
# Next: Tuesday 07:00 — 11h away
assert 11 * 3600 - 60 < interval < 11 * 3600 + 60
# Dead zone 23:30-04:30 → next 04:30 is ~5h away
assert 5 * 3600 - 60 < interval < 5 * 3600 + 60
def test_next_interval_nxt_evening_5min():
"""22:00 평일 (NXT 야간) → 300 (5분)."""
now = _kst(2026, 5, 18, 22, 0)
assert _next_interval(now) == 300
def test_next_interval_nxt_dawn_5min():
"""05:30 평일 (NXT 새벽) → 300 (5분)."""
now = _kst(2026, 5, 18, 5, 30)
assert _next_interval(now) == 300
def test_next_interval_dead_zone_skip():
"""02:00 평일 (dead zone 23:30-04:30) → 다음 04:30 까지 (~9000s)."""
now = _kst(2026, 5, 18, 2, 0)
interval = _next_interval(now)
# 02:00 → 04:30 = 2.5h = 9000s
assert 9000 - 60 < interval < 9000 + 60