mmday-firebase/TODO.md
윤정민 c7e4ed8c22 Standardize game status values and make favorite team optional.
- `GameStatus` 타입을 `scheduled`, `live`, `completed`, `cancelled`로 변경하여 상태 관리의 일관성을 높였습니다.
- 사용자 프로필의 `favoriteTeamCode`를 선택 사항으로 변경하고, null 또는 undefined 입력에 대한 처리를 추가했습니다.
- KBO 데이터 병합 과정에 상세 로그를 도입하여 실시간 데이터 매칭 및 외부 API 호출 실패 상황에 대한 가시성을 확보했습니다.
- 상태 값 변경에 따라 영향받는 서비스 로직과 테스트 코드를 일괄 업데이트했습니다.
2026-04-14 23:08:45 +09:00

1.8 KiB

TODO

KBO 일정/라이브 머지 관련

남은 작업

  • 클라이언트 쪽 점수 표시 이슈 조사

    • 서버 머지는 정상 (로그 확인 완료: 5/5 매칭, 점수·상태 정상 반영)
    • 브라우저 Network 탭에서 실제 응답 바디에 awayScore/homeScore 값이 들어오는지 확인
    • 값이 들어오는데 0으로 보이면 → 프런트 렌더링 로직 점검
    • 값이 null/0으로 오면 → 응답 직렬화/DTO 매핑 레이어 점검 (scheduleService.ts 등)
  • parseGameId 수정 (src/kbo/schedule.ts:151)

    • 현재 Schedule.aspx에서 모든 게임의 gameId가 null로 파싱됨 (로그에서 gameId=null 5건 확인)
    • 정규식 /gameId=([A-Za-z0-9]+)/가 실제 relay 셀 HTML 구조와 안 맞을 가능성
    • 지금은 (awayTeamCode, homeTeamCode, time) 폴백으로 매칭되고 있지만 더블헤더 발생 시 같은 카드 2경기가 섞일 위험
    • KBO 응답의 relay 셀 실제 HTML을 확인하고 파서 보정 필요
  • mergeLiveIntoSchedule 진단 로그 제거 (src/repositories/kboRepository.ts)

    • 점수 이슈 해결 후 [kbo-merge] console.log 전부 제거
  • deploy 스크립트에 build 포함

    • package.json:10 "deploy": "firebase deploy --only functions""tsc && firebase deploy --only functions"
    • 현재는 npm run build 빠뜨리면 구버전 lib/ 그대로 배포됨

향후 확장 여지

  • 라이브 상세 필드 별도 엔드포인트로 노출
    • 이닝/카운트/주자/현재 타자·투수는 "스케줄 파악" 목적에서 제외했으나, 라이브 상세 화면 필요 시 getGameList 직접 노출하는 별도 핸들러 추가 고려
  • formatYmd(new Date())todayKst() 기반으로 통일
    • 현재 TZ=Asia/Seoul 의존. 환경 변경 시 취약