fix: 예수금 음수 표시 + 배포 후 화면이 영구 정지하던 문제
- 예수금: dnca_tot_amt(D+2 기준)를 먼저 읽어 당일 매수가 많으면 -913,965원처럼 음수가 표시됐다. 주문가능현금(_ord_psbl_cash) → prvs_rcdl_excc_amt → nxdy_excc_amt 순으로 첫 양수를 사용한다(데이트레이딩 엔진과 동일 기준). - 프론트: /auth/me 가 한 번 실패하면(배포 중 502) useTenantMode.mode 가 undefined 로 남아 포트폴리오·매매 쿼리가 전부 enabled:false 로 멈췄다(오늘 26분간 API 호출 0건 확인). auth-me 를 실패 시 10초 간격 재시도로 바꾸고, queryClient 기본값에 retry 3회/백오프, refetchOnReconnect, networkMode:'always' 를 적용해 백엔드 복구 시 자동으로 되살아나게 함. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -129,15 +129,29 @@ def _extract_balance_data(balance_data: dict) -> dict:
|
||||
if balance_data and "output2" in balance_data:
|
||||
output2 = balance_data["output2"][0] if isinstance(balance_data["output2"], list) else balance_data["output2"]
|
||||
|
||||
# _ord_psbl_cash: sync_portfolio()가 매수가능조회로 채워 넣는 주문가능현금
|
||||
# (당일 매도대금 포함). 없으면 예수금총액(D+2 결제 기준) 폴백.
|
||||
available_cash = _pick_float(output2, [
|
||||
# 예수금 우선순위 (2026-09-23):
|
||||
# _ord_psbl_cash — 매수가능조회로 받은 주문가능현금(당일 매도대금 포함)
|
||||
# prvs_rcdl_excc_amt — 가수도정산금액(주문가능). 데이트레이딩 엔진도 이 값을 쓴다
|
||||
# nxdy_excc_amt — 익일정산금액
|
||||
# dnca_tot_amt — 예수금총액(D+2 기준). 당일 매수가 많으면 음수가 되므로 최후순위
|
||||
# 음수/0은 건너뛰고 첫 양수를 사용한다(화면에 예수금 -913,965원이 뜨던 문제).
|
||||
_cash_keys = [
|
||||
"_ord_psbl_cash",
|
||||
"dnca_tot_amt",
|
||||
"prvs_rcdl_excc_amt",
|
||||
"nxdy_excc_amt",
|
||||
"d2_depo_amt",
|
||||
"d2_deposit",
|
||||
"nass_amt"
|
||||
])
|
||||
"dnca_tot_amt",
|
||||
"nass_amt",
|
||||
]
|
||||
available_cash = 0.0
|
||||
for _k in _cash_keys:
|
||||
_v = _pick_float(output2, [_k])
|
||||
if _v > 0:
|
||||
available_cash = _v
|
||||
if _k != "_ord_psbl_cash":
|
||||
logger.debug(f"예수금 필드 선택: {_k}={_v:,.0f}")
|
||||
break
|
||||
|
||||
kis_total_assets = _pick_float(output2, ["tot_evlu_amt", "tot_evlu_amt_smtl"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user