diff --git a/plans/250823_4pm_email_briefing_demo_plan.md b/plans/250823_4pm_email_briefing_demo_plan.md new file mode 100644 index 0000000..4e9db13 --- /dev/null +++ b/plans/250823_4pm_email_briefing_demo_plan.md @@ -0,0 +1,217 @@ +# 오후 4시 이메일 브리핑 자동화 데모 계획 + +## 작성일: 2025-08-23 +## 목표 시간: 2025-08-23 16:00 +## 작성자: 51123 서버 관리자 + +--- + +## 1. 데모 개요 + +### 1.1 핵심 목표 +- **매일 오후 4시 정각** 각 사용자의 Gmail을 자동으로 읽고 요약 +- 이메일을 중요도별로 분류 (긴급/중요/일반) +- Slack DM과 웹 프론트엔드에 동시 전송 +- 3명의 사용자 동시 테스트 + +### 1.2 성공 기준 +- ✅ 오후 4시 정각 자동 실행 (수동 트리거 없음) +- ✅ 3명 사용자 개별 이메일 요약 생성 +- ✅ Slack DM 자동 전송 +- ✅ 웹 대시보드 실시간 업데이트 + +--- + +## 2. 시스템 아키텍처 + +### 2.1 관련 서비스 및 포트 +| 서버 | 서비스 | 포트 | 역할 | +|------|--------|------|------| +| 51123 | robeing-gateway | 8100 | API 프록시, JWT 인증 | +| 51123 | auth-server | 9000 | OAuth 인증 | +| 51123 | PostgreSQL | 5432 | 데이터베이스 | +| 51124 | rb8001 | 8001 | 메인 로빙 (스케줄러 실행) | +| 51124 | skill-email | 8501 | Gmail 읽기/요약 | +| 51124 | robeing-monitor | 9024 | Gmail 토큰 관리 | + +### 2.2 데이터 흐름 +1. rb8001 컨테이너에서 스케줄러 실행 +2. skill-email 서비스 호출하여 이메일 수집 +3. 이메일 요약 생성 +4. Slack API 및 프론트엔드로 전송 + +--- + +## 3. 시퀀스 다이어그램 + +### 3.1 오후 4시 자동 실행 시퀀스 + +```mermaid +sequenceDiagram + participant Scheduler as rb8001
Scheduler + participant SkillEmail as skill-email
(8501) + participant Monitor as robeing-monitor
(9024) + participant DB as PostgreSQL + participant Gmail as Gmail API + participant Slack as Slack API + participant Frontend as Web Frontend + + Note over Scheduler: 매일 16:00:00 + + Scheduler->>DB: 활성 사용자 목록 조회 + DB-->>Scheduler: users (3명) + + loop 각 사용자별 처리 + Scheduler->>Monitor: Gmail 토큰 확인
(X-User-Id) + Monitor->>DB: gmail_tokens 조회 + DB-->>Monitor: token_data + + alt 토큰 유효 + Monitor-->>Scheduler: 토큰 정보 + Scheduler->>SkillEmail: 이메일 요약 요청
(user_id, token) + + SkillEmail->>Gmail: 최근 24시간 이메일 조회 + Gmail-->>SkillEmail: 이메일 목록 + + SkillEmail->>SkillEmail: 이메일 분류
(긴급/중요/일반) + SkillEmail->>SkillEmail: 요약 생성 + + SkillEmail-->>Scheduler: 요약 결과 + + par Slack 전송 + Scheduler->>Slack: DM 전송
(user_slack_id) + Slack-->>Scheduler: 전송 완료 + and 프론트엔드 업데이트 + Scheduler->>DB: 요약 저장 + Frontend->>DB: 폴링/WebSocket + DB-->>Frontend: 새 요약 데이터 + end + + else 토큰 없음/만료 + Monitor-->>Scheduler: NO_TOKEN + Scheduler->>DB: 에러 로그 기록 + end + end + + Note over Scheduler: 다음 실행: 16:00:00 +1일 +``` + +### 3.2 이메일 분류 및 요약 프로세스 + +```mermaid +sequenceDiagram + participant SE as skill-email + participant Gmail as Gmail API + participant AI as AI Model + + SE->>Gmail: messages.list()
(최근 24시간) + Gmail-->>SE: message_ids[] + + loop 각 메일별 + SE->>Gmail: messages.get(id) + Gmail-->>SE: 메일 상세 + + SE->>SE: 메타데이터 추출
(발신자, 제목, 시간) + SE->>AI: 중요도 분류 요청 + AI-->>SE: 긴급/중요/일반 + end + + SE->>SE: 카테고리별 그룹화 + SE->>AI: 전체 요약 생성 + AI-->>SE: 요약 텍스트 + + SE-->>SE: 최종 포맷팅 + Note over SE: 📧 일일 브리핑
긴급: N건
중요: N건
일반: N건 +``` + +--- + +## 4. 구현 체크리스트 + +### 4.1 51123 서버 (완료) +- [x] OAuth 로그인 시스템 +- [x] JWT 인증 구현 +- [x] Gateway UUID 변환 +- [x] PostgreSQL 사용자 관리 + +### 4.2 51124 서버 (진행 중) +- [ ] rb8001 스케줄러 구현 + - [ ] Python schedule 라이브러리 설치 + - [ ] 16:00 트리거 설정 + - [ ] 사용자 목록 조회 로직 +- [ ] skill-email 요약 기능 + - [ ] Gmail API 연동 확인 + - [ ] 이메일 분류 로직 + - [ ] AI 요약 프롬프트 +- [ ] Slack DM 전송 + - [ ] Slack API 토큰 설정 + - [ ] DM 채널 ID 매핑 + +### 4.3 프론트엔드 (확인 필요) +- [ ] JWT 헤더 전송 +- [ ] 실시간 업데이트 (폴링/WebSocket) +- [ ] 요약 표시 UI + +--- + +## 5. 테스트 시나리오 + +### 5.1 사전 준비 +1. 3명 사용자 Gmail OAuth 인증 완료 +2. 각 사용자별 테스트 이메일 준비 +3. Slack 워크스페이스 접속 + +### 5.2 테스트 진행 +| 시간 | 액션 | 예상 결과 | +|------|------|----------| +| 15:55 | 시스템 상태 확인 | 모든 서비스 정상 | +| 15:58 | 테스트 이메일 발송 | Gmail 수신 확인 | +| 16:00 | 자동 실행 | 스케줄러 트리거 | +| 16:01 | Slack 확인 | DM 수신 확인 | +| 16:01 | 웹 확인 | 대시보드 업데이트 | + +--- + +## 6. 장애 대응 + +### 6.1 예상 이슈 +| 이슈 | 원인 | 대응 | +|------|------|------| +| 스케줄러 미실행 | 시간대 설정 | TZ 환경변수 확인 | +| Gmail API 실패 | 토큰 만료 | 토큰 갱신 | +| Slack 전송 실패 | API 제한 | 재시도 로직 | +| 프론트엔드 미갱신 | 캐시 | 강제 새로고침 | + +### 6.2 모니터링 포인트 +- rb8001 컨테이너 로그 +- skill-email 서비스 로그 +- PostgreSQL 쿼리 로그 +- nginx 액세스 로그 + +--- + +## 7. 다음 단계 + +### 7.1 데모 후 개선사항 +- 이메일 필터링 옵션 +- 요약 커스터마이징 +- 시간대별 설정 +- 팀 단위 브리핑 + +### 7.2 확장 계획 +- 캘린더 연동 +- 작업 우선순위 제안 +- 자동 회신 기능 +- 다국어 지원 + +--- + +## 8. 연락처 + +- 51123 서버: 서버 관리자 +- 51124 서버: 개발팀 +- 긴급 상황: Slack #dev-emergency + +--- + +*이 문서는 2025-08-23 오후 4시 데모를 위한 실행 계획입니다.* \ No newline at end of file