데몬이 시스템 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>
2.4 KiB
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
- Planning: planning.md
- Design: design.md
- Implementation: implementation.md
- Verification: verification.md
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). - 운영 설정은 기존
--configTOML(REQ-048)에 키 추가로 편입(신규 설정 표면 아님). from_env 는 KST/00:00 기본.