Commit Graph

123 Commits

Author SHA1 Message Date
hyowons 9239901028 feat: 2계좌 매도 팝업은 전량매도일 때만 + 매도 보유수량 현재/전체(그룹) 병기
- 팝업 조건: 입력 수량 == 매도가능 전량(max_qty)일 때만 sell-choice 팝업,
  일부매도는 팝업 없이 단일 진행. lastCheck 미수신 시에도 단일 진행
- 매도 정보영역: 같은 그룹 다른 계좌도 보유 시 '보유: 141주 / 전체 280주' 병기
  (단독 보유면 기존 표시 유지). 팝업 문구도 양쪽 '매도가능 전량'으로 통일

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 15:16:23 +09:00
hyowons 5c884a0de6 docs: CLAUDE.md 거래 모달에 2계좌 동시 매도·propose_multi 반영
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 15:06:29 +09:00
hyowons e95e2b3f3a feat: 매도 시 같은 그룹 2계좌 동시 매도 (카드 1장+PIN 1개, 선택 팝업)
- orders/handler.py: propose_trade_multi (레그별 독립 검증, 같은 소유자 그룹만,
  SELL+LIMIT/MARKET 한정) + submit_with_pin multi 분기 _submit_multi_legs
  (레그 독립 제출·독립 fill_watcher, 한 레그 실패해도 나머지 시도)
- orders/card.py: format_card_multi (레그별 계좌·수량·예상회수 + 합계)
- behive_web.py: POST /api/order/propose_multi (PIN은 iMessage '매도(2계좌)'),
  sell-choice-modal (두 계좌 모두 / 선택 계좌만 / 취소), doPropose SELL 분기
  (accStatus로 sibling 보유 감지 → 팝업, sibling 수량은 보유 전량)
- fix: /api/order/cancel 응답이 dict를 PendingCard로 취급해 매번 500 나던
  기존 버그 (취소 자체는 동작, 응답만 깨짐)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 15:05:35 +09:00
hyowons 72b98409f2 feat: 종목차트 탭 재배열 + 3개월 추가 — 1분봉/5분봉/1개월/3개월/6개월/1년
- CHART_RANGE_DAYS에 '3M': 63 추가 (stock_analysis)
- /api/chart_svg 탭·패널 순서를 분봉 우선으로 재배열, 3M 패널 신설
- 기본 활성 탭은 1개월 유지

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:28:08 +09:00
hyowons ff3652c8b1 feat: 자산 차트 단위 경계 세로선 — 일별=주 경계, 월별=연 경계
- 일별 보기: 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 10:03:11 +09:00
hyowons b5e3fc0f4e fix: VI 1h 매핑 실증 반영 — active=해제시각(1224) 유무로 판정
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-12 09:09:58 +09:00
hyowons defd5c0bf6 auto: 일일 백업 2026-06-12 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 02:00:03 +09:00
hyowons b20c21cbd2 fix: VI 배지 자동 만료 — 해제 1h 메시지 미수신 시 영구 잔류 방지
- 관찰(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>
2026-06-11 15:56:45 +09:00
hyowons 76001b1994 feat: 기업정보 종합 판단에 추정ROE·추정EPS 리비전 반영
- ROE: trailing 낮아도 추정ROE 급증(≥15% & 현재의 1.5배↑) 전망이면 좋은 점으로 표시
- PBR≥3: 추정ROE≥20%면 고평가 단정 대신 '실현 여부 관건'으로 완화 (PER/추정PER과 동일 패턴)
- 추정EPS 리비전(est_change_pct)을 전망 개선/악화 판단에 추가 (목표가 리비전보다 직접적 신호)
- synthNote: pbrJustified로 valHigh 제외 + EPS 리비전을 grPos/grNeg에 포함

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 12:23:10 +09:00
hyowons c9fafad10d feat: 기업정보 종합 판단에 추정(forward) PER 반영
기존엔 trailing PER만 보고 고평가 판단 → 성장주(삼성전자 45배 vs 추정 6.9배)
오판. trailing 높아도(≥30) 추정PER이 크게 낮으면(<trailing×0.6 & <20) '이익 급증
기대(growth priced in)'로 인식: 고평가 단정 대신 좋은점(forward 저평가)+주의점
(추정치 미달 시 조정 위험) 양면 표시. synthNote에 forward 우선 케이스 추가.
forward EPS 낙관 경향 고려해 미달 위험 경고 동반.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 12:12:46 +09:00
hyowons f8d17f4437 feat: 기업정보 모달 — 가치+성장 종합 해석을 요약탭에 통합
각 탭의 개별 판단 박스 제거. 요약탭 최상단에 📌종합(가치 vs 성장·컨센서스
상충을 한 문장으로 화해: 고평가+긍정/저평가+부진/고평가+부진/저평가+긍정 4분기)
+ 좋은 점 / ⚠️주의할 점(두 영역 합산) 표시.
companyJudge/growthJudge → companyGC/growthGC({good,caution}) + synthNote 추가.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 12:09:45 +09:00
hyowons 0845db1915 feat: 기업정보 모달 가치/성장성 탭 요약을 해석형(좋은점/주의점)으로
수치 나열 대신 지표를 좋은 점 / ⚠️주의할 점으로 판단:
- 가치: ROE(우수/낮음/적자)·PER(고평가 부담/부담 작음)·PBR(비쌈/청산가치 이하)
- 성장: 매출·영익·EPS 성장/역성장·상승여력·투자의견·목표가 리비전·서프라이즈
규칙 기반·표준 임계치, 특이점 없으면 미표시. (이전 나열식 요약 대체)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 12:04:04 +09:00
hyowons 2d9c6719e8 feat: 기업정보 모달 가치/성장성 탭 상단에 내용 요약 박스
기업정보·가치 탭: 밸류에이션(PER·PBR)+수익성(ROE 우수/양호/낮음/적자).
성장성·컨센서스 탭: 성장(매출·영익·EPS YoY)+목표주가/상승여력/투자의견+
리비전+서프라이즈. 규칙 기반(LLM 미경유), 표시 데이터 그대로 요약.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 11:53:22 +09:00
hyowons a3c6496ffa chore: sim 전략 파라미터·페이퍼 실험 데이터 git 추적 (백업 공백 해소)
state/* 일괄 제외에 sim 화이트리스트 추가 — 108변이 파라미터(variants.json)·
메인 튜닝(params.json)·마킹(favorites.json)·등록근거(backtest_results.json)·
일별성과(equity_history)·관찰목록·지수이력 + 변이별 계좌/거래기록.
last_scan·variants_compare(5분 스냅샷)·flow_history.sqlite(백필 재구축 가능)는 계속 제외.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 11:20:31 +09:00
hyowons 70841548bc feat: VI 배지 토스트에 종목 실제 VI 데이터 표시
VI 탭 시 그 종목의 실시간 VI 정보(적용구분·방향·발동가·발동등락률·당일
발동횟수·해제시각)를 설명과 함께 표시. window.__rtState.vi[code] 사용.
허브에 발동횟수(1490) 캡처 추가.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 11:08:27 +09:00
hyowons ae83deab9f style: VI 설명 토스트 줄바꿈 (동적/정적VI 항목 구분)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 11:04:24 +09:00
hyowons 7a60bb1865 feat: VI 배지 탭 시 변동성완화장치 설명 토스트
VI 배지를 누르면 VI 설명 토스트 표시(동적/정적VI·발동 기준·2분 단일가).
document 위임(배지는 동적 생성) + preventDefault/stopPropagation으로 행 토글 차단.
배지에 cursor:pointer 추가.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 10:49:55 +09:00
hyowons 25a01f7f4a feat: 보유 상세 듀얼 OHLC 미니 현재가/등락 WS 실시간 갱신
듀얼 OHLC 미니(KRX/NXT)의 '현재가' 행이 서버 렌더라 고정이던 것을 WS 라이브로.
- 현재가 셀에 data-rt-ohlc-cur + data-prev(각 시장 전일종가) 마커
- paintOhlcCur(code,price): 1초 틱마다 현재가=AL 라이브(양쪽 동일), 등락=셀별
  전일종가 대비 재계산. applyState에서 호출.
전일종가/시가/고가/저가/당일종가 행은 그대로(서버 렌더).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 10:45:58 +09:00
hyowons c1a46fd908 fix: 보유종목 등락률 가끔 안 보이던 문제 — rt-daypct span 항상 렌더
기존 조건(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>
2026-06-11 10:05:37 +09:00
hyowons bfb518307f fix: 순자산 차트 고/저점 — 장중가(마지막 점)가 극값일 때도 표시
기존엔 극값이 마지막 점이면 생략 → 저점이 현재값인 차트(가희 등)에서 저점 안 보임.
마지막 점 제외 조건 제거 → 장중가가 고/저점이어도 표시. 단 마지막 점이 신고가(ATH)면
신고가 링이 '고'를 대신(중복 방지).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 09:21:22 +09:00
hyowons 1c03a1a6af feat: 순자산 차트에 고/저점 마커 추가
차트보기 구간의 최고점(고·노란 점)·최저점(저·파란 점)에 마커+라벨.
극값이 마지막(현재) 점이면 기존 끝점 마커가 커버하므로 생략(중복 방지).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 09:14:42 +09:00
hyowons 81e8847a8e auto: 일일 백업 2026-06-11 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 02:00:01 +09:00
hyowons af058cf36d fix: 분봉 툴팁 등락률을 당일시가대비 → 전일대비로 (현재 등락율과 일치)
당일시가대비(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>
2026-06-10 14:23:23 +09:00
hyowons 8bfaecbd1e fix: 분봉 당일시가대비 baseline 오류 + 우상단 전일대비 텍스트 제거
- 당일시가(dayOpen)를 range 슬라이스 전 '오늘 첫 봉' 시가로 고정 → 1h/30min 등
  구간을 좁혀도 baseline 동일. 마지막 봉 당일시가대비 = 현재가 등락율 일치.
  (기존: candles[0]가 슬라이스된 구간 첫 봉이라 baseline이 틀렸음)
- 우상단 '전일대비 X%' 텍스트 제거(관리자 요청). 전일종가 기준선은 유지.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 14:15:03 +09:00
hyowons 51d0384ed4 feat: 분봉 크로스헤어 툴팁에 '당일시가 대비 등락률' 추가
분봉 차트 클릭(세로선) 시 OHLC 팝업에 그 봉 종가의 당일 시가(첫 봉) 대비
등락률을 표시 — 그 시점까지의 오늘 누적 등락을 한눈에. 일봉은 미표시(분봉만).
- render_svg_chart(intraday=) → meta.dayOpen(첫 봉 시가, 분봉만) 주입
- 분봉 엔드포인트 intraday=True
- _setOhlcText: 당일시가대비 라인 + 팝업 박스/닫기버튼 동적 리사이즈

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 14:08:14 +09:00
hyowons 9c830f58f6 feat: 분봉 전일대비% 항상 표시 + 보유 상세 종목명 + 유형 폭 정리
- 분봉 차트(1/5/15m): prev_close를 일봉 캐시에서 못 찾으면 ka10095(현재가−전일대비)로
  보강 → 모든 종목에 '전일대비 +X%'(오늘 하루 등락) 항상 표시.
- 보유종목 자세히 보기 상단에 종목명+코드(.detail-name) 추가.
- 차트 컨트롤 2번째 줄: 연도/월은 내용 크기, 유형은 기간과 동일 폭(글씨 크기 유지).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 14:01:33 +09:00
hyowons e1fd6a7e84 refactor: 차트 컨트롤 2줄 분리 + 지정기간 단위 일별 고정
- 1번째 줄: 기간/단위/차트타입(모드) 유지. 지정기간 선택 시 단위 일별 고정(비활성).
- 2번째 줄(지정기간일 때만 노출): 유형(연도별/월별) / 연도 / 월.
- 유형=연도별이면 월 드롭다운 '-' 표시·비활성, 월별이면 월 활성.
- 연도별도 단위 일별 → 그 해 전체 일별 차트(기존 월별집계에서 변경).
- CSS: .chart-controls 컬럼 레이아웃 + .cc-line 행, .cc-line-ym[hidden] 숨김.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 11:13:17 +09:00
hyowons 8c891a820a refactor: 차트 기간 '연도별/월별' → '지정기간' + 유형 하위 드롭다운
기간 드롭다운의 연도별·월별 2옵션을 '지정기간' 1옵션으로 통합.
지정기간 선택 시 보조 드롭다운 노출: 유형(연도별/월별) → 연도 → 월(월별일 때만).
- _render_chart_controls: custom 옵션 + data-nw-ymtype 유형 select 추가, 가시성 재구성
- JS: range='custom' 진입·data-nw-ymtype 핸들러(ymSet/curYear/curType 헬퍼)
chart_ym 인코딩·서버 로직은 그대로(YYYY/YYYY-MM).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 10:57:40 +09:00
hyowons 5ee35a0e27 fix: 연도별·월별 과거 기간 차트에 오늘 라이브 점 안 붙이기
과거 기간(예: 4월)을 골라도 has_live 판정으로 오늘 순자산이 마지막 점·델타·
하단값으로 붙어 차트와 무관한 값이 나오던 문제. period가 이번달·올해가 아니면
(period_is_current=False) current_net/rt_owner를 None으로 → 라이브 점·라이브
갱신 모두 비활성. 과거 차트는 그 기간 끝점에서 마감, 델타·하단값이 차트와 일치.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 10:49:42 +09:00
hyowons 7bb07ea3ad feat: 자산 차트보기에 연도별·월별 절대 선택 추가
기간 드롭다운에 '연도별'(연도 선택→월별 집계)·'월별'(연도+월 선택→일별) 추가.
- _available_chart_periods(): 스냅샷에서 데이터 있는 연/월만 추출(드롭다운 채움)
- _load_net_worth_series(period=): 'YYYY'/'YYYY-MM' 절대 필터
- _render_summary_panel: chart_ym → 단위 강제(연도별=월별집계/월별=일별)
- _render_chart_controls: 연·월 보조 드롭다운 + months map(JS용) + period 시 단위 disable
- chart_ym 파라미터 체인·캐시키·GET 핸들러(형식검증) 전반 연결
- JS: chartYM 저장/전송 + 연도별/월별/연·월 셀렉터 핸들러
- CSS: .cc-ym[hidden] 숨김(flex가 [hidden] UA스타일 덮지 않도록)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 10:42:25 +09:00
hyowons f8cd71713b Revert "fix: 보유탭 등락 기준을 ka10095 전일종가로 통일 — 감시탭 미리보기와 일치"
This reverts commit 0ba61d4d7c.
2026-06-10 09:05:36 +09:00
hyowons 9cc7043490 auto: 일일 백업 2026-06-10 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 02:00:02 +09:00
hyowons 0ba61d4d7c fix: 보유탭 등락 기준을 ka10095 전일종가로 통일 — 감시탭 미리보기와 일치
보유종목 표시 등락이 스냅샷(어제 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>
2026-06-09 22:34:04 +09:00
hyowons cbc89a4843 fix: KRX 당일종가 등락 0% — 전일종가를 ka10095 기준으로 산출 + 행 순서
- kt00018 pred_close_krx가 장 마감 후 현재가와 같은 값으로 채워지는 결함으로
  KRX 당일종가/현재가 등락률이 0%로 깔리던 문제 수정 → KRX 전일종가를
  ka10095(현재가−전일대비)로 산출(서버 계산값). 현재가·당일종가 등락 둘 다 정상화.
- 듀얼 OHLC 행 순서: 전일종가·현재가·시가·고가·저가·당일종가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 21:20:56 +09:00
hyowons 721fe9011c feat: 보유종목 듀얼 OHLC — 현재가 AL 통합(동일가)+당일종가 행 추가
- 현재가 행: 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>
2026-06-09 18:31:59 +09:00
hyowons 891bc274dc fix: 보유종목 듀얼 OHLC 사라짐 — 보유 KRX/NX 시세콜 게이팅 되돌림
이전 커밋에서 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>
2026-06-09 12:48:06 +09:00
hyowons 79c6647431 feat: 순자산 차트 오늘 포인트도 1초 실시간 이동(라벨↔점 일치)
장중 차트의 오늘 값은 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>
2026-06-09 12:41:50 +09:00
hyowons 7f1c52a580 feat: 자산웹 실시간(WS) NXT 통합·시세 중복 제거·연결상태 점
- 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>
2026-06-09 12:26:45 +09:00
hyowons 69ef9c09e8 auto: 일일 백업 2026-06-09 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 02:00:01 +09:00
hyowons 7f3994d98d fix: 자동갱신 틱마다 새로고침 아이콘 빨갛게 깜빡이던 것 제거
load()에 추가했던 .refresh spinning(빨강) 제거 — 자동갱신마다 빨간 깜빡임 거슬림.
내용은 여전히 클리어 없이 swap. 수동 새로고침(↻)의 빨간 스핀은 manualRefresh가 그대로 유지.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:50:10 +09:00
hyowons 5448a0ab5f feat: 순자산 차트 오늘(장중) 값 라벨 실시간 갱신
net-chart-last 라벨을 실시간 순자산으로 갱신(라이브 점일 때만). 순자산 변동분=손익 변동분(baseline·cf 세션중 고정)이라 net/pnl/period 모드 공통 처리.
SVG 점 위치는 새로고침 시(장중 이동 미미·Y재스케일 위험 회피). setOwnerKpis에서 owner별 갱신.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:32:50 +09:00
hyowons ab0343338e feat: stale 전체 재갱신 시 화면 클리어 대신 기존 유지+백그라운드 swap
5분 stale 재갱신이 resetShellLook()로 전탭을 스피너로 비우던 것 제거 → 기존 내용 유지한 채 fetch, 완료 시 교체.
로딩 표시는 새로고침(↻) 아이콘 스핀으로만(내용 그대로 보임). 실패 시 기존 내용 유지+에러 토스트.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:16:54 +09:00
hyowons 4a3a7a9493 style: detail 태그 중간 크기(13→11px)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:59:53 +09:00
hyowons 7fe2d925a5 style: 계좌명 폰트 더 작게(10→8.5px)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:55:19 +09:00
hyowons 2bfc2aa019 feat: 펼친 detail 태그 크게(13px)
.detail-tag .tag-chip 만 13px·패딩 확대. 미리보기·관심행 칩은 8.5px 유지.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:54:27 +09:00
hyowons 76376c0ab0 feat: 태그를 미리보기에서 빼고 펼친 detail에 표시
line2에서 tag_chip 제거, detail 상단에 태그 있을 때만 표시.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:51:19 +09:00
hyowons 56bb822da6 feat: 태그 칩 더 작게(8.5px) + # 글자 제거
_tag_chip_html에서 '#' 접두 제거, .tag-chip 폰트 10→8.5px·패딩 축소.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:49:08 +09:00
hyowons 6a32594268 feat: 계좌명 종목명 옆(작게), 태그 보유 왼쪽, ★ 비중 오른쪽
line1=뱃지+종목명+계좌명(작게), line2=태그+보유+비중%+★. line3 제거(2줄).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:46:26 +09:00
hyowons 639d92c4bd feat: line2에 % + 계좌명(일반/ISA), '비중' 글자·'+' 제거
비중 칩에서 '비중' 라벨 제거(숫자%만), 계좌명을 % 오른쪽 line2로 이동.
계좌명은 owner 접두(가희_) 떼고 유형만 '·'로(중복 제거). line3는 태그만.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:43:21 +09:00
hyowons f146c939c0 fix: 종목명 글씨 자동맞춤 깜빡임 제거(길이기반 CSS) + ★ 보유 왼쪽 이동
JS 폭측정 자동맞춤은 리셋→축소 플래시가 패널 swap/자동갱신마다 깜빡여서 제거.
대신 이름 길이로 글씨크기 클래스(stock-sm 10자+/stock-xs 14자+) 서버 렌더 시 확정 → 깜빡임 없음.
당일거래 마크(★)는 line2 보유 왼쪽으로 이동.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 16:37:10 +09:00