# BAT-056 Planning ## Task Breakdown ### T-1: OrderRequest.venue 필드 추가 (REQ-117) - 파일: `trex_core/application/broker_port.py` - 작업: `OrderRequest` frozen dataclass에 `venue: str = "KRX"` 필드 추가 (마지막 위치) - 제약: 기존 위치 인수 순서(`slot_id`, `side`, `symbol`, `qty`, `limit_price`, `order_type`) 불변 ### T-2: BrokerPort.cancel_order 시그니처 venue 파라미터 추가 (REQ-118) - 파일: `trex_core/application/broker_port.py` - 작업: `cancel_order` 프로토콜 시그니처에 `venue: str = "KRX"` 파라미터 추가 - 설계 결정: 시그니처 파라미터 추가 방식 채택(호출자 보존 방식 대비 명시적, 기본값으로 하위 호환) ### T-3: KISBroker.submit_order EXCG 명시 전송 (REQ-118 AC-1,2) - 파일: `trex_core/adapters/broker/kis.py` - 작업: body에 `"EXCG_ID_DVSN_CD": req.venue` 항상 추가 ### T-4: KISBroker.cancel_order venue 파라미터 + EXCG 전송 (REQ-118 AC-3,8) - 파일: `trex_core/adapters/broker/kis.py` - 작업: 시그니처에 `venue: str = "KRX"` 추가, body에 `"EXCG_ID_DVSN_CD": venue` 추가 ### T-5: KISBroker.poll_fill TR 유지 + open item 기록 (REQ-118 AC-4) - 파일: `trex_core/adapters/broker/kis.py` - 작업: 구 TR(TTTC8001R/VTTC8001R) 유지, 코드 주석에 NXT 체결 포함 여부 미확인 명시 - 이유: 웹 접근 불가 환경 — KIS 개발자 센터 문서 확인 불가. 보수 원칙: 기존 TR 유지, open item으로 기록 ### T-6: KISBroker.get_current_price market 파라미터 추가 (REQ-118 AC-5,6) - 파일: `trex_core/adapters/broker/kis.py` - 작업: 시그니처에 `market: str = "J"` 추가, `FID_COND_MRKT_DIV_CODE` → market 값 사용 ### T-7: PaperBroker.cancel_order 시그니처 정합 (REQ-118 AC-8, REQ-117 AC-5) - 파일: `trex_core/adapters/broker/paper.py` - 작업: cancel_order 시그니처에 `venue: str = "KRX"` 추가, 내부 로직 무변경(venue 무시) ### T-8: 신규 테스트 작성 (REQ-117 AC-1~5, REQ-118 AC-1~8) - 파일: `tests/adapters/broker/test_venue.py` (신규) - 작업: 13개 AC 커버 테스트 ### T-9: 기존 테스트 회귀 확인 (REQ-117 AC-3, REQ-118 AC-7) - 기존 테스트가 `OrderRequest` venue 미지정 경로를 통과하는지 확인 - 기존 submit_order fixture가 EXCG 필드 추가로 인한 페이로드 변화 감지 확인 ### T-10: 문서 업데이트 - `docs/interface-contract.md` — OrderRequest venue 필드 추가 - `docs/runtime-flows.md` — venue 전달 경로 명시 ## Dependency Order T-1 → T-2 → T-3, T-4, T-5, T-6 (병렬) → T-7 → T-8 → T-9 → T-10 ## Risk Points 1. `cancel_order` 시그니처 변경: BrokerPort 프로토콜 + KIS + paper 3개 파일 정합 필요 2. 기존 테스트 중 `cancel_order` 호출하는 코드 — venue 파라미터 없이 호출해도 기본값 KRX로 동작해야 함 3. `get_current_price` safety-sell 호출 경로: 기본값 "J" 유지로 무영향 확인 필요 ## Estimation - 구현: T-1~T-7 → 약 1시간 - 테스트: T-8~T-9 → 약 30분 - 문서: T-10 → 약 20분