dcy-030 (issue #28, P0 체결 복구): - REQ-083 KRX 호가단위(tick) 순수 유틸 (domain/pricing.py) - REQ-070 CHG: 슬리피지 실효가 호가단위 스냅 — 상한 준수(매수 floor/매도 ceil) + band<1tick 하한/상한 보장 + 부동소수 epsilon 가드. 147700→148400/54500→54700. - BAT-044 release-candidate dcy-029 (issue #29, 운영 관측성): - REQ-084 구조화 로깅 기반 (runtime/logging_setup.py): ISO8601 KST·레벨·Loki JSON ·correlation id(slot_id) - REQ-085 주문 결과 로깅 (event=order_submit|fill|reject) - REQ-087 거부 ERROR 가시성 (조용한 롤백 제거) - REQ-086 청산 reason+actor 동반 노출 (안전망/전략 구분, 신규 필드 없음) - REQ-088 운영 조회 CLI report (application/operator_report.py, 보유·오늘 체결 ·실현 PnL net·대기, direct-DB) - REQ-089 운영자 런북 docs/operations.md - REQ-090 baseline 정합 (runtime-flows·project-structure·interface-contract) - BAT-045(P0)·BAT-046(P1) release-candidate REL-007: confirmed → feedback-captured (운영 인스턴스 라이브 검증 + #28/#29 환류 정규화). BAT-037~041 released. 검증: 537 passed, 47 skipped, 회귀 0, ruff clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.6 KiB
3.6 KiB
req-088: 운영 조회 CLI — 보유·오늘 체결·실현 PnL·대기 주문
- Status: Implemented
- Type: Interface
- Priority: High
- Owner: project maintainers
Intent
- 일일 실현 PnL을
ledger_outbox에서 수기 계산해야 했다. 운영자가 단일 CLI 명령으로 현재 보유·오늘 체결·오늘 실현 PnL(수수료·세금 반영)·대기 주문을 조회해 일일 리포트 자동화의 기반을 만든다. (dcy-029 FR-5, OQ-1=CLI, RPC 없음)
Requirement
- 운영자 CLI(
trex_core/runtime/cli.py)에 신규 서브커맨드(예:report또는pnl)를 추가해 다음을 출력한다:- 현재 보유: holding 슬롯의 symbol/portfolio_id/qty/avg_price.
- 오늘 체결: 당일(trading_date, KST 경계) 체결 건수/내역.
- 오늘 실현 PnL: 수수료·세금 반영(BAT-038 정책과 동일 계산),
ledger_outbox/체결 기록을 단일 권위 출처로 집계. - 대기 주문: pending_* 슬롯.
- 조회는 DB-backed 시점 집계다. 신규 RabbitMQ RPC는 추가하지 않는다(dcy-029 OQ-1). 데몬 미경유로 DB를 직접 읽거나 기존 read 경로를 재사용한다.
- 청산/체결 항목에 reason+actor(REQ-086)를 함께 보여 안전망/전략 구분이 되게 한다.
- 출력은 사람용 표/요약 + 가능하면 머신 파싱용(예:
--json) 형태를 고려한다(자동화 기반).
Acceptance Criteria
- Given holding 슬롯 존재, When
report실행, Then 보유 symbol/qty/avg_price가 출력된다. - Given 당일 체결 N건, When 실행, Then 오늘 체결 건수/내역이 출력된다.
- Given 당일 매도 체결, When 실행, Then 실현 PnL이 수수료·세금 반영 값으로 출력되고
ledger_outbox직접 집계와 일치한다. - Given pending_* 슬롯, When 실행, Then 대기 주문이 출력된다.
- Given "오늘" 경계, When trading_date(KST) 기준, Then 전일 체결은 오늘 집계에서 제외된다.
- Given 신규 표면, When 실행, Then 신규 RabbitMQ RPC 없이 동작한다(CLI/DB-backed, OQ-1).
Impacted Area
- Docs: docs/runtime-flows.md(운영자 CLI 조회 흐름), docs/operations.md(사용법 — REQ-089)
- Modules: trex_core/runtime/cli.py(신규 서브커맨드), PnL 집계 read(신규 헬퍼 —
ledger_outbox/체결 집계), 기존 slot read 재사용 - Tests: 집계 함수 단위(수수료·세금·trading_date 경계), CLI 서브커맨드 단위
Notes
- PnL 계산은 BAT-038(매도 증권거래세+수수료) 정책을 단일 출처로 재사용(dcy-029 NFR-3/A-3). 부분 정산·재시도 중 outbox 상태는 집계 시점 기준으로 명시.
- 출처: dcy-029 FR-5, OQ-1.
Change Log
CHG-20260616-01
- Date: 2026-06-16
- Author: Justin Ko
Change Summary
- dcy-029 FR-5로부터 최초 생성(Proposed).
CHG-20260616-02
- Date: 2026-06-16
- Author: Justin Ko
- Type: status
- Summary: Proposed → Approved (confirm-req). 필수 필드·구체 AC 충족, source dcy-029(confirmed, Open OQ 0) 정합. dcy-029 P0/P1 batch 편성 예정.
CHG-20260616-IMPL
- Date: 2026-06-16
- Author: Justin Ko
- Type: status
- Summary: Approved → Implemented (confirm-req-implemented, BAT-046 release-candidate, dcy-029 P1). 근거: 단위/문서 AC 매핑(REQ-086 reason+actor 로그·interface-contract; REQ-088 operator_report 집계·net PnL·KST 경계·CLI report; REQ-089 docs/operations.md 4영역; REQ-090 runtime-flows·project-structure 정합). 14 passed(report+safety_sell), 전체 537 passed/47 skipped 회귀 0, ruff clean. report direct-DB·Loki 실 적재는 release 운영 검증 위임. Blocking Issues 없음.