feat: 데이트레이딩 포지션 화면 표시 + 모든 매도 즉시 화면 반영
- portfolio_cache_bridge 신설: 매매 엔진 체결 시 Portfolio(db_worker 큐) + 인메모리 캐시 즉시 갱신. DT 매수는 strategy_type='daytrading'으로 태깅되어 보유 종목 패널의 '데이트레이딩' 그룹에 표시되고 스윙 청산 로직(strategy_type='swing' 대상)에서 제외됨. (기존엔 KIS 동기화로 'swing'으로 유입돼 DT 포지션이 안 보이고 스윙 엔진이 같이 관리하는 문제) - DT 매도·스윙 자동 매도도 캐시에서 즉시 제거/차감 + 최근매도 기록(동기화 되살림 방지). - 동기화 시 DT 엔진 보유 종목은 'daytrading'으로 태깅. - 프론트: 수동 매도 성공 시 낙관적 갱신으로 서버 재조회 전 즉시 목록에서 제거. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -68,6 +68,15 @@ export const useTradeActions = () => {
|
||||
: ''
|
||||
toast.success(`${d.message || `${stockName} ${quantity}주 매도 주문 완료`}${pl}`)
|
||||
|
||||
// 낙관적 갱신: 서버 재조회 전에 화면에서 즉시 제거/차감
|
||||
queryClient.setQueryData(['portfolio-combined', mode], (prev: any) => {
|
||||
if (!prev?.holdings) return prev
|
||||
const holdings = prev.holdings
|
||||
.map((h: any) => (h.stock_code === stockCode ? { ...h, quantity: h.quantity - quantity } : h))
|
||||
.filter((h: any) => h.quantity > 0)
|
||||
return { ...prev, holdings }
|
||||
})
|
||||
|
||||
// Invalidate queries to refresh portfolio
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['portfolio-combined'],
|
||||
|
||||
Reference in New Issue
Block a user