- Move flutter operator console and push notification milestones to operator-ui phase - Archive kis-live-data-collection-pipeline milestone - Add command-first operator workflow milestone - Add operator-ui phase definition - Add paper-trading-command-workflow milestone - Update phase documentation and dependencies
182 lines
4.5 KiB
Markdown
182 lines
4.5 KiB
Markdown
# KIS Live Secret Handoff
|
|
|
|
## 현재 기준
|
|
|
|
- KIS agent runtime secret의 단일 원본은 SOPS + age다.
|
|
- 모의테스트도 필요하므로 `secrets/kis.live.sops.yaml`에 실전/모의 값을 분리해 저장한다.
|
|
- `bin/kis-sops-env`는 명령 실행 동안만 SOPS 값을 환경변수로 주입한다.
|
|
|
|
## 사용자 수행 순서
|
|
|
|
원격 host의 ALT repo로 이동한다.
|
|
|
|
```bash
|
|
cd /Users/toki/docker/services/code-server/data/volume/workspace/alt
|
|
```
|
|
|
|
SOPS 편집기로 `secrets/kis.live.sops.yaml`을 연다.
|
|
|
|
```bash
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
EDITOR="${EDITOR:-nano}" \
|
|
sops secrets/kis.live.sops.yaml
|
|
```
|
|
|
|
열린 편집기 안에서 `secrets/kis.live.sops.yaml`의 전체 내용을 아래 템플릿 형태로 맞춘다. 각 값 설명만 실제 값으로 바꾼 뒤 저장하고 종료한다.
|
|
|
|
```yaml
|
|
KIS_REAL_APP_KEY: "<한국투자증권 실전 Open API 앱키>"
|
|
KIS_REAL_APP_SECRET: "<한국투자증권 실전 Open API 앱시크릿>"
|
|
KIS_REAL_CANO: "<실전 증권계좌번호 8자리>"
|
|
KIS_REAL_ACNT_PRDT_CD: "01"
|
|
KIS_PAPER_APP_KEY: "<한국투자증권 모의투자 Open API 앱키>"
|
|
KIS_PAPER_APP_SECRET: "<한국투자증권 모의투자 Open API 앱시크릿>"
|
|
KIS_PAPER_CANO: "<모의투자 증권계좌번호 8자리>"
|
|
KIS_PAPER_ACNT_PRDT_CD: "01"
|
|
```
|
|
|
|
국내주식 종합계좌 기준 `ACNT_PRDT_CD`는 `01`로 둔다. 한국투자증권 공식 샘플도 증권계좌 8자리와 `my_prod: "01"`을 분리해서 사용한다.
|
|
|
|
`nano` 기준 저장은 `Ctrl+O`, `Enter`, 종료는 `Ctrl+X`다.
|
|
|
|
## 입력 확인 명령
|
|
|
|
```bash
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env bash -lc '
|
|
for key in \
|
|
KIS_REAL_APP_KEY KIS_REAL_APP_SECRET KIS_REAL_CANO KIS_REAL_ACNT_PRDT_CD \
|
|
KIS_PAPER_APP_KEY KIS_PAPER_APP_SECRET KIS_PAPER_CANO KIS_PAPER_ACNT_PRDT_CD
|
|
do
|
|
test -n "${!key}" || exit 1
|
|
done
|
|
echo "KIS SOPS secrets are ready"
|
|
'
|
|
```
|
|
|
|
## 모의/실전 테스트 준비 확인 명령
|
|
|
|
모의:
|
|
|
|
```bash
|
|
KIS_ACTIVE_ENV=paper \
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env bash -lc '
|
|
test "$KIS_ACTIVE_ENV" = "paper"
|
|
test -n "$KIS_PAPER_APP_KEY"
|
|
test -n "$KIS_PAPER_APP_SECRET"
|
|
test -n "$KIS_PAPER_CANO"
|
|
test -n "$KIS_PAPER_ACNT_PRDT_CD"
|
|
echo "paper smoke env is ready"
|
|
'
|
|
```
|
|
|
|
실전:
|
|
|
|
```bash
|
|
KIS_ACTIVE_ENV=real \
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env bash -lc '
|
|
test "$KIS_ACTIVE_ENV" = "real"
|
|
test -n "$KIS_REAL_APP_KEY"
|
|
test -n "$KIS_REAL_APP_SECRET"
|
|
test -n "$KIS_REAL_CANO"
|
|
test -n "$KIS_REAL_ACNT_PRDT_CD"
|
|
echo "real smoke env is ready"
|
|
'
|
|
```
|
|
|
|
## 일봉 smoke 명령
|
|
|
|
모의:
|
|
|
|
```bash
|
|
KIS_ACTIVE_ENV=paper \
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env bin/kis-paper-daily-smoke \
|
|
--symbol 005930 \
|
|
--start 20240527 \
|
|
--end 20240528
|
|
```
|
|
|
|
실전:
|
|
|
|
```bash
|
|
KIS_ACTIVE_ENV=real \
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env bin/kis-paper-daily-smoke \
|
|
--symbol 005930 \
|
|
--start 20240527 \
|
|
--end 20240528
|
|
```
|
|
|
|
## Go live-provider smoke 명령
|
|
|
|
모의:
|
|
|
|
```bash
|
|
KIS_ACTIVE_ENV=paper \
|
|
KIS_LIVE_SMOKE=1 \
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env /opt/homebrew/bin/go test ./services/worker/internal/providers/kis \
|
|
-run TestLiveProviderPaperSmoke \
|
|
-count=1 \
|
|
-v
|
|
```
|
|
|
|
실전:
|
|
|
|
```bash
|
|
KIS_ACTIVE_ENV=real \
|
|
KIS_REAL_LIVE_SMOKE=1 \
|
|
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \
|
|
bin/kis-sops-env /opt/homebrew/bin/go test ./services/worker/internal/providers/kis \
|
|
-run TestLiveProviderRealSmoke \
|
|
-count=1 \
|
|
-v
|
|
```
|
|
|
|
## Sanitized evidence 기준
|
|
|
|
이 기준은 데이터 적재 정책이 아니라 테스트 evidence 기준이다. Raw KIS payload, request/response header, token, key, 계좌번호는 저장하지 않는다.
|
|
|
|
Tracked 문서나 handoff에는 아래 요약만 남긴다.
|
|
|
|
```text
|
|
env=paper|real
|
|
provider=kis
|
|
endpoint=inquire-daily-itemchartprice
|
|
symbol=005930
|
|
date_range=20240527~20240528
|
|
bar_count=2
|
|
first_date=20240527
|
|
last_date=20240528
|
|
msg_cd=MCA00000
|
|
result=ok
|
|
```
|
|
|
|
Provider 상태 분류는 아래 key를 사용한다.
|
|
|
|
```text
|
|
unavailable
|
|
auth
|
|
quota
|
|
malformed
|
|
provider
|
|
```
|
|
|
|
## Agent에게 전달할 내용
|
|
|
|
SOPS 입력과 확인 명령이 끝난 뒤 agent에게는 아래만 전달한다.
|
|
|
|
```text
|
|
SOPS KIS real/paper runtime secrets are filled.
|
|
Paper smoke env readiness check passed.
|
|
Real smoke env readiness check passed.
|
|
Go KIS paper live-provider smoke passed.
|
|
Go KIS real live-provider smoke passed.
|
|
First daily smoke target:
|
|
- market: KR
|
|
- symbol: 005930
|
|
- date range: 20240527~20240528
|
|
```
|