Files
trex-core/docs/batches/bat-018_20260608_trading-date-timezone-daily-preallocation/index.md
T
genichinandClaude Opus 4.8 0b7db66463 feat(runtime): dcy-014 trading_date KST 타임존 분리 + 일일 슬롯 preallocation (BAT-018)
데몬이 시스템 UTC 날짜로 슬롯을 1회만 preallocate 해 trading_date 가 KST 캘린더와
어긋나고 재시작 없이는 다음날 슬롯이 안 생기던 문제(issue #14) 정정.

거버넌스: 전부 change-req (신규 REQ 없음, dcy-014 OQ-3; 스케줄러는 REQ-030 패턴 준용).
- REQ-005: trading_date 를 설정 타임존(기본 Asia/Seoul) 기준 계산(timestamp 는 UTC
  유지). DailyPreallocationScheduler 신규 — TZ 일자당 1회 멱등 fire, 재시작 없이
  다음날 슬롯 자동 생성. setup() 배선 + trex-preallocation 스레드
- REQ-048: TOML trading_timezone/daily_preallocation_time 키 + from_config 전파
- REQ-009: runtime-flows/data-model 정합 + instance.example.toml

OQ-1 기본 00:00(TZ 자정, TOML 설정 가능) / OQ-2 매 캘린더일 생성(거래일 캘린더 후속).
멱등 preallocate 로 중복 tick·다중 인스턴스 중복 생성 0.

검증: 단위 302 passed/32 skipped, 인프라 게이트(PG+RabbitMQ) 334 passed, ruff clean.
신규 test_preallocation_scheduler(고정 clock) + test_instance_config 확장.
BAT-018 release-candidate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 15:39:04 +09:00

2.4 KiB

BAT-018: trading_date 설정 타임존(KST) 분리 + 일일 슬롯 preallocation (issue #14)

  • Status: release-candidate
  • Profile: standard
  • Source Discovery: dcy-014
  • Included REQ: REQ-005 (CHG-20260608-01), REQ-048 (CHG-20260608-01), REQ-009 (CHG-20260608-01)

Summary

  • dcy-014(당일 슬롯 생성 기준 시간을 KST(설정 가능)로 분리 — trading_date 타임존 분리 + 일자 경계 preallocation, issue #14)을 단일 standard batch 로 delivery 한다. 거버넌스는 dcy-014 OQ-3 결정대로 전부 change-req, 신규 REQ 없음(스케줄러는 REQ-030 SnapshotScheduler 패턴 준용).
  • 핵심: trading_date 를 시스템 UTC 가 아니라 설정 타임존(기본 Asia/Seoul) 기준으로 계산하고, timestamp 는 UTC 유지. 데몬 시작 1회 UTC preallocation 을 DailyPreallocationScheduler(tick 루프 + TZ 일자당 1회 멱등 fire)로 대체해 재시작 없이 다음날 슬롯이 자동 생성된다.

Scope

  • In Scope:
    • trading_date 의 설정 가능한 타임존 분리(기본 KST) + timestamp UTC 유지 (REQ-005)
    • TZ 일자 경계 기준 일일 멱등 preallocation 스케줄러 + daemon 배선 (REQ-005)
    • 타임존·트리거 시각 TOML 설정(trading_timezone/daily_preallocation_time) (REQ-048)
    • runtime-flows/data-model 문서 갱신 (REQ-009)
  • Out of Scope:
    • timestamp 저장 형식 변경(UTC 유지)
    • 슬롯 용량/total_slots 정책 변경
    • 거래일 캘린더(주말·공휴일 비거래일 제외) — 매 캘린더일 생성으로 확정(OQ-2), 캘린더 도입은 후속 분리
    • REQ-002(slot 도메인) 본문 변경 — trading_date: date 시그니처 유지, TZ 계산은 호출부(스케줄러)에서 수행(A-3)

Documents

Notes

  • Source discovery 단일(dcy-014). OQ-1(기본 00:00 TZ 자정·TOML 설정)·OQ-2(매 캘린더일 생성)·OQ-3(전부 change-req) Answered.
  • 스케줄러는 SnapshotScheduler(REQ-030)의 KST 일자당 1회 fire + tick 루프 패턴을 준용(A-1).
  • 멱등성(A-2): preallocate_daily_slots 가 date 멱등 → 일일 재실행·다중 인스턴스·중복 tick 안전(NFR-2).
  • 운영 설정은 기존 --config TOML(REQ-048)에 키 추가로 편입(신규 설정 표면 아님). from_env 는 KST/00:00 기본.