From ef477d878c03b87560f9f70c4830fd8bceae5bc9 Mon Sep 17 00:00:00 2001 From: hyowons Date: Mon, 15 Jun 2026 11:38:39 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B3=B4=EC=9C=A0=EC=A2=85=EB=AA=A9=20?= =?UTF-8?q?=ED=96=89=EB=8F=84=20NXT/KRX=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=E2=86=92=20=EA=B1=B0=EB=9E=98=EA=B0=80=EB=8A=A5=20=EC=B4=88?= =?UTF-8?q?=EB=A1=9D=EC=A0=90=20(=EB=AF=B8=EB=A6=AC=EB=B3=B4=EA=B8=B0?= =?UTF-8?q?=EC=99=80=20=EB=8F=99=EC=9D=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - _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 --- agents/stock/workspace/scripts/behive_web.py | 22 +++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/agents/stock/workspace/scripts/behive_web.py b/agents/stock/workspace/scripts/behive_web.py index 5945506..6c81c7b 100644 --- a/agents/stock/workspace/scripts/behive_web.py +++ b/agents/stock/workspace/scripts/behive_web.py @@ -2665,15 +2665,20 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False f'
당일 등락
{dsign}{day_change:,}원 ' f'({dsign}{day_change_pct:.2f}%)
' ) - # 가격 출처 마크 — cur_price 가 어느 시장 응답 가격과 일치하는지로 판정. - # NXT 미거래 종목(ohlc_nxt 빈 dict 또는 NXT price==KRX price)은 KRX 마크. + # 활성 시장 판정 — OHLC 미니테이블 컬럼 강조용(active_market). cur_price 가 어느 시장 가격과 일치하는지. nxt_p = (r.get('ohlc_nxt') or {}).get('price', 0) krx_p = (r.get('ohlc_krx') or {}).get('price', 0) - if nxt_p and nxt_p == price and nxt_p != krx_p: - mark = 'NXT' + mark = 'NXT' if (nxt_p and nxt_p == price and nxt_p != krx_p) else 'KRX' + # 거래가능 표시 — 지금 거래시간이면 초록점, 아니면 점 없음. (미리보기 행과 동일 규칙) + # 정규장: KRX+NXT 모두 거래 → 초록점 / NXT 시간대: NXT 거래종목(ohlc_nxt 가격 살아있음)만 / 장외·휴장·주말: 점 없음 + _phase = _market_phase_state()['phase'] + if _phase == 'regular': + _tradable = True + elif _phase == 'nxt': + _tradable = bool(nxt_p) else: - mark = 'KRX' - mark_html = f'{mark}' + _tradable = False + mark_html = '' if _tradable else '' # OHLC mini-table — ka10095 NX/NXT batch 결과를 각 컬럼에 분리 표시. 활성 시장만 밝게. # _nxt_inactive 마커는 stock_portfolio_report의 NX 응답 기반 판정이라 ETF처럼 NXT 정상거래 종목도 @@ -4257,12 +4262,9 @@ details.row + .section-label { margin-top: 14px; padding-top: 24px; border-top-c .ohlc-mini.ohlc-dual .ohlc-cell.ohlc-dim .ohlc-price { color: #5a5e69; } .ohlc-mini.ohlc-dual .ohlc-cell.ohlc-dim .ohlc-pct { color: #5a5e69 !important; } .ohlc-mini.ohlc-dual .ohlc-cell-empty.ohlc-dim { color: #3a3e48; } -/* 미리보기 현재가 왼쪽 출처 마크 — NXT(파랑톤) / KRX(회색톤). 어두운 채도로 보조 정보 강조 X. */ +/* 현재가 왼쪽 거래가능 표시 — 지금 거래시간이면 초록점, 아니면 점 없음. (미리보기·보유 행 공용) */ .px-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 5px; vertical-align: 1px; } .px-dot.tradable { background: #2ecc71; box-shadow: 0 0 4px rgba(46,204,113,0.6); } -.px-mark { font-size: 8px; font-weight: 600; margin-right: 4px; padding: 1px 3px; border-radius: 2px; background: #14171f; vertical-align: 2px; letter-spacing: 0.3px; } -.px-mark.px-nxt { color: #2d5a8a; } -.px-mark.px-krx { color: #4a4e58; } .dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex: none; box-shadow: 0 0 6px currentColor; } .dot-1 { background: #f5d423; color: rgba(245,212,35,0.5); }