한 줄 요약: 1주차 끝엔 “종목 1개, AI 판단 1번 성공”이 전부였다. 2주차가 끝난 지금은 10종목이 매일 밤 사람 없이 자동으로 판단·기록되고, 방문자가 직접 시나리오를 돌려볼 수 있는 계산기까지 갖춘 사이트가 실제로 공개돼 있다.
이런 분께 도움돼요: “만들기”에서 “운영되는 상태로 유지하기”로 넘어가는 단계를 궁금해하는 분, AI에게 코드 리뷰를 맡겨본 적 없는 분, 자동화 파이프라인에서 중복 실행 같은 실전 버그를 다뤄본 적 없는 분.
Before → After
| 1주차 끝 | 2주차 끝 | |
|---|---|---|
| 매매 로직 | 1종목, 수동 1회 실행 | 10종목, 매일 자동 실행 |
| 화면 | 없음 | 상태표·수익률 그래프·매매 히스토리 |
| 방문자 기능 | 없음 | 종목·날짜·금액을 골라 시뮬레이션하는 “만약 계산기” |
| 코드 품질 | 확인 안 함 | AI 4개 관점 병렬 리뷰로 실제 중복 로직 발견·정리 |
| 안정성 | — | 중복 실행 버그를 원인까지 찾아 재발 방지 장치 추가 |
어떻게 만들었나
1. 자동화 파이프라인부터 굳혔다
10종목 전체에 매수/매도 판단 로직을 적용하고, GitHub Actions로 매일 밤 사람 개입 없이 돌게 만들었다. 첫 실전 실행은 npm ci 한 줄이 빠져서 실패했지만, 로그를 그대로 읽고 원인을 잡아 바로 해결했다.
2. 대시보드 3종 + 방문자 인터랙티브 기능
상태표·수익률 그래프(차트 라이브러리 없이 SVG 좌표를 직접 계산)·매매 히스토리까지 만든 뒤, 여기서 멈추지 않았다. “AI 판단 vs Buy & Hold” 비교 그래프를 추가하다가, 원래 원했던 건 방문자가 직접 시작 날짜·금액을 골라보는 것이었다는 걸 알아챘다. 이미 만든 걸 버리지 않고 범위를 다시 확인해서, **로그인·서버 없이 브라우저에서 바로 계산되는 “만약 계산기”**로 재설계했다.
// 종목의 실제 매매 기록을 날짜순으로 재생하기만 하면, "그때 넣었으면 지금 얼마"가 나온다
export function applyDecision(state, 판단, 가격) {
if (판단 === '매수' && state.보유수량 === 0) {
const 수량 = Math.floor(state.현금 / 가격);
if (수량 > 0) {
state.현금 -= 수량 * 가격;
state.보유수량 = 수량;
}
} else if (판단 === '매도' && state.보유수량 > 0) {
state.현금 += state.보유수량 * 가격;
state.보유수량 = 0;
}
}
3. AI에게 코드 리뷰를 맡겼다
/simplify 스킬로 재사용·단순화·효율성·구조(고도) 4가지 관점을 병렬로 돌려 코드를 점검했다. 실제로 진짜 문제 하나를 잡아냈다 — 매수/매도 규칙이 자동매매 스크립트와 대시보드 계산기, 두 군데에 따로 타이핑돼 있던 것. 공용 규칙 파일로 뽑아 정리하고, 나머지 제안(과한 방어 코드 제거 등)은 “지금 규모에선 오히려 손대는 게 더 위험하다”고 판단해 의도적으로 넘겼다 — AI 제안을 전부 받아들이는 게 아니라 골라서 적용하는 것도 이번 주 배운 판단력이다.
4. 프로덕션 버그를 증상이 아니라 원인까지 고쳤다
밤사이 자동 실행 결과를 확인하다가, 수동 실행과 예약 실행이 겹쳐서 매매 기록이 종목마다 두 번씩 쌓이고 있던 걸 발견했다. 사실 이 문제는 1주차 끝 무렵에도 한 번 나왔던 것인데, 그땐 눈에 보이는 숫자만 정리하고 진짜 원인(같은 날 중복 실행을 막는 장치가 없던 것)은 그대로 남아있었다. 이번엔 데이터를 정리하는 데서 멈추지 않고, “오늘 이미 실행됐으면 건너뛰기” 가드를 코드에 넣어서 재발 자체를 막았다.
배운 점 / 재사용 자산
- 목표를 채운 뒤에도 “이게 맞나”를 한 번 더 묻기 — 완성했다고 끝내지 않고, 원래 의도와 다시 맞춰보는 습관이 결과물의 완성도를 갈랐다.
- AI 코드 리뷰는 다각도로, 그리고 골라서 적용 — 재사용·단순화·효율성·구조 4개 관점을 병렬로 돌리면 진짜 문제와 과한 제안을 구분해서 볼 수 있다.
- 버그는 증상이 아니라 원인까지 — “정리했다”와 “다시 안 생기게 했다”는 다르다.
- 안 되면 되돌리는 것도 실력이다 — 커스텀 도메인처럼 예상보다 손이 더 가는 작업은, 화면을 보며 확인해야 안전한 시점에 억지로 밀어붙이지 않고 원래 상태로 되돌린 뒤 다음으로 넘어갔다.
지금 여기서 직접 확인 가능: kevin-one-murex.vercel.app/dashboard — 로그인 없이 누구나 바로 볼 수 있다.