DOCS/troubleshooting/250929_happybell80_naverworks_briefing_weekend_email.md

2.7 KiB

date, author, tags
date author tags
2025-09-29 happybell80
naverworks
briefing
timezone

NaverWorks 브리핑 주말 이메일 누락 문제 해결

문제 상황

월요일 오전 9시 NaverWorks 일일 브리핑에서 주말(토,일) 이메일이 누락됨

  • 현재: 24시간만 조회 → 월요일 9시 기준 일요일 9시 이후 메일만 포함
  • 필요: 월요일은 72시간(금 9시월 9시), 화금은 24시간 조회

원인 분석

확인된 코드 문제점

  • rb8001/app/skills/naverworks_briefing.py:78: now = datetime.now() KST 없음
  • rb8001/app/skills/naverworks_briefing.py:79: yesterday = now - timedelta(hours=24) 고정값
  • rb8001/app/skills/naverworks_briefing.py:109-110,142: receivedTime 필드 사용 (실제 응답은 date)
  • rb8001/app/skills/naverworks_briefing.py:130,161: from 딕셔너리로만 처리
  • rb8001/app/skills/naverworks_briefing.py:209: Slack 날짜 표시도 KST 없음

적용된 해결책

FastAPI 구조 원칙: 비즈니스 로직(skills/)만 수정, 스케줄링(scheduler/jobs/)과 설정(settings.py)은 유지

1. 시간대 및 조회 기간

  • from zoneinfo import ZoneInfo 추가
  • 78번 라인: now = datetime.now(ZoneInfo("Asia/Seoul")) 적용 완료
  • 79-81번 라인: 월요일 72시간, 평일 24시간 로직 구현 완료
    hours = 72 if now.weekday() == 0 else 24
    start = now - timedelta(hours=hours)
    

2. 필드명 수정

  • 109-110번 라인: receivedTimedate 변경 완료
  • 142번 라인: 정렬 키 receivedTimedate 변경 완료
  • 163번 라인: 요약 시간 표시 receivedTimedate 변경 완료

3. from 필드 타입 안전 처리

  • 130-136번 라인: isinstance로 딕셔너리/문자열 구분 처리 완료
  • 160-166번 라인: 요약 발신자 정보도 타입 체크 추가 완료

4. Slack 날짜 KST 표시

  • 209번 라인: datetime.now(ZoneInfo('Asia/Seoul')) 적용 완료

환경 정보

51123 서버 (인증/DB)

  • NaverWorks 토큰 정상 작동
  • OAuth 토큰 자동 갱신 기능 있음
  • PostgreSQL naverworks_token 테이블 정상

51124 서버 (실행)

  • 실행: rb8001 컨테이너에서 매일 오전 9:10 (외부 크론)
  • 내부 APScheduler: rb8001/app/main.py:49에 있으나 env로 기본 비활성
  • DB 연결: PostgreSQL (DATABASE_URL 환경변수)
  • API 인증: skill-email은 X-API-Key 불필요, skill-slack은 X-API-Key 필수

배포 정보

  • 커밋 해시: 5156a9f
  • 배포 시간: 2025-09-29
  • 배포 방법: git push → Gitea Actions → 51124 서버 자동 배포
  • 환경변수: SERVICE_API_KEY 확인 완료

결과

  • 월요일 주말 이메일 누락 문제 해결
  • 모든 이메일 시간 정보 정상 표시
  • 발신자 정보 타입 안전 처리