Commit Graph

90 Commits

Author SHA1 Message Date
hyowons f38a3878b1 auto: 일일 백업 2026-08-07 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 02:00:02 +09:00
hyowons 307f7844c4 auto: 일일 백업 2026-08-06 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 02:00:01 +09:00
hyowons c03b3f2659 auto: 일일 백업 2026-08-05 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 02:00:06 +09:00
hyowons 30be97ab2f auto: 일일 백업 2026-08-01 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-01 02:00:02 +09:00
hyowons d7042430c3 auto: 일일 백업 2026-07-31 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 02:00:02 +09:00
hyowons a5f6b0ecd8 auto: 일일 백업 2026-07-30 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 02:00:02 +09:00
hyowons c5dd2f98a8 auto: 일일 백업 2026-07-29 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 02:00:02 +09:00
hyowons 5410009bea auto: 일일 백업 2026-07-24 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 02:00:02 +09:00
hyowons 8c23849952 auto: 일일 백업 2026-07-23 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 02:00:04 +09:00
hyowons 2cf5b38da1 auto: 일일 백업 2026-07-22 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 02:00:04 +09:00
hyowons 1d6fe0f70d auto: 일일 백업 2026-07-18 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 02:00:00 +09:00
hyowons 9948122ed3 auto: 일일 백업 2026-07-16 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 02:00:03 +09:00
hyowons 66d372b50e auto: 일일 백업 2026-07-15 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 02:00:02 +09:00
hyowons 008ce8be65 auto: 일일 백업 2026-07-04 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:00:03 +09:00
hyowons dd1ad7d964 auto: 일일 백업 2026-07-03 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 02:00:02 +09:00
hyowons 213c0e0797 auto: 일일 백업 2026-07-02 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 02:00:02 +09:00
hyowons 565689df25 auto: 일일 백업 2026-07-01 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 02:00:02 +09:00
hyowons 1bbb61520c auto: 일일 백업 2026-06-30 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 02:00:02 +09:00
hyowons 790effdf0e auto: 일일 백업 2026-06-28 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 02:00:01 +09:00
hyowons 6c89c54fe5 auto: 일일 백업 2026-06-27 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 02:00:02 +09:00
hyowons 03989e9df4 auto: 일일 백업 2026-06-26 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 02:00:04 +09:00
hyowons c15c3a1fec auto: 일일 백업 2026-06-25 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 02:00:02 +09:00
hyowons 21f4f07cbb auto: 일일 백업 2026-06-24 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 02:00:02 +09:00
hyowons cee32e6dfb auto: 일일 백업 2026-06-23 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 02:00:01 +09:00
hyowons b3696949f5 auto: 일일 백업 2026-06-17 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 02:00:02 +09:00
hyowons 70f6b9a34d feat(sim): 정렬 토글(오름/내림)·40일선 1등전략(v300) 복구·보유배지 📦
- sim_web 비교탭 정렬: 손익/평가/보유/거래순 클릭마다 오름↔내림 토글 (기본 내림, 평가순만 오름), 활성버튼 화살표 표시
- 40일선 1등 전략 v62 파라미터 복구 → v300 (새 계좌, 220개)
- behive_web 보유 배지: '보유 xx 주' → '📦 xx' (폰트 8px, sim웹과 통일)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 12:16:08 +09:00
hyowons a61f1f67c5 style: 보유 배지 'xx 주' → '보유 xx 주'
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:04:39 +09:00
hyowons 3366990cfa style: 보유 배지 '보유xx' → 'xx 주'
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:51:17 +09:00
hyowons 3694393c43 style: 보유 배지 '보유 xx주' → '보유xx' (공백·주 제거)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:34:38 +09:00
hyowons ef477d878c feat: 보유종목 행도 NXT/KRX 텍스트 → 거래가능 초록점 (미리보기와 동일)
- _render_holding_row: px badge를 px-dot 초록점으로 통일. 활성 시장 판정(mark)은
  OHLC 미니테이블 컬럼 강조(active_market)용으로만 남겨 OHLC 표시는 그대로 유지
- 더 이상 쓰이지 않는 .px-mark/.px-nxt/.px-krx CSS 제거, CSS 주석 갱신
- 라이브 owner 패널 27개 보유행 전부 초록점 확인

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:38:39 +09:00
hyowons 904ae5c415 feat: 미리보기 행 NXT/KRX 텍스트 마크 → 거래가능 초록점
- _render_row: 가격 출처(NXT/KRX) 텍스트 배지 대신 '지금 거래시간 여부'로
  초록점(.px-dot.tradable) / 점 없음. 정규장=전부, NXT시간대=NXT거래종목만
  (_nxt_price>0), 장마감·휴장·주말=점 없음. 가격 None은 기존대로 점 없음
- 보유종목 상세행(_render_holding_row)의 NXT/KRX 텍스트는 그대로 유지
- CSS .px-dot 추가 (px-mark.px-nxt/krx는 보유행이 계속 사용)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:34:26 +09:00
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 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 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 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 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