- batch_analysis_scheduler: recommendations:latest SETEX (TTL 1800s)
- auto_trade_scheduler: Redis GET → cache miss 시 DB fallback
- 포맷 정규화: recommendations 리스트 → recommendations_by_rule dict 자동 변환
- backend/app/core/redis.py 신규 생성
- TTL 상수: TTL_TICK/QUOTE=10s, RECOMMENDATIONS=1800s, ANALYSIS=3600s
- init_redis() / close_redis() → FastAPI lifespan 훅
- setex_json() / get_json() / delete_key() 헬퍼
- Redis 미연결 시 경고 로그 후 non-blocking 계속 동작
- kis_realtime_stream.py: tick/quote 수신 즉시 Redis SETEX 캐시
- _cache_realtime_data() 모듈 함수 추가
- tick:{code} / quote:{code} 키 저장 (API 없이 현재가 조회 가능)
- main.py lifespan: init_redis() / close_redis() 호출 추가
① regime 파라미터 누락 → MarketRegime.BULL 기본값으로 수정
(기존 코드 런타임 TypeError 버그 — check_exit_signal 첫 인자 누락)
② trailing_high 미전달 → 최근 10봉 최고가로 계산하여 전달
(트레일링 스탑 기능 실제 동작 가능)
③ remaining_pct 업데이트 수식 오류
- 기존: remaining_pct - sell_pct (2차 이후 잘못된 비율)
- 수정: remaining_pct * (1 - sell_pct) (정확한 잔여 비율)
예) remaining=0.70, sell_pct=0.50 시
기존: 0.70 - 0.50 = 0.20 (잘못됨)
수정: 0.70 × 0.50 = 0.35 (올바름)