[계획 문서 경로] - common-docs/improvement/plans/dev-plan-2026-03-06-autotrade-ai-signal-context.md [요구사항 요약] - 자동매매에서 AI에 넘기는 신호 생성 입력값이 신규 프롬프트 요구사항을 만족하는지 점검한다. - 부족한 데이터가 있으면 실제 신호 요청 payload에 추가한다. - 변경 후 검증 결과까지 남긴다. [가정] - 신규 프롬프트의 핵심 요구는 `직전 강한 움직임 + 최근 1분봉 압축 구간` 판단이다. - 현재 전달 중인 최근 체결/호가 파생값만으로는 캔들 구조 판단이 부족하다. - 실시간 주문 루프는 유지하되, 추가 데이터는 기존 KIS 차트 API를 재사용해 보강한다. [영향 범위] - 수정: features/autotrade/hooks/useAutotradeEngine.ts - 수정: features/autotrade/apis/autotrade.api.ts - 수정: features/autotrade/types/autotrade.types.ts - 수정: app/api/autotrade/signals/generate/route.ts - 수정: lib/autotrade/openai.ts - 수정: lib/autotrade/cli-provider.ts - 수정: common-docs/improvement/plans/dev-plan-2026-03-06-autotrade-ai-signal-context.md - 추가: 없음 - 삭제: 없음 [구현 단계] - [x] 1. 현재 신호 생성 입력값과 신규 프롬프트 요구사항 차이를 정리한다. - 근거: 기존 signal payload에는 틱/호가/체결 파생값만 있고, 최근 1분봉 OHLCV와 원본 사용자 prompt가 빠져 있었음. - [x] 2. 최근 1분봉 OHLCV와 관련 파생값을 담을 타입/요청 스키마를 추가한다. - 근거: `features/autotrade/types/autotrade.types.ts`, `app/api/autotrade/signals/generate/route.ts` - [x] 3. 자동매매 훅에서 최근 1분봉 데이터를 조회/캐시하고 신호 요청 snapshot에 포함한다. - 근거: `features/autotrade/hooks/useAutotradeEngine.ts` - [x] 4. OpenAI/구독형 CLI 프롬프트가 새 입력값을 활용하도록 지시문을 보강한다. - 근거: `lib/autotrade/openai.ts`, `lib/autotrade/cli-provider.ts` - [x] 5. 로그 요약에 새 입력 데이터가 보이도록 정리한다. - 근거: `features/autotrade/hooks/useAutotradeEngine.ts` [사용할 MCP/Skills] - MCP: next-devtools(init), update_plan - Skills: dev-auto-pipeline, dev-plan-writer, dev-mcp-implementation, dev-refactor-polish, dev-test-gate, dev-plan-completion-checker, vercel-react-best-practices [참조 문서(common-docs)] - common-docs/api-reference/kis_api_reference.md - common-docs/api-reference/kis-error-code-reference.md - common-docs/features/trade-stock-sync.md - common-docs/ui/GLOBAL_ALERT_SYSTEM.md [주석/문서 반영 계획] - 함수 주석: [목적]/[사용처]/[데이터 흐름] 유지 - 상태 주석: 값 변경 시 화면/주문 루프 영향 한 줄 설명 - 복잡 로직/핸들러: [Step 1], [Step 2], [Step 3] 구조 유지 - JSX 구역 주석: 기존 구조 유지, 필요 시 최소 보강 [리스크/회귀 포인트] - 1분봉 조회를 신호 루프마다 과도하게 호출하면 응답 지연이 늘 수 있다. - 차트 조회 실패 시 신호 생성 자체가 막히지 않도록 기존 snapshot fallback을 유지해야 한다. - 타입 확장 후 route/request schema가 불일치하면 신호 요청이 400으로 실패할 수 있다. [검증 계획] - [x] 1. 타입/요청 스키마가 일치하는지 `npm run lint`로 확인한다. - 결과: 통과 - [x] 2. OpenAI/CLI 프롬프트에 1분봉 데이터와 압축 구간 판단 지시가 반영됐는지 코드로 확인한다. - 결과: `operatorPrompt`, `recentMinuteCandles`, `minutePatternContext` 활용 지시 반영 완료 - [x] 3. 신호 요청 snapshot 로그에 새 필드가 노출되는지 코드 기준으로 확인한다. - 결과: `snapshotSummary`, `snapshot` 로그에 minutePattern/recentMinuteCandlesTail 반영 완료 [진행 로그] - 2026-03-06: 기존 snapshot은 틱/호가/체결 파생값은 충분하지만, 1분봉 캔들 구조 데이터가 없어 신규 패턴 프롬프트 기준으로는 입력이 부족하다고 판단함. - 2026-03-06: 신호 요청에 원본 사용자 prompt를 추가해, 전략 요약으로 축약되던 세부 규칙이 신호 생성 단계에도 직접 전달되도록 수정함. - 2026-03-06: 최근 1분봉 OHLCV 24개와 minutePatternContext(직전 추세/압축 범위/압축 거래량비/박스 상하단)를 snapshot에 추가함. - 2026-03-06: `npm run lint`, `npm run build` 통과. `nextjs_call(get_errors)` 기준 3001 개발 서버에서 브라우저 세션 오류 없음 확인. 브라우저 자동화 스모크는 로컬 Chrome 프로필 충돌로 미실행. - 2026-03-06: BUY 신호인데 주문이 나가지 않는 원인을 추가 점검한 결과, `maxOrderAmountRatio`가 낮으면 전체 예산으로 1주를 살 수 있어도 주문 수량이 0주가 되는 문제가 확인됨. `lib/autotrade/risk.ts`에서 최소 1주 보정 로직을 추가하고 `npm run lint`, `npm run build` 재통과 확인.