diff --git a/agents/stock/workspace/scripts/behive_web.py b/agents/stock/workspace/scripts/behive_web.py index 8e1e469..7695db4 100644 --- a/agents/stock/workspace/scripts/behive_web.py +++ b/agents/stock/workspace/scripts/behive_web.py @@ -3537,6 +3537,31 @@ def _render_net_worth_chart(series: list[tuple[str, int]], current_net: int | No label = f'{gv / 1_000_000:,.{dec_m}f}M' if abs(gv) >= 1_000_000 else f'{gv / 1000:,.{dec_k}f}K' grid_lines.append(f'{html.escape(label)}') + # 단위 경계 세로선 — 일별=주 경계(ISO 주가 바뀌는 첫 점), 월별=연 경계(연도가 바뀌는 첫 점). + # 그 외 단위는 미표시. per_period 모드는 period-sep(점마다 구분선)이 이미 있어 중복이라 생략. + boundary_lines: list[str] = [] + if not per_period and selected_unit in ('day', 'month'): + from datetime import date as _bd_date + + def _bkey(ds: str): + if selected_unit == 'day': + try: + iso = _bd_date.fromisoformat(ds).isocalendar() + return (iso[0], iso[1]) # (ISO연, 주차) + except Exception: + return None + return ds[:4] # month → 연도 + _prev_bk = _bkey(full[0][0]) + for _bi in range(1, n): + _bk = _bkey(full[_bi][0]) + if _bk is not None and _prev_bk is not None and _bk != _prev_bk: + _bx = x_at(_bi) + boundary_lines.append( + f'' + ) + if _bk is not None: + _prev_bk = _bk + # 0원 기준선 — 손익 0 높이가 차트 범위 안일 때만 (어디부터 적자/흑자인지 표시). 순자산은 항상 양수라 자동 미표시. # 기준선(가로선)은 유지하고 '0' 텍스트 라벨만 제거 (관리자님 요청 — M/K 라벨과 겹쳐 보기 번잡). zero_line = '' @@ -3704,6 +3729,7 @@ def _render_net_worth_chart(series: list[tuple[str, int]], current_net: int | No '' '', ''.join(grid_lines), + ''.join(boundary_lines), zero_line, ''.join(period_seps), ] @@ -4689,6 +4715,7 @@ section.tab-content { min-height: calc(100dvh - 110px); } } .net-chart-svg .grid { stroke: #353b4a; stroke-width: 1; stroke-dasharray: 3 3; } .net-chart-svg .period-sep { stroke: #4a5266; stroke-width: 1; stroke-dasharray: 2 4; opacity: 0.85; } +.net-chart-svg .grid-v { stroke: #353b4a; stroke-width: 1; stroke-dasharray: 3 3; opacity: 0.8; } .net-chart-svg .zero-line { stroke: #8b93a7; stroke-width: 1.2; stroke-dasharray: 5 3; opacity: 0.9; } .net-chart-svg .pt-dot { stroke: #0b0d12; stroke-width: 1.2; } .net-chart-svg .axis { fill: #6b7280; font-size: 14px; font-variant-numeric: tabular-nums; }