fix(옵투나·백테웹): 휩쏘 키 통일 + 엔진 뱃지 + 잡 삭제 + race·후처리 시그니처

휩쏘 키 통일 (bt-form-postfilter-key-parity.mdc 신설)
- 저장키 vs 조회키 불일치 해소: whipsaw_enabled(옛) → whipsaw_filter_enabled(표준)
- backtest_web.py: params[..] 세팅, static/js/backtest.js: 폼 파라미터
- optuna_web_jobs·param_search_apply_snapshot·param_search_scalping: 옛 alias 제거
- bt_post_filters: 로컬 변수도 whipsaw_filter_enabled 로 통일
- scripts/scratch: 관련 스크립트 동기 반영

엔진 뱃지 (optuna-job-engine-label.mdc 신설)
- optuna_web_jobs: use_rust 명시값만 신뢰, 미상은  (전략명 하드코딩 폴백 금지)
- 스캘핑/모멘텀/돌파 Rust 포팅 확장에도 안전한 라벨링

Optuna 웹 잡 UX
- save_job: tmp 파일 PID 접미 (멀티 프로세스 race 해소)
- _spawn_job_reaper: mode_refine 완료 시 phase1/phase2 JSON 자동 등록
  → 예전 UX 복원 (실행 잡ID 위에 결과 잡ID 노출)
- delete_job / delete_jobs_bulk 신설 + API + UI 삭제 버튼
  실행 중 잡 거부, 로그·원본 결과 JSON 보존

후처리 시그니처 수정
- bt_post_filters.orderbook_reject_for_entry 호출:
  price= → current_price=, 단일 대입 → 튜플 unpack
  (매 trial 마다 TypeError 삼켜지고 후처리 무효화되던 버그)

버그 조사·룰 강화
- verify-before-conclude-cross-strategy.mdc: 함수 추적 딥다이브 → 근본 대안 3개
- .cursorrules: 룰 27~29 추가 (해외 UI 정합·휩쏘 키·엔진 뱃지)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Your Name
2026-09-06 19:23:22 +09:00
parent 1d69c217e2
commit b5d7c5d848
13 changed files with 349 additions and 51 deletions

View File

@@ -85,6 +85,7 @@
- optuna 각 전략의 hts_skip은 false 유지하고 수정하지 말 것.
- 19. **땜빵용 코딩은 지양한다**
- 근본원인을 고쳐야돼 항상 근본원인을 먼저찾고 초등학생도 이해하기 쉽게 설명 후 설계를 하고 보고한다.
- 버그 발견 시: 해당 함수 **호출 체인 딥다이브**(구석구석) → 원인 확정 후 **근본 대안 3개** 선보고·승인. 추측성 대안 금지. 오래 걸려도 짧은 추측 턴 반복(토큰 낭비) 금지. 상세: `.cursor/rules/verify-before-conclude-cross-strategy.mdc` §2.
- 20. 수정 사항이 실매에 영향이 가는지 백테 파라미터에만만 영향이 가는지 명확히 분류 후 보고하고 수정한다.
- 21. 백테 웹페이지 탭 ui 수정시 다른 전략 탭도 모두 수정되어야 한다.
- 가상거래내역, 실거래내역 ui 는 모두 동일해야한다.
@@ -92,10 +93,12 @@
- 23. **키움/KIS 인프라** — CRITICAL §3 (유량≠빈응답, approval 공유, REST/키발급 한도 준수, 시세실키≠매매모의, REST 웜업 1차→실패시만 증량).
- 24. **에이전트 테스트·adhoc 뻘짓 금지** — CRITICAL §4 (스키마 먼저, import/캐시 실명, env 키=config 테이블 등록, 실패 1회만).
- 25. **의심·불확실 시 근본원인 먼저** — CRITICAL §5 (MCP·`docs/`·공식 API 문서·기존 SafeRequest/세마포어부터. 추측 패치·한도 무시 재시도 금지).
- 25-1. **가설 검증 후 답변 · 전략 교차검증** — `.cursor/rules/verify-before-conclude-cross-strategy.mdc`. 추측만으로 결론 금지. 한 전략 사고/수정 시 타전략 동일 이슈 교차검증 필수.
- 25-1. **가설 검증 · 버그 딥다이브 · 전략 교차검증** — `.cursor/rules/verify-before-conclude-cross-strategy.mdc`. 추측 결론 금지. 버그=함수 추적 후 근본 3안 선보고. 한 전략 사고/수정 시 타전략 교차검증 필수.
- 26. **구조·수정 전 지도** — `docs/like_mcp.md/` (`MODIFICATION_GUIDE` · `code_architecture` · `db_erd`) + `.cursor/rules/like-mcp-docs.mdc`. 체크리스트 본문은 룰에 복붙하지 말고 해당 MD만 연다.
- 26. **국내→해외/탭 이식 — 복붙 ≠ 완료** — CRITICAL §6 (summary 키·전역/종목 저장·폼 덮어쓰기·브라우저 검증). 상세: `.cursor/rules/domestic-port-ui-parity.mdc`
- 27. **해외 전략 UI = 국장과 최대한 동일** — CRITICAL §6-1. 꼭 다르게 해야 하면 **구현 전 선보고·승인**. 임의로 생략·단축 금지.
- 28. **웹백테 폼 ↔ 후처리 필터 키 정합** — `.cursor/rules/bt-form-postfilter-key-parity.mdc`. `params[...]=` 로 세팅한 키와 후처리(`bt_post_filters.py`)·엔진이 실제 조회하는 키가 100% 동일해야 함. 휩쏘 표준 키 = `whipsaw_filter_enabled`. `whipsaw_enabled`는 소비자 하위호환 폴백 전용, 새 저장 금지.
- 29. **Optuna job 엔진 뱃지** — `.cursor/rules/optuna-job-engine-label.mdc`. `use_rust: bool` 반드시 저장. 없으면 `❔`(미상). 전략명 하드코딩으로 Rust/Python 폴백 부여 금지.
# [CRITICAL SYSTEM DIRECTIVES: 절대 엄수 사항 - 위반 시 작업 중지]
## 0. 🚨 봉 정합·진입 정렬 — 절대 금지 (위반 시 작업 중지)
@@ -176,18 +179,22 @@
- 실패 로그를 사용자에게 길게 반복 붙여 넣지 말 것. 고치고 결과만 보고.
## 5. 🚨 의심·불확실 → 근본원인 먼저 (땜빵·추측 패치 금지)
항목 19와 동일 정신. **코드를 고치기 전에** 원인을 문서로 확정한다.
항목 19와 동일 정신. **코드를 고치기 전에** 원인을 문서로 확정한다.
버그·이상 시 **함수 호출 체인 딥다이브 → 근본원인 확정 → 근본 대안 3개 선보고** (`.cursor/rules/verify-before-conclude-cross-strategy.mdc` §2).
**오래 걸려도 된다.** 짧은 추측 턴을 여러 번 돌리지 말고 한 번에 구석구석 분석한다. 코드 미추적 **추측성 대안 제시 금지**.
### 5-1. 조사 순서 (필수)
1. **증상 로그·에러코드** (유량=5, 429, invalid approval, Unknown column 등)를 있는 그대로 분류.
2. **`docs/`** (`정합성.md`, `계정.md`, 전략 QA 등) + **구조 지도** `docs/like_mcp.md/` (수정 전 grep·허브·ERD) + 레포 헬퍼(`SafeRequest`, `KISApprovalManager`, 세마포어) 검색.
3. **MCP** (브라우저·kis-code-assistant·관련 서버) / 공식 OpenAPI·키움 문서로 한도·엔드포인트·실전·모의 도메인 확인. 거시=MD, 미시=MCP/Grep (`.cursor/rules/like-mcp-docs.mdc`).
4. 근본원인·설계를 **짧게 보고** → 승인 후 수정 (핵심 매매/인프라는 선보고).
5. API 관련 코드를 작성/수정할 때는, 본인의 지식에 의존하지 말고 반드시 연동된 MCP 도구를 우선 호출하여 스펙을 확인하라.
2. **해당 함수 호출 체인**을 Grep/Read로 구석구석 추적 (호출자·공유 헬퍼·캐시·DB/WS·전략 분기).
3. **`docs/`** (`정합성.md`, `계정.md`, 전략 QA 등) + **구조 지도** `docs/like_mcp.md/` (수정 전 grep·허브·ERD) + 레포 헬퍼(`SafeRequest`, `KISApprovalManager`, 세마포어) 검색.
4. **MCP** (브라우저·kis-code-assistant·관련 서버) / 공식 OpenAPI·키움 문서로 한도·엔드포인트·실전·모의 도메인 확인. 거시=MD, 미시=MCP/Grep (`.cursor/rules/like-mcp-docs.mdc`).
5. **근본원인 확정** 후 **근본 해결 대안 3개**(각 안: 수정 위치·부작용·리스크) + 추천 1안을 **짧게 보고** → 승인 후 수정 (핵심 매매/인프라는 선보고).
6. API 관련 코드를 작성/수정할 때는, 본인의 지식에 의존하지 말고 반드시 연동된 MCP 도구를 우선 호출하여 스펙을 확인하라.
### 5-2. 금지
- “일단 재시도·재발급·봉수 늘리기·±1 보정”으로 증상만 가리기.
- 한도·키 정책을 **문서 확인 없이** 추측 구현.
- 원인 미확정 상태에서 “고쳤다/안전하다” 단정.
- 코드 미분석 **추측성 대안** 나열 · 짧은 추측 턴 반복으로 토큰 낭비.
## 6. 🚨 국내→해외/탭 이식 — 복붙 ≠ 완료 (위반 시 허위 보고)
국내 탭/API를 “그대로 가져왔다”는 **복사만으로는 완료가 아니다.**