KBO 경기의 기상청 예보와 최근 3년 우천취소 이력을 바탕으로, “오늘 직관을 가도 될까?”를 빠르게 판단하도록 돕는 서비스입니다.
배포 서비스: build-the-dom.vercel.app
- 오늘·내일·모레 KBO 경기와 구장별 직관 판단
- 기상청 단기예보 기반 강수확률·예상 강수량·경기 전 비 여부 반영
- 최근 3년 유사 날씨 경기의 우천취소 이력 반영
- 충분한 표본의 높은 취소율은 위험도 score 하한으로 적용
- 경기
played상태에서는 날씨 대신 KBO 팀별 스코어 표시 - 응원팀을 브라우저에 저장하고 날짜별 해당 팀 경기를 자동 선택
- 판단 근거는 접히는 상세 표에서 확인
- Next.js 16 / React 19 / TypeScript / Tailwind CSS
- Prisma / PostgreSQL (Supabase 등)
- 기상청 API Hub 단기예보, 기상청 ASOS 시간 관측
- KBO 공식 일정, GitHub Actions, Vercel
Node.js 20 이상과 PostgreSQL 데이터베이스가 필요합니다.
npm install
cp .env.example .env.local
npm run db:migrate
npm run dev.env.local에는 다음 값을 입력합니다.
| 이름 | 용도 |
|---|---|
DATABASE_URL |
PostgreSQL 연결 문자열 |
KMA_AUTH_KEY |
기상청 API Hub 단기예보 인증키 |
KMA_ASOS_SERVICE_KEY |
최근 3년 ASOS 관측값 적재용 인증키 |
CRON_SECRET |
예보 갱신 엔드포인트 보호용 비밀값 |
KMA_ASOS_SERVICE_KEY는 과거 이력을 적재할 때만 필요합니다.
# 현재 일정과 오늘·내일·모레(+1일) 예보 캐시 갱신
npm run sync:weather
# KBO 과거 일정 적재
npm run sync:kbo-history
# 과거 관측 연결 확인
npm run sync:kbo-weather-history -- 1
# 최근 3년 완료 경기의 과거 관측값 전체 적재
npm run sync:kbo-weather-history현재 예보는 경기별 캐시에 저장되며, 화면은 GET /api/weather?date=YYYYMMDD로 해당 날짜의 결과를 한 번에 읽습니다. 상세 설계와 score 정책은 날씨 캐시 전략 문서에서 확인할 수 있습니다.
소규모 사용자 피드백을 받을 때는 QA 피드백 가이드를 기준으로 질문과 반영 우선순위를 정리합니다.
기본 점수는 경기 시간대 강수확률·예상 강수량·경기 전 비 여부로 계산합니다. 완전 일치 유사 표본이 5경기 이상이면 우천취소율을 score 하한으로 사용합니다. 강수량만 일치한 표본도 5경기 이상이고 취소율이 60% 이상이면 같은 방식으로 반영합니다.
예를 들어 비슷한 조건의 6경기 중 5경기가 우천취소됐다면, 예보 점수가 낮아도 최종 score는 최소 83점입니다. 돔구장은 강수 영향이 낮은 것으로 처리합니다.
Vercel에 배포한 뒤 환경 변수 DATABASE_URL, KMA_AUTH_KEY, KMA_ASOS_SERVICE_KEY, CRON_SECRET을 설정합니다.
운영 배포는 master push가 아니라 v* 태그 push로만 실행합니다. 자세한 절차는 릴리즈 프로세스를 확인하세요.
Vercel Hobby의 크론 제약을 보완하기 위해 GitHub Actions가 매시 17분(UTC)에 /api/cron/weather를 호출합니다. 저장소의 Settings → Secrets and variables → Actions에 아래 값을 설정하세요.
| 구분 | 이름 | 값 |
|---|---|---|
| Secret | CRON_SECRET |
Vercel의 CRON_SECRET과 동일한 값 |
| Variable | VERCEL_DEPLOYMENT_URL |
예: https://build-the-dom.vercel.app |
Actions 탭의 날씨 예보 캐시 갱신 워크플로에서 Run workflow를 눌러 수동 갱신도 할 수 있습니다.
- 예보와 KBO 일정 상태는 바뀔 수 있습니다. 최종 경기 진행 여부는 KBO 공식 공지가 기준입니다.
- 응원팀 설정은 로그인 계정이 아니라 현재 브라우저의
localStorage에만 저장됩니다.
서비스는 KBO 다이아고딕을 사용합니다. 글꼴의 지적 재산권은 (사)한국야구위원회에 있으며, 공식 배포본을 수정하지 않고 포함했습니다. 개인·기업의 웹사이트 사용과 재배포가 허용되지만 글꼴 자체의 수정·개작 및 판매는 금지됩니다. 자세한 조건은 KBO 다이아고딕 라이선스를 확인하세요.