- CHART_RANGE_DAYS에 '3M': 63 추가 (stock_analysis)
- /api/chart_svg 탭·패널 순서를 분봉 우선으로 재배열, 3M 패널 신설
- 기본 활성 탭은 1개월 유지
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 일별 보기: ISO 주차가 바뀌는 첫 점에 세로 점선 (주 단위 구간 인지)
- 월별 보기: 연도가 바뀌는 첫 점에 세로 점선
- per_period 모드는 기존 period-sep과 중복이라 생략, week/year 단위 미표시
- 스타일 .grid-v — 가로 grid와 동일 톤 점선
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
각 탭의 개별 판단 박스 제거. 요약탭 최상단에 📌종합(가치 vs 성장·컨센서스
상충을 한 문장으로 화해: 고평가+긍정/저평가+부진/고평가+부진/저평가+긍정 4분기)
+ ✅좋은 점 / ⚠️주의할 점(두 영역 합산) 표시.
companyJudge/growthJudge → companyGC/growthGC({good,caution}) + synthNote 추가.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
기업정보·가치 탭: 밸류에이션(PER·PBR)+수익성(ROE 우수/양호/낮음/적자).
성장성·컨센서스 탭: 성장(매출·영익·EPS YoY)+목표주가/상승여력/투자의견+
리비전+서프라이즈. 규칙 기반(LLM 미경유), 표시 데이터 그대로 요약.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
⚡VI 탭 시 그 종목의 실시간 VI 정보(적용구분·방향·발동가·발동등락률·당일
발동횟수·해제시각)를 설명과 함께 표시. window.__rtState.vi[code] 사용.
허브에 발동횟수(1490) 캡처 추가.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
VI 배지를 누르면 VI 설명 토스트 표시(동적/정적VI·발동 기준·2분 단일가).
document 위임(배지는 동적 생성) + preventDefault/stopPropagation으로 행 토글 차단.
배지에 cursor:pointer 추가.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
기존 조건(d_pct_val != 0)으로 등락률이 0/None이면 .rt-daypct span을 아예
안 그렸는데, WS paintDay는 span이 있을 때만 갱신(if(sp))이라 한 번 0으로
렌더되면 실시간으로도 복구 안 돼 사라졌다. show_day_change 동안 항상 span을
그리도록 변경(값 0/None은 0.00% neutral) → WS가 라이브로 채움.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
기존엔 극값이 마지막 점이면 생략 → 저점이 현재값인 차트(가희 등)에서 저점 안 보임.
마지막 점 제외 조건 제거 → 장중가가 고/저점이어도 표시. 단 마지막 점이 신고가(ATH)면
신고가 링이 '고'를 대신(중복 방지).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
당일시가대비(vs 오늘 시가)는 갭하락 때 현재 등락율과 어긋남(예: 삼성전자
시가대비 -4.1% vs 전일대비 -7%대). 관리자 요청대로 그 봉 종가 vs 전일종가
기준으로 변경 → 마지막 봉이 현재 등락율(-7%대)과 일치.
- meta.dayOpen 제거, meta.prevClose(=ref_price) 주입
- _setOhlcText: '당일시가대비' → '전일대비' 라인
- day_open 캡처/파라미터 제거(불필요)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 당일시가(dayOpen)를 range 슬라이스 전 '오늘 첫 봉' 시가로 고정 → 1h/30min 등
구간을 좁혀도 baseline 동일. 마지막 봉 당일시가대비 = 현재가 등락율 일치.
(기존: candles[0]가 슬라이스된 구간 첫 봉이라 baseline이 틀렸음)
- 우상단 '전일대비 X%' 텍스트 제거(관리자 요청). 전일종가 기준선은 유지.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
분봉 차트 클릭(세로선) 시 OHLC 팝업에 그 봉 종가의 당일 시가(첫 봉) 대비
등락률을 표시 — 그 시점까지의 오늘 누적 등락을 한눈에. 일봉은 미표시(분봉만).
- render_svg_chart(intraday=) → meta.dayOpen(첫 봉 시가, 분봉만) 주입
- 분봉 엔드포인트 intraday=True
- _setOhlcText: 당일시가대비 라인 + 팝업 박스/닫기버튼 동적 리사이즈
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 분봉 차트(1/5/15m): prev_close를 일봉 캐시에서 못 찾으면 ka10095(현재가−전일대비)로
보강 → 모든 종목에 '전일대비 +X%'(오늘 하루 등락) 항상 표시.
- 보유종목 자세히 보기 상단에 종목명+코드(.detail-name) 추가.
- 차트 컨트롤 2번째 줄: 연도/월은 내용 크기, 유형은 기간과 동일 폭(글씨 크기 유지).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 1번째 줄: 기간/단위/차트타입(모드) 유지. 지정기간 선택 시 단위 일별 고정(비활성).
- 2번째 줄(지정기간일 때만 노출): 유형(연도별/월별) / 연도 / 월.
- 유형=연도별이면 월 드롭다운 '-' 표시·비활성, 월별이면 월 활성.
- 연도별도 단위 일별 → 그 해 전체 일별 차트(기존 월별집계에서 변경).
- CSS: .chart-controls 컬럼 레이아웃 + .cc-line 행, .cc-line-ym[hidden] 숨김.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
과거 기간(예: 4월)을 골라도 has_live 판정으로 오늘 순자산이 마지막 점·델타·
하단값으로 붙어 차트와 무관한 값이 나오던 문제. period가 이번달·올해가 아니면
(period_is_current=False) current_net/rt_owner를 None으로 → 라이브 점·라이브
갱신 모두 비활성. 과거 차트는 그 기간 끝점에서 마감, 델타·하단값이 차트와 일치.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
보유종목 표시 등락이 스냅샷(어제 NXT 종가) 기준이라 감시탭 미리보기(ka10095
실시간 전일종가)와 50원 차이로 어긋났다(예: SK이터닉스 23.83% vs 23.64%).
보유행 표시 등락(미리보기·당일등락·평가금액변동·data-rt-prevclose)과 NXT OHLC
전일종가를 마크된 시장의 ka10095(현재가−전일대비) 기준으로 통일.
원본 r은 copy로 보존(KPI·잔고 계산 영향 없음). 잔고 KPI는 prev_net 기반이라
개별 일손익 합과 50원×수량 수준 미세 괴리는 감수(관리자 승인).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- kt00018 pred_close_krx가 장 마감 후 현재가와 같은 값으로 채워지는 결함으로
KRX 당일종가/현재가 등락률이 0%로 깔리던 문제 수정 → KRX 전일종가를
ka10095(현재가−전일대비)로 산출(서버 계산값). 현재가·당일종가 등락 둘 다 정상화.
- 듀얼 OHLC 행 순서: 전일종가·현재가·시가·고가·저가·당일종가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 현재가 행: AL(통합) 현재가를 KRX·NXT 양 컬럼에 공통 표시(동일가).
등락률만 각 시장 전일종가 대비로 분리 → 가격 같고 % 다름.
- 당일종가 행 신설: 그 시장이 마감된 뒤에만(KRX 15:30·NXT 20:00 이후)
해당 시장 종가+등락 표시, 장중엔 '·'(미확정).
- _render_ohlc_mini_dual에 al_price·krx_closed·nxt_closed 파라미터 추가.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
이전 커밋에서 WS 연결 시 보유 가격보정 ka10095 2콜을 "순수 중복"으로 보고
skip했으나, 그 두 콜(KRX/NX)은 보유종목 행의 KRX·NXT 듀얼 OHLC 미니
(r['ohlc_krx']·['ohlc_nxt']) 데이터원이기도 했다. _AL 허브는 거래소별 단일
최신값만 들어 두 컬럼을 동시에 못 주므로 skip 불가 → 게이팅 제거(항상 호출).
관심·감시(단일 OHLC) 허브 충당은 그대로 유효.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
장중 차트의 오늘 값은 foot 라벨만 1초 라이브였고 점 위치는 페치 때만
갱신돼 둘이 어긋나 보였다. WS 틱마다 서버와 동일 스케일로 y를 재계산해
last-dot·live-halo·신고가 마커·라이브 점선 끝점·마지막 pt-dot을 함께 이동.
렌더 범위 밖이면 차트 가장자리로 클램프(다음 페치가 스케일 재계산).
- net-chart-last에 스케일 노출(data-rt-nw-ylo/span/top/ih/x)
- 라이브 점선에 live-seg 클래스로 baseline 점선과 구분
- rt-nw 페인트에 점·선분 이동 로직 추가
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>
load()에 추가했던 .refresh spinning(빨강) 제거 — 자동갱신마다 빨간 깜빡임 거슬림.
내용은 여전히 클리어 없이 swap. 수동 새로고침(↻)의 빨간 스핀은 manualRefresh가 그대로 유지.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
net-chart-last 라벨을 실시간 순자산으로 갱신(라이브 점일 때만). 순자산 변동분=손익 변동분(baseline·cf 세션중 고정)이라 net/pnl/period 모드 공통 처리.
SVG 점 위치는 새로고침 시(장중 이동 미미·Y재스케일 위험 회피). setOwnerKpis에서 owner별 갱신.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5분 stale 재갱신이 resetShellLook()로 전탭을 스피너로 비우던 것 제거 → 기존 내용 유지한 채 fetch, 완료 시 교체.
로딩 표시는 새로고침(↻) 아이콘 스핀으로만(내용 그대로 보임). 실패 시 기존 내용 유지+에러 토스트.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
JS 폭측정 자동맞춤은 리셋→축소 플래시가 패널 swap/자동갱신마다 깜빡여서 제거.
대신 이름 길이로 글씨크기 클래스(stock-sm 10자+/stock-xs 14자+) 서버 렌더 시 확정 → 깜빡임 없음.
당일거래 마크(★)는 line2 보유 왼쪽으로 이동.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
line1-held .stock 이 잘릴 만하면 폭 실측해 font-size를 0.5px씩 줄여 한 줄에 맞춤(min 10px).
MutationObserver는 행 추가(패널 swap)에만 반응하도록 필터 → 실시간 1초 갱신엔 재측정 안 함(레이아웃 부하 방지). resize도 재맞춤.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
line1=뱃지+당일거래마크(★)+종목명+계좌종류(nowrap, 이름 ellipsis), line2=보유+비중, line3=태그.
미사용 .name-head 제거, .line1-held{flex-wrap:nowrap}로 긴 이름도 1줄 유지.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
line1=뱃지+종목명, line2=보유+비중, line3=태그+계좌종류(작게)로 재배치.
기존 line1에 섞여있던 태그·계좌(·star)를 line3로 분리. 각 줄 flex 단일행이라 3줄 고정.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
line1이 flex-wrap이라 이름 길면 종목명이 다음줄로 내려가 매수등급 배지만 윗줄에 남음(KODEX AI핵심전력설비 등).
배지+이름을 .name-head로 묶고 이름은 min-width:0 ellipsis 처리 → 한 묶음 유지, 길면 잘림.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
line2 flex 자식인 비중 칩 텍스트가 좁은 폭(삼성전자 등 보유수량 자릿수 큰 경우)에서 내부 줄바꿈됨.
.wt-chip{white-space:nowrap}으로 한 덩어리 유지.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
_compute_adr_ma_latest를 확장 윈도우로 — 20일 미만이어도 가용분 평균 숫자 표시('누적 N/20일 평균').
단 과열/침체 태그·색은 20일 채워질 때까지 보류(짧은 윈도우 임계치 해석 부정확). 차트 정책과 일치.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>