ChatbotTimeslotFirebaseCORSCI/CDTroubleshooting
Chatbot & Timeslot 통합 트러블슈팅 (2026-04-22)
2026. 4. 22.3분 읽기
Chatbot & Timeslot 통합 트러블슈팅 (2026-04-22)
날짜: 2026-04-22 내용: Chatbot 및 Timeslot 프로젝트의 기능 고도화 및 운영 이슈 해결
1. Chatbot — CI/CD 및 인프라 최적화
[문제 1] CI 배포 권한 및 구조 분리
- 증상: Firebase CI 배포 중 IAM 권한 오류 및 배포 속도 저하.
-
**해결**:functions와hosting배포를 명확히 분리하여firebase deploy --only functions,firebase deploy --only hosting으로 최적화.- GitHub Actions에서 필요한 IAM 역할을 세분화하여 추가.
firebase-tools버전을 v15로 고정하여 호환성 문제 해결.
[문제 2] CORS 및 패키지
의존성 이슈
- 증상:
widget.js호출 시 CORS 차단 및 Cloud Functions에서nodemailer임베딩 실패. - 해결:
functions내부에cors미들웨어를 직접 추가하고pnpm워크스페이스 구조에 맞게 모듈 경로 조정.nodemailerv8(ESM)과 v6(CJS) 간의 호환성 문제를 해결하기 위해 v6로 다운그레이드하여 안정성 확보.
[기능 고도화]
- B-side UI 개선 (아이콘 커스텀, 관리자 이메일 매핑).
- Google OAuth 초대 시스템 및 설정 페이지 디자인 리뉴얼.
- 위젯 CSS를 IIFE로 번들링하여 스타일 간섭 방지.
2. Timeslot — 운영 도구 및 상태 관리 최적화
[기능 추가] 배치 생성기 내
부스별 브레이크 타임 토글
- 상황: 모든 부스에 동일한 브레이크 타임을 적용하던 방식에서, 부스별로 개별 제어가 필요함.
- 해결:
batch generatorUI에 부스별 브레이크 타임 활성화/비활성화 토글 추가 및 로직 구현.
[문제 해결] 상태 관리 및 데이터 정합성
- 증상: 페이지 전환 시 이전
상태(
setAttendeeCurrentPage)가 남아있어 데이터 오염 발생. - 해결: 상태 제거 후 남은 참조 코드를 전수 조사하여 제거.
- 개선: 예약/체크인 카운트 시 Firebase의
atomic increment를 적용하여 데이터 정합성 보장. - UI: 타임 피커에
awayMode배지 추가 및 존 이탈 방지 가드 구현.
교훈: 프로젝트가 커질수록 CI/CD 권한 관리와 상태 초기화 로직의 중요성이 커진다. 특히 멀티테넌트(Chatbot) 환경에서는 CORS와 ESM/CJS 호환성을 사전에 체크하는 습관이 필요하다.