fix: reconcile ambiguous KIS order submissions
This commit is contained in:
@@ -397,3 +397,20 @@ pause 후 동작:
|
||||
- `before`/`after`는 write/미리보기 비교에 사용하며, dry-run은 `warning_cleared=False`로 고정
|
||||
|
||||
`sync --dry-run`은 실제 DB 쓰기·warning clear를 하지 않으므로 운영자가 미리보기를 확인한 뒤 직접 승인된 live 실행으로 전환한다.
|
||||
|
||||
### KIS 주문 결과불명 복구
|
||||
|
||||
- 주문 POST의 transport 오류 또는 게이트웨이 5xx는 거절로 단정하지 않는다.
|
||||
Core는 종목·방향·수량·가격·시장·제출시각이 포함된 내구성
|
||||
`submission-unknown` 식별자를 슬롯에 저장해 같은 주문의 즉시 재제출을 막는다.
|
||||
- 주문·체결 조회가 유일한 일치 주문을 찾으면 실제 브로커 주문번호로 슬롯을
|
||||
원자적으로 교체한 뒤 정상 체결·취소 경로를 계속한다. 재시작 후에도 저장된 실제
|
||||
주문번호를 조회하므로 중복 주문을 만들지 않는다.
|
||||
- 조회가 성공했지만 제출 후 90초가 지나도록 일치 주문이 없으면 실제 미접수로
|
||||
확정하고 슬롯을 이전 상태로 되돌린다. 다음 전략 신호부터 새 주문 제출이 가능하다.
|
||||
조회 실패 또는 후보가 여러 개면 결과불명 상태를 유지한다.
|
||||
- 정상 체결조회는 주문별 최소 5초 간격, transport 실패 뒤에는 30초 간격으로
|
||||
제한한다. 전략의 미체결 취소 시간과는 별도이며 결과불명 주문은 자동 취소하지 않는다.
|
||||
- 회귀 검증은 KIS 호환 로컬 가상거래소에서 `접수 후 응답 유실`과
|
||||
`접수 전 응답 유실`을 각각 장애주입하고, 주문 중복 0·재시작 복구·확정 미접수
|
||||
이후에만 재시도됨을 확인한다.
|
||||
|
||||
Reference in New Issue
Block a user