dcy-003 confirmed (all OQ answered, operator-confirmed scope/risk): - OQ-1: paper/stub + real KIS Open API adapter (validated on KIS paper server; live account go-live config-gated, deferred). - OQ-2: unified async fill (submit -> poll); paper is a deterministic async double (no synchronous shortcut) for faithful path coverage. - OQ-3: option A — pending slot is the execution queue, broker_order_id is the idempotency guard; no separate outbox table (option B as a growth hook; intent_log stays dedup-only). - OQ-4: dedicated background execution loop (claim -> submit -> poll -> reconcile); intent API only transitions to pending. Decompose into REQ-011~015 (all Proposed): BrokerPort + paper double, KIS adapter, execution loop, durability+reconciliation (Exception), baseline alignment. NFR-1/2/3 absorbed. Update SRS index + dcy-003 created-REQ refs. Safety floor, KIS live account, strategy daemons, and auth remain deferred to follow-up Discoveries. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.8 KiB
2.8 KiB
req-011: BrokerPort 추상화 + paper/stub async 더블
- Status: Proposed
- Type: Integration
- Priority: High
- Owner: project maintainers
Intent
- 브로커를 코어에서 추상화하는
BrokerPort를 정의하고(불변식 B 의 단일 경계), 결정적 검증용 paper/stub 어댑터를 제공한다. 이후 KIS 어댑터(REQ-012)와 집행 루프(REQ-013)가 이 포트 위에서 동작한다.
Requirement
BrokerPort(application 포트)에submit_order(side, symbol, qty, ...) -> broker_order_id,cancel_order(broker_order_id),poll_fill(broker_order_id) -> FillStatus(accepted/partially_filled/filled/rejected/cancelled, avg_price, filled_qty)를 정의한다. paper/stub 어댑터는 동기 단축 없이 submit→poll 비동기 계약을 따르되 체결 시점·부분체결·거부를 프로그래밍 가능한 결정적 더블로 제공한다. 어댑터는 adapters 레이어에 두고 도메인은 의존하지 않는다.
Acceptance Criteria
- Given
BrokerPort정의, When paper 어댑터로submit_order, Thenaccepted+ broker_order_id 를 반환하고 즉시filled로 단축하지 않는다(다음poll_fill에서 체결). - Given paper 더블의 fill 시나리오 설정(즉시/N틱 후/부분/거부), When
poll_fill반복, Then 설정대로 결정적으로 상태가 진행된다. - Given 코드, When import 스윕, Then
trex_core.domain.slot은 broker/네트워크 의존이 0이고 BrokerPort 구현은 adapters 레이어에만 있다. (NFR-1/NFR-2)
Impacted Area
- Docs: docs/interface-contract.md(브로커 경계) — REQ-015 에서 정합
- Modules: trex_core/application(BrokerPort), trex_core/adapters/broker(paper/stub)
- Tests: paper 더블 fill 시나리오 테스트
Notes
- 불변식 B 의 단일 경계. KIS 어댑터는 REQ-012, 집행 루프는 REQ-013.
- 출처: dcy-003 FR-1(포트+paper), NFR-1/NFR-2 흡수.
Change Log
CHG-20260604-01
- Date: 2026-06-04
- Author: Justin Ko
Change Summary
- dcy-003 FR-1(포트+paper) 로부터 최초 생성(Proposed).
Intent
- BrokerPort + paper async 더블 요구사항을 backlog 로 정규화.
Acceptance Criteria Delta
- Added:
- submit→poll 비동기 계약, 결정적 fill 시나리오, 도메인 순수성 3개 기준
- Updated:
- 없음
- Removed:
- 없음
Impacted Area Delta
- Docs:
- docs/interface-contract.md
- Modules:
- application(BrokerPort), adapters/broker(paper)
- Tests:
- paper 더블 시나리오 테스트
Delivery Trace Delta
- Batches:
- none
- Releases:
- none
Revalidation Impact
- Reverification Needed: no
- Existing Implementation Invalidated: no
- Status Recommendation: keep-current
- Follow-up Action: confirm-req 후 batch 편성
Validation Plan
- paper 더블 비동기 체결 시나리오 단위테스트로 검증.