3.1 KiB
3.1 KiB
id, status, discovery, criteria
| id | status | discovery | criteria | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| req-0001 | approved | dcy-0001 |
|
KIS 잔고조회 페이지네이션 완전성
Objective
KIS 국내주식 잔고조회에서 단일 응답 한도를 넘는 계좌도 모든 연속 페이지를 완전하게 읽어 종목별 broker 잔고 snapshot을 반환하고, 불완전한 페이지 체인을 정상 잔고로 소비하지 않도록 한다. 이를 통해 후속 페이지 보유종목이 reconciliation에서 broker flat 또는 수량 불일치로 오인되지 않게 한다.
Scope
KISBroker.get_balance()의 국내주식 잔고조회에 KIS response header와 continuation key에 따른 연속조회 동작을 적용한다.- 모든 성공 페이지의 유효한
output1보유수량을 종목별 snapshot으로 집계한다. - 페이지 체인의 완전성과 진행성을 검증하고 불완전한 결과를 기존 broker read error 경계로 차단한다.
- KIS adapter의 단일·다중 페이지 및 오류 경계, 기존 account ownership projection, 두 reconciliation 소비 경로의 회귀를 repository-local 자동화 테스트로 검증한다.
Constraints
- 최초 요청은
tr_cont를 공백/미지정으로 유지하고 continuation key를 비우며, 후속 요청만tr_cont=N과 직전 응답의 key를 사용한다. - 다음 페이지와 종료 판정은 response header
tr_cont의F/M및D/E계약을 따르며msg_cd를 제어 흐름의 정본으로 사용하지 않는다. - 하나의
get_balance()호출 동안 정규화한(ctx_area_fk100, ctx_area_nk100)pair의 방문 이력을 추적하고, 이미 방문한 pair가 즉시 또는 비인접하게 다시 나타나면 실패해야 한다. - 어느 페이지에서든 실패하면 누적된 부분 잔고를 반환하거나 broker-derived reconciliation 판단·warning/slot write에 사용하지 않는다.
- row가 object가 아니거나,
hldg_qty가 누락되거나 정수 변환 불가능하거나, 양수 수량의pdno가 비어 있으면 malformed response로 실패한다.hldg_qty <= 0row는 기존 normalization대로 제외한다. - pagination 계약 위반은 기존
BrokerBalanceErrorallow-list 안의 정제된 오류로 매핑하며 새 public error taxonomy를 추가하지 않는다. - 정상적인 단일 페이지, 검증된 빈 잔고, 0 이하 수량 row 제외, account ownership projection 및 정제된
BrokerBalanceError동작을 보존한다. - 실계좌 주문, 운영 데이터 수정 또는 외부 저장소 변경 없이 repository-local fixture로 검증 가능해야 한다.
Non-Goals
- portfolio-hub 저장소 또는 API 변경
- reconciliation의 warning 분류, 상태 전이 또는 자동 복구 정책 변경
- KIS credential, token cache, broker provider 또는 account ownership projection 변경
- 잔고조회 외 KIS API의 pagination 일반화
INQR_DVSN을 포함한 이 Line과 무관한 query·정규화 정책 변경- 운영계좌 주문, 기존 warning/error 데이터 수정, 배포 또는 release