docs: NaverWorks 브리핑 문서 수정 - 의사코드 제거, 사실만 기록

This commit is contained in:
happybell80 2025-09-29 10:27:26 +09:00
parent 6325b282eb
commit 4badc8f8d5

View File

@ -12,36 +12,31 @@ tags: [naverworks, briefing, timezone, langgraph]
- 필요: 월요일은 72시간(금 9시~월 9시), 화~금은 24시간 조회 - 필요: 월요일은 72시간(금 9시~월 9시), 화~금은 24시간 조회
## 원인 분석 ## 원인 분석
`rb8001/app/skills/naverworks_briefing.py:79`에서 고정 24시간만 사용: ### 현재 코드 문제점
```python - `rb8001/app/skills/naverworks_briefing.py:78`: `now = datetime.now()` KST 없음
yesterday = now - timedelta(hours=24) # 항상 24시간 - `rb8001/app/skills/naverworks_briefing.py:79`: `yesterday = now - timedelta(hours=24)` 고정값
``` - `rb8001/app/skills/naverworks_briefing.py:109-110,142`: `receivedTime` 필드 사용
- `rb8001/app/skills/naverworks_briefing.py:130,161`: `from` 딕셔너리로만 처리
- `rb8001/app/skills/naverworks_briefing.py:209`: Slack 날짜 표시도 KST 없음
## 해결 방안 ## 수정 필요 사항
### 1. 즉시 수정 (KST 타임존 + 월요일 판단) ### 1. 시간대 및 조회 기간
```python - 78번 라인: ZoneInfo("Asia/Seoul") 적용
from zoneinfo import ZoneInfo - 79번 라인: 월요일(weekday()==0) 72시간, 화~금 24시간
KST = ZoneInfo("Asia/Seoul") - 85-86번 라인: startSearchDate, endSearchDate는 ISO 형식 유지
# 78-79번 라인 수정 ### 2. 필드명 및 타입 처리
now = datetime.now(KST) - skill-email 응답: `date` 필드 사용 (`receivedTime` 아님)
hours = 72 if now.weekday() == 0 else 24 # 월요일(0)은 72시간 - `from` 필드: 문자열 또는 객체 혼재 가능 (isinstance 체크 필요)
start = now - timedelta(hours=hours)
```
### 2. 추가 개선사항 ### 3. 현재 스케줄러 정보
- `receivedTime``date` 필드명 수정 (skill-email 실제 응답 필드) - 실행: 매일 오전 9:10 (크론)
- `from` 필드 문자열/객체 혼재 처리 (타입 체크 필수) - 위치: rb8001 컨테이너 내부
- Slack 메시지 날짜도 KST 명시 - DB 연결: PostgreSQL (DATABASE_URL 환경변수)
### 3. LangGraph 적용 검토
**목적**: 실패 복구와 확장성 개선
- StateGraph로 각 단계를 노드화 (UUID조회→메일조회→필터링→요약→Slack전송)
- 체크포인트로 부분 실패 시 해당 단계만 재실행
- 향후 병렬 처리, Human-in-the-loop, 다계정 동시 처리 가능
## 교훈 ## 교훈
- **타임존 명시 필수**: `datetime.now()` 대신 `datetime.now(KST)` 사용 - 타임존 명시: naive datetime 대신 KST 명시적 사용
- **요일별 로직 차별화**: 업무 특성상 월요일은 주말 포함 조회 필요 - 요일별 조회 기간: 월요일은 주말 포함 72시간 필요
- **복잡한 워크플로우는 오케스트레이션 도구 고려**: 단순 함수 체인보다 LangGraph가 실패 복구에 유리 - API 응답 필드: 실제 응답 필드명 확인 필수
- 타입 안전성: 문자열/객체 혼재 가능성 고려