From b06047a3d57af55243833c6e7f5ea9b67912f79a Mon Sep 17 00:00:00 2001 From: shuim Date: Fri, 3 Apr 2026 12:01:51 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=84=A4=EC=9D=B4=EB=B2=84=20=EC=B0=A8?= =?UTF-8?q?=ED=8A=B8=20=ED=8F=B4=EB=B0=B1=20null/0=20=EA=B0=80=EA=B2=A9=20?= =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lightweight Charts에서 null 값 에러 방지 Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/api/endpoints/market_data.py | 29 +++++++++++++++--------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/backend/app/api/endpoints/market_data.py b/backend/app/api/endpoints/market_data.py index 750e78c..b8a6d08 100644 --- a/backend/app/api/endpoints/market_data.py +++ b/backend/app/api/endpoints/market_data.py @@ -334,17 +334,24 @@ async def get_chart_data_cached(stock_code: str, period: str, limit: int) -> lis from app.services.naver_finance import get_naver_daily_chart naver_data = await get_naver_daily_chart(stock_code, days=limit * 2) if naver_data: - db_data = [ - { - "date": item.get("stck_bsop_date", ""), - "open": float(item.get("stck_oprc", 0)), - "high": float(item.get("stck_hgpr", 0)), - "low": float(item.get("stck_lwpr", 0)), - "close": float(item.get("stck_clpr", 0)), - "volume": int(item.get("acml_vol", 0)), - } - for item in naver_data - ][-limit:] + db_data = [] + for item in naver_data: + o = float(item.get("stck_oprc") or 0) + h = float(item.get("stck_hgpr") or 0) + l = float(item.get("stck_lwpr") or 0) + c = float(item.get("stck_clpr") or 0) + d = item.get("stck_bsop_date", "") + if not d or c <= 0 or o <= 0 or h <= 0 or l <= 0: + continue + db_data.append({ + "date": d, + "open": o, + "high": h, + "low": l, + "close": c, + "volume": int(item.get("acml_vol") or 0), + }) + db_data = db_data[-limit:] logger.info(f"차트 네이버 폴백: {stock_code} ({len(db_data)}행)") except Exception as e: logger.warning(f"네이버 차트 폴백 실패 ({stock_code}): {e}")