mmday-firebase/TODO.md
윤정민 f1cf9610f4 Document the in-memory caching strategy for KBO game list data.
- 게임 리스트 조회 시 Firestore 공유 캐시 대신 인스턴스 단위 인메모리 캐시를 사용하는 기술적 근거를 상세히 기록했습니다.
- 실시간 경기 중 빈번한 데이터 변경으로 인한 Firestore 비용 부담과 레이턴시 문제를 해결하기 위한 결정임을 명시했습니다.
- 향후 트래픽 증가나 외부 API의 일시적인 503 오류 등 서비스 안정성에 영향을 줄 수 있는 상황에 대비하여, 공유 캐시로의 격상 검토안을 TODO에 추가했습니다.
2026-04-14 23:13:34 +09:00

35 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/` 그대로 배포됨
### 향후 확장 여지
- [ ] **GameList 캐시를 Firestore 공유 캐시로 격상 검토**
- 현재: `gameListService.ts`의 10초 메모리 캐시 (인스턴스별)
- 트래픽 증가 시 인스턴스 수 × (6회/분)로 KBO 호출 증가 → rate limit 리스크
- 격상안: `kboCacheRepository.getOrFetch` 사용, 키 `gameList_day__YYYYMMDD__series`, TTL은 스케줄과 동일한 동적(라이브 30s, 종료 7d) 방식
- 지금은 불필요. 트래픽/에러율 지표 보고 결정
- [ ] 라이브 상세 필드 별도 엔드포인트로 노출
- 이닝/카운트/주자/현재 타자·투수는 "스케줄 파악" 목적에서 제외했으나, 라이브 상세 화면 필요 시 `getGameList` 직접 노출하는 별도 핸들러 추가 고려
- [ ] `formatYmd(new Date())``todayKst()` 기반으로 통일
- 현재 TZ=Asia/Seoul 의존. 환경 변경 시 취약