포지션
web/src/pages/Positions.tsx 페이지. 봇 또는 수동 주문으로 생긴 포지션을 모두 보여줍니다.
📸 포지션 페이지 화면 (추후 자동 캡처 예정)
화면 구성
| 영역 | 설명 |
|---|---|
| 헤더 | 페이지 타이틀 + AssetClassFilter (All/Crypto/US/KR) |
| 탭 | Open Positions / History 토글 |
| 테이블 | 포지션 목록 (10–11컬럼) |
자식 페이지
- 실시간 보유 — Open 탭의 broker 동기화 동작
- 청산된 포지션 — History 탭의 realized P&L
- Reconciliation — broker vs DB 불일치 처리
API 연동
| Method | Path | 트리거 |
|---|---|---|
| GET | /api/positions?asset_class=... | Open 탭 (1초 폴링) |
| GET | /api/positions/history?asset_class=... | History 탭 (탭 활성 시) |
| POST | /api/positions/{id}/close | Close 버튼 |
자주 묻는 질문
Q. Open 탭에 봇이 만든 포지션이 안 보입니다.
A. BotRegistry.get_manager(user.id).get_bot()이 None이면 빈 배열이 반환됩니다. BotControl에서 봇이 실행 중인지 확인하세요.
Q. History 탭이 비어 있어요.
A. 청산된 포지션이 없거나, 자산군 필터가 너무 좁습니다. All로 변경 후 다시 확인하세요.