2026-06-12 사이드카 날 VI 폭주(~1,000건) 실증 결과:
- 9068은 발동/해제가 아니라 VI 종류(1=정적, 2=동적, 3=동적+정적)
→ 구 매핑은 동적 VI를 통째로 무시하고, 해제 이벤트도 active로 덮어썼음
- 발동 이벤트는 1224(해제시각)='000000', 해제 이벤트는 시각이 참
→ active = release_time in ('','000000') 으로 교체, 1223 발동시각 추가 저장
- 1h는 구독 무관 시장 전역 broadcast임을 확인 (주석 기록)
- 실증용 raw 로그 제거 (폭주 날 ~2,000줄 — 역할 완료)
- 토스트: 발동시각 표시 추가, '000000'은 해제 표시 생략
- TTL 백스톱(_vi_expired 180s)은 해제 메시지 유실 대비로 유지
라이브 검증: 002780 동적 VI 발동(09:09:08) → active=True 정상 포착
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 관찰(2026-06-11): VI 발동 1h 이후 해제 메시지가 안 오고 1224(해제시각)도
발동시각과 동일 → active=true 박제, 배지가 안 사라짐
- get_vi/active_vis 읽기 시점에 발동 후 180초(2분+임의연장30s+여유) 경과 시
active=False 처리 (_vi_expired). 저장 원본은 유지
- 1h 원본 필드 stderr 로그 추가 — 9068/1224 매핑 실증용 (VI 드물어 부담 없음)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
⚡VI 탭 시 그 종목의 실시간 VI 정보(적용구분·방향·발동가·발동등락률·당일
발동횟수·해제시각)를 설명과 함께 표시. window.__rtState.vi[code] 사용.
허브에 발동횟수(1490) 캡처 추가.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- realtime_hub: 0B/1h 구독을 _AL(통합/SOR)로 전환 → 정규장 KRX + NXT 시간대
NXT 체결을 한 구독으로 수신(수신 시 거래소 접미사 제거 후 bare 저장).
NXT 당일평가손익 실시간 갱신 미동작 근본 수정. 0B 시/고/저(16/17/18) 캡처
- behive_web: WS 연결 시 보유 가격보정 ka10095 2콜 skip(완전 중복),
관심·감시 시세도 허브 메모리 우선 충당(OHLC·마크는 서버 렌더 유지, mark는
exchange 필드로 판정) → 시세성 키움 호출 중복 제거
- VI 배지: 자동갱신 swap 직후 마지막 WS 상태 즉시 재적용(깜빡임 제거),
codesOnPage가 보유행(:held)·영문 6자리 코드도 수집 → 보유종목까지 VI 표시
- 상단바 WS 연결 상태 점(초록/빨강/회색) 추가 + 탭 시 상태 토스트
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
30분 고정 폴링 → 다음 영업일 07:00까지 계산해 자되 6시간 상한.
주말·휴장·연휴 정확히 건너뜀(_next_preopen_dt + _load_holidays). 휴장일 깨우기 48→4회/일.
6h 상한은 날짜계산 오류 시에도 자가교정하는 backstop. 개장 임박(07:00~08:00)은 여전히 60s.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
고정 60s 폴링 → 평일 07:00~08:00(NXT 프리마켓 08:00 임박)만 60s,
그 외 장외(밤·주말·휴장)는 30분. 밤새 무의미한 1분 폴링 제거.
30분 상한은 자가교정용(개장 오버슬립 방지). 휴장·주말은 phase!=closed 라 자동 30분.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
장외·주말·휴장 시 키움 WS 연결 안 함(재연결 폭주·로그 노이즈 방지).
behive_web._market_phase_state() 지연 import 재사용(active=정규장·NXT만 연결).
장 마감되면 수신 루프가 연결 종료 후 대기 모드(60s 폴링), 개장 시 자동 재연결.
판정 실패 시 보수적으로 연결 유지(fail-open).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>