diff --git a/agents/stock/workspace/scripts/behive_web.py b/agents/stock/workspace/scripts/behive_web.py index 7695db4..e7bce2d 100644 --- a/agents/stock/workspace/scripts/behive_web.py +++ b/agents/stock/workspace/scripts/behive_web.py @@ -10300,10 +10300,11 @@ class Handler(BaseHTTPRequestHandler): 'sma20': sa.sma(closes, 20), 'sma60': sa.sma(closes, 60), } - # 분석 페이지와 동일 패턴 — 1Y/6M/1M 3 개 panel + 탭. 250 봉 캐시 슬라이스만 다름. + # 분석 페이지와 동일 패턴 — 1M/3M/6M/1Y 4 개 panel + 탭. 250 봉 캐시 슬라이스만 다름. # 분봉 panel 은 빈 placeholder. 탭 클릭 시 클라이언트가 lazy fetch. svg_1y = sa.render_svg_chart(snap, range_key='1Y') svg_6m = sa.render_svg_chart(snap, range_key='6M') + svg_3m = sa.render_svg_chart(snap, range_key='3M') svg_1m = sa.render_svg_chart(snap, range_key='1M') # 분봉 panel 안에 기간 sub-tabs (30분/1h/3h/5h/하루). default = '1h'. # subpanel 은 클라이언트가 sub-toggle 이벤트로 lazy fetch. @@ -10322,17 +10323,19 @@ class Handler(BaseHTTPRequestHandler): ) html_block = ( '
' - '' - '' - '' - '' '' + '' + '' + '' + '' + '' '
' - f'
{svg_1y}
' - f'
{svg_6m}
' - f'
{svg_1m}
' - + _minute_panel('5m') + _minute_panel('1m') + + _minute_panel('5m') + + f'
{svg_1m}
' + f'
{svg_3m}
' + f'
{svg_6m}
' + f'
{svg_1y}
' ) body = html_block.encode('utf-8') body, enc = _maybe_gzip(body, self.headers.get('Accept-Encoding')) diff --git a/agents/stock/workspace/scripts/stock_analysis.py b/agents/stock/workspace/scripts/stock_analysis.py index 7fa0c22..5c5d9eb 100644 --- a/agents/stock/workspace/scripts/stock_analysis.py +++ b/agents/stock/workspace/scripts/stock_analysis.py @@ -543,13 +543,13 @@ VOL_TOP = PRICE_BOT + PANEL_GAP VOL_BOT = VOL_TOP + VOL_PANEL_H -CHART_RANGE_DAYS = {'1Y': 250, '6M': 120, '1M': 21} +CHART_RANGE_DAYS = {'1Y': 250, '6M': 120, '3M': 63, '1M': 21} def render_svg_chart(snap: dict, range_key: str = '1Y', ref_price: float | None = None, intraday: bool = False) -> str: """캔들 + SMA 3선 + 거래량 막대 인라인 SVG. - range_key: '1Y' (250일) | '6M' (120일) | '1M' (21일). 같은 snapshot 데이터에서 슬라이스만. + range_key: '1Y' (250일) | '6M' (120일) | '3M' (63일) | '1M' (21일). 같은 snapshot 데이터에서 슬라이스만. ref_price: 기준가(전일종가 등) — 지정 시 노란 점선 기준선 + 마지막 종가의 대비 등락률 표시 (분봉용). snap: collect_snapshot 결과. candles_asc·sma5/20/60 사용. 외부 JS 의존성 0. CSS는 inline.