dcy-010(safety-sell 영속 거부 재시도 백오프) 전체 SDLC: draft-req → confirm-req → draft-batch(BAT-014 batch-lite) → run-batch-delivery → confirm-req-implemented. 2026-06-07 실 KIS LIVE SL/TP e2e에서 발견한 KIS 주문 spam 위험(영속 거부 시 매도 무한 재제출) 차단. - REQ-052 (Integration): SafetySellService per-slot 인메모리 쿨다운 (_in_cooldown/_attempt_sell/_prune_cooldown) — forced_close·stop-loss·take-profit 트리거에 min_retry_interval_sec(600s) 이내 재시도 skip(가격 poll 포함) + max_retry_warn_count(3) 도달 시 WARNING + holding 이탈 정리. market_close 제외. - REQ-053 (Configuration): SafetySellConfig min_retry_interval_sec/max_retry_warn_count + TREX_SAFETY_SELL_MIN_RETRY_INTERVAL/MAX_RETRY_WARN_COUNT env (additive) - REQ-054 (Documentation): runtime-flows 쿨다운 flow + 가격체크 tr_id(FHKST01010100) 정정 인메모리 only(DB/스레드/인터페이스 변경 없음), default 미설정 시 기존 동작 불변. 검증: 신규 8 단위(쿨다운 6 + config 2), 전체 278 passed, ruff clean. REQ-052~054 Implemented, BAT-014 release-candidate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
BAT-014: safety-sell 영속 거부 재시도 쿨다운 (per-slot cooldown + 경고 + env)
- Status: release-candidate
- Profile: batch-lite
- Source Discovery: dcy-010
- Included REQ: REQ-052, REQ-053, REQ-054
Summary
- dcy-010(safety-sell 영속 거부 재시도 백오프)를 batch-lite 로 delivery 한다.
SafetySellService에 per-slot 인메모리 쿨다운(마지막 시도 시각·시도 횟수)을 추가해 영속 거부(휴장/잔고/규제) 시min_retry_interval_sec(기본 600s) 이내 재시도를 건너뛰고,max_retry_warn_count(기본 3) 도달 시 운영자 WARNING 을 발행한다.SafetySellConfigenv 2종 + runtime-flows 정합. DB/스레드/인터페이스 변경 없음(인메모리만).
Scope
- In Scope:
SafetySellServiceper-slot 쿨다운 추적(_last_attempt/_attempt_count) + skip/만료 재시도 + 경고 로그 + holding 이탈 정리, market_close 제외 (REQ-052)SafetySellConfigmin_retry_interval_sec/max_retry_warn_countenv 2종 (REQ-053)docs/runtime-flows.mdsafety-sell tick 쿨다운 단계 반영 (REQ-054)
- Out of Scope:
- ExecutionService→SafetySellService 거부 사유 피드백 채널, 거부 원인별 차등 쿨다운, 쿨다운 DB 영속, 수동 해제 API, market_close 별도 쿨다운.
Documents
- Planning: planning.md
- Implementation: implementation.md
- Verification: verification.md
Notes
- Profile batch-lite: 소규모(단일 service + config 2종 + 문서), 인메모리만, 구조/인터페이스/DB 변경 없음, 설계가 dcy-010 §4 에 완비 → Design Gate: no(design.md 불요). implementation/verification 은 해당 stage 진입 시 생성.
- OQ-1(600s)/OQ-2(3, 경고만)/OQ-3(단일 per-slot) Answered. NFR-1(인메모리)/NFR-2(무락)/NFR-4(paper reject 시뮬 테스트) 는 REQ-052 AC 로 흡수.
- 발견 근거: REL-003 Feedback / 2026-06-07 실 KIS LIVE SL/TP e2e.