diff --git a/agents/stock/workspace/scripts/behive_web.py b/agents/stock/workspace/scripts/behive_web.py index 2498f64..1fe0e47 100644 --- a/agents/stock/workspace/scripts/behive_web.py +++ b/agents/stock/workspace/scripts/behive_web.py @@ -3278,7 +3278,7 @@ def _expand_progress_group(filtered: list[tuple[str, int]], daily_series: list[t return baseline + in_group -def _render_net_worth_chart(series: list[tuple[str, int]], current_net: int | None = None, selected_days: int = NET_WORTH_CHART_DAYS, selected_unit: str = NET_WORTH_CHART_UNIT, cash_flow_by_date: dict | None = None, today_cash_flow: dict | None = None, mode: str = NET_WORTH_CHART_MODE, prev_baseline_point: tuple[str, int] | None = None) -> str: +def _render_net_worth_chart(series: list[tuple[str, int]], current_net: int | None = None, selected_days: int = NET_WORTH_CHART_DAYS, selected_unit: str = NET_WORTH_CHART_UNIT, cash_flow_by_date: dict | None = None, today_cash_flow: dict | None = None, mode: str = NET_WORTH_CHART_MODE, prev_baseline_point: tuple[str, int] | None = None, rt_owner: str | None = None, rt_base_net: int | None = None) -> str: """꺾은선 SVG (순자산 / 손익누적 공용). 외부 의존성 없음. 데이터 < 2점이면 안내문 반환. mode='net'(기본): series 는 raw 순자산 시계열. 입출금 마커·툴팁 행 표시. @@ -3695,7 +3695,10 @@ def _render_net_worth_chart(series: list[tuple[str, int]], current_net: int | No '' '' '' - f'{html.escape(last_label_v)}' + f'{html.escape(last_label_v)}' '' '' ) @@ -5688,6 +5691,7 @@ def _render_summary_panel(ordered_owners: list[str], owner_data: dict, balances: today_cash_flow=None, mode=chart_mode, prev_baseline_point=prev_baseline, + rt_owner=owner, rt_base_net=d.get('total_net'), )) else: # net 모드도 baseline 점(예: 5/1) prepend → 첫 영업일 변동이 0 기점에서 분기되는 모양. baseline 구간은 점선. @@ -5700,6 +5704,7 @@ def _render_summary_panel(ordered_owners: list[str], owner_data: dict, balances: today_cash_flow=today_cf, mode='net', prev_baseline_point=prev_baseline, + rt_owner=owner, rt_base_net=d.get('total_net'), )) market_card = _render_market_indicators_card() @@ -9033,6 +9038,14 @@ window.openPinModal = openPinModal; if(td) td.innerHTML=''+sgn(T.daypl)+'원'+(T.dpct!==null?' ('+(T.dpct>=0?'+':'')+T.dpct.toFixed(2)+'%)':'')+''; } }); + // 순자산 차트 오늘(장중) 포인트 값 라벨 실시간 — 점 위치(SVG)는 새로고침 시, 값 라벨만 라이브. + document.querySelectorAll('.net-chart-last[data-rt-nw-owner="'+owner+'"][data-rt-nw-live="1"]').forEach(function(el){ + var basenet=parseFloat(el.getAttribute('data-rt-nw-basenet')||'0'); + var baseval=parseFloat(el.getAttribute('data-rt-nw-baseval')||'0'); + var v=Math.round(baseval+(T.net-basenet)); // 순자산 변동분 = 손익 변동분(baseline·cf는 세션 중 고정) + var s=(el.getAttribute('data-rt-nw-pnl')==='1') ? ((v>=0?'+':'−')+Math.abs(v).toLocaleString()+'원') : (v.toLocaleString()+'원'); + el.textContent=s+' (장중)'; + }); } // KPI 총합 — owner 탭 scope의 consolidated pane 행만 합산(중복합산 방지). 시세 미수신 종목은 data-rt-px(서버값) fallback. function updateScopes(px){