mmday-firebase/TODO.md
윤정민 a59ccf3314 Implement user profile updates and synthesize KBO game IDs.
- 사용자 프로필 수정을 위한 `PATCH` 핸들러와 `updateMe` 서비스를 구현하여 닉네임, 응원팀, 지식 수준 변경 기능을 추가했습니다.
- HTML 정규식 파싱 오류로 인해 `null`이 반환되던 `gameId` 문제를 해결하기 위해 일정 메타데이터 기반의 ID 생성 로직을 도입했습니다.
- `updateUser`가 `FieldValue`를 수용하도록 개선하여 응원팀 설정 해제(필드 삭제)가 가능하도록 수정했습니다.
- 닉네임 중복 확인 및 변경 규칙 검증을 포함한 유저 서비스 테스트 케이스를 작성하고 `TODO.md` 이슈를 해결했습니다.
2026-04-18 15:53:29 +09:00

1.8 KiB
Raw Blame History

TODO

KBO 일정/라이브 머지 관련

남은 작업

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

    • 서버 머지는 정상 (로그 확인 완료: 5/5 매칭, 점수·상태 정상 반영)
    • 브라우저 Network 탭에서 실제 응답 바디에 awayScore/homeScore 값이 들어오는지 확인
    • 값이 들어오는데 0으로 보이면 → 프런트 렌더링 로직 점검
    • 값이 null/0으로 오면 → 응답 직렬화/DTO 매핑 레이어 점검 (scheduleService.ts 등)
  • 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 의존. 환경 변경 시 취약