diff --git a/agents/stock/workspace/scripts/behive_web.py b/agents/stock/workspace/scripts/behive_web.py index 89d7786..ba31514 100644 --- a/agents/stock/workspace/scripts/behive_web.py +++ b/agents/stock/workspace/scripts/behive_web.py @@ -3729,6 +3729,19 @@ def _render_net_worth_chart(series: list[tuple[str, int]], current_net: int | No svg_parts.append( f'' ) + svg_parts.append( + f'' + ) + # 저점 dot — min 시점에 파란 마커 + '저' 라벨. 마지막/고점과 겹치면 생략. + low_i = min(range(len(plot_values)), key=lambda i: plot_values[i]) + if low_i != n - 1 and low_i != peak_i: + low_x, low_y = pts[low_i] + svg_parts.append( + f'' + ) + svg_parts.append( + f'' + ) # 신고가 마커 — 오늘(마지막) 그려진 값이 이전 모든 포인트를 strict 하게 초과하면 last dot 위에 금색 ring + 라벨. # per_period면 '역대 최고 기간 손익', 아니면 누적/순자산 신고가. if n >= 2 and plot_values[-1] > max(plot_values[:-1]): @@ -4667,6 +4680,8 @@ section.tab-content { min-height: calc(100dvh - 110px); } .net-chart-svg .line.dashed { stroke-dasharray: 5 4; stroke-opacity: 0.85; } .net-chart-svg .last-dot { stroke: #0b0d12; stroke-width: 1.5; } .net-chart-svg .peak-dot { stroke: #0b0d12; stroke-width: 1.5; } +.net-chart-svg .low-dot { stroke: #0b0d12; stroke-width: 1.5; } +.net-chart-svg .hl-label { paint-order: stroke; stroke: #0b0d12; stroke-width: 3; } .net-chart-svg .last-dot.live { stroke: #0b0d12; stroke-width: 2; animation: live-pulse 1.6s ease-in-out infinite; } .net-chart-svg .live-halo { animation: live-halo 1.6s ease-in-out infinite; } .net-chart-svg .ath-ring { animation: ath-pulse 1.8s ease-in-out infinite; }