Merge WBS-7 완료: GAS→Python 마이그레이션 + 보완고도화
## 주요 변경사항 ### ✅ 완료된 11개 항목 - WBS-7.1: 캘리브레이션 실증 전환 도구 - WBS-7.2: T+5 지표 단일 진실원천 통일 - WBS-7.3: GAS→Python 공식 마이그레이션 재검토 + F05/F10 포팅 ✨ - WBS-7.4: Deprecated 별칭·시트 정리 - WBS-7.5: 임시 하드코딩 폴백 비례화 - WBS-7.6: 슬리피지 실측 보정 스캐폴딩 - WBS-7.7: E2E 통합 테스트 구축 - WBS-7.8: ETF NAV/공매도 자동화 검토 및 운영절차 명문화 - WBS-7.9: snapshot_admin Synology POC 기본 보안 게이트 - WBS-7.10: 어드민 페이지 Tabler 그리드 조회 - WBS-7.11: spec-코드 동기화 게이트 ### F05/F10 포팅 (이번 세션) **F05 (calc_exit_sell_action)** - 7단계 우선순위 계층 구현 - JavaScript Number.isFinite() 의미론 보장 via safe_float() - 가격 폴백 체인 (tp2 → tp1 → close) - 17개 parity 테스트 PASS **F10 (run_route_flow)** - 5개 게이트 순차 필터링 - Stop_Breach → Relative_Stop → Intraday_Lock → Heat_Gate → Mean_Reversion - 17개 parity 테스트 PASS ### 📊 테스트 상태 **Parity 테스트**: 64/64 PASS - F02/F04/F06 (price_basis): 8개 - F05 (execution_decision): 17개 - F07 (score_thresholds): 9개 - F10 (routing_decision): 17개 - F11 (classify_order_type): 13개 ### 🎯 최종 상태 Phase 1~6 모두 완료, Phase 7 보완·고도화 DONE → 엔진 전체 경화 완료. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> # Conflicts: # GatherTradingData.json # governance/gas_logic_migration_ledger_v1.yaml
This commit is contained in:
@@ -29,7 +29,67 @@ on:
|
||||
workflow_dispatch: # 수동 실행 — 스케줄 검증/즉시 재시도용
|
||||
|
||||
jobs:
|
||||
collect-kis-data:
|
||||
validate-kis-config-smoke:
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
run: |
|
||||
if [ -d .git ]; then
|
||||
git remote set-url origin http://x-access-token:${{ secrets.GITHUB_TOKEN }}@192.168.123.100:8418/KimJaeHyun/myfinance.git
|
||||
else
|
||||
git init
|
||||
git remote add origin http://x-access-token:${{ secrets.GITHUB_TOKEN }}@192.168.123.100:8418/KimJaeHyun/myfinance.git
|
||||
fi
|
||||
TARGET_REF="${GITHUB_REF_NAME:-main}"
|
||||
git fetch origin "$TARGET_REF" --depth=1
|
||||
git reset --hard FETCH_HEAD
|
||||
|
||||
- name: Setup Python Environment
|
||||
run: |
|
||||
VENV_BASE=/volume1/gitea/python_venv
|
||||
REQ_HASH=$(md5sum tools/run_kis_data_collection_v1.py 2>/dev/null | cut -d' ' -f1 || echo "kis-default")
|
||||
VENV="$VENV_BASE/$REQ_HASH"
|
||||
|
||||
if [ ! -f "$VENV/bin/python" ]; then
|
||||
mkdir -p "$VENV_BASE"
|
||||
/usr/bin/python3 -m venv "$VENV"
|
||||
if [ ! -f "$VENV/bin/pip" ]; then
|
||||
curl -sS https://bootstrap.pypa.io/pip/3.8/get-pip.py -o get-pip.py
|
||||
"$VENV/bin/python" get-pip.py --quiet
|
||||
rm get-pip.py
|
||||
fi
|
||||
"$VENV/bin/pip" install --upgrade pip --quiet
|
||||
"$VENV/bin/pip" install requests beautifulsoup4 pyyaml --quiet
|
||||
ls -dt "$VENV_BASE"/*/ 2>/dev/null | tail -n +3 | xargs rm -rf 2>/dev/null || true
|
||||
fi
|
||||
"$VENV/bin/pip" install requests beautifulsoup4 pyyaml --quiet
|
||||
echo "$VENV/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: "[CRITICAL] No Direct API Trading Gate"
|
||||
run: python3 tools/validate_no_direct_api_trading_v1.py
|
||||
|
||||
- name: "[CRITICAL] Validate KIS API Credentials (mock)"
|
||||
env:
|
||||
# Gitea repository variables are injected here; the Python loader reads these env names.
|
||||
KIS_APP_Key_TEST: ${{ vars.KIS_APP_KEY_TEST }}
|
||||
KIS_APP_Secret_TEST: ${{ vars.KIS_APP_SECRET_TEST }}
|
||||
run: |
|
||||
if [ -z "${KIS_APP_Key_TEST:-}" ]; then
|
||||
echo "::error::Gitea variable KIS_APP_KEY_TEST is missing or empty"
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${KIS_APP_Secret_TEST:-}" ]; then
|
||||
echo "::error::Gitea variable KIS_APP_SECRET_TEST is missing or empty"
|
||||
exit 1
|
||||
fi
|
||||
python3 tools/validate_kis_api_credentials_v1.py \
|
||||
--account mock \
|
||||
--ticker 005930 \
|
||||
--dry-run
|
||||
|
||||
collect-kis-data-live:
|
||||
if: github.event_name == 'schedule'
|
||||
runs-on: self-hosted
|
||||
|
||||
steps:
|
||||
|
||||
Reference in New Issue
Block a user