From 1d0c218dd0d55f4f30553acdfc75d87597fd26cd Mon Sep 17 00:00:00 2001 From: happybell80 Date: Sat, 23 Aug 2025 15:58:00 +0900 Subject: [PATCH] =?UTF-8?q?rb8001=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20?= =?UTF-8?q?=EC=8A=A4=ED=82=AC=20=ED=86=B5=ED=95=A9=20=EB=B0=8F=20=ED=83=80?= =?UTF-8?q?=EC=9E=84=EC=A1=B4=20=EC=84=A4=EC=A0=95=20=ED=8A=B8=EB=9F=AC?= =?UTF-8?q?=EB=B8=94=EC=8A=88=ED=8C=85=20=EB=AC=B8=EC=84=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 이메일 스킬 rb8001 내장 통합 분석 - Dockerfile 타임존 Asia/Seoul 설정 문서화 - 아키텍처 변화 및 영향 정리 - STATE_SERVICE_URL 이슈 기록 --- ...일_스킬_통합_및_타임존_설정.md | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 troubleshooting/250823_happybell80_rb8001_이메일_스킬_통합_및_타임존_설정.md diff --git a/troubleshooting/250823_happybell80_rb8001_이메일_스킬_통합_및_타임존_설정.md b/troubleshooting/250823_happybell80_rb8001_이메일_스킬_통합_및_타임존_설정.md new file mode 100644 index 0000000..ce79993 --- /dev/null +++ b/troubleshooting/250823_happybell80_rb8001_이메일_스킬_통합_및_타임존_설정.md @@ -0,0 +1,206 @@ +# rb8001 이메일 스킬 통합 및 타임존 설정 + +## 작성일: 2025-08-23 +## 작성자: happybell80 with Claude + +--- + +## 1. 변경 사항 개요 + +### 1.1 이메일 스킬 통합 (2025-08-21) +- **작업자**: 0914eagle +- **커밋**: `2e4cbe8` - stash에서 복원한 변경사항 커밋 +- **주요 변경**: 이메일 스킬을 rb8001에 직접 통합 + +### 1.2 타임존 설정 (2025-08-23) +- **작업자**: 서버 관리자 +- **커밋**: `6c36add` - Dockerfile timezone Asia/Seoul 설정 +- **목적**: 로그 시간을 한국 시간(KST)으로 표시 + +--- + +## 2. 이메일 스킬 통합 상세 + +### 2.1 추가된 파일 +```python +# app/skills/email_integration.py (312줄) +- Gmail API 통합 로직 +- 이메일 읽기/보내기 기능 +- Slack 명령어 처리 +``` + +### 2.2 수정된 파일 + +#### app/router/router.py +```python +# Gmail 요청 확인 및 처리 추가 +email_result = await email_integration.process_email_request(message, user_id, channel) +if email_result[0] or email_result[1] is not None: + return { + "success": email_result[0], + "message": email_result[1], + "service": "gmail", + "execution_plan": {"intent": "email", "skills": ["email"]} + } +``` + +#### main.py +```python +# 이메일 관련 엔드포인트 추가 +@app.post("/email/send") +@app.get("/email/messages") +@app.post("/email/process") +``` + +--- + +## 3. 타임존 설정 상세 + +### 3.1 Dockerfile 변경 +```dockerfile +# timezone을 위한 셋팅 +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Asia/Seoul + +# 시스템 패키지에 tzdata 추가 +RUN apt-get update && apt-get install -y \ + gcc \ + build-essential \ + curl \ + rustc \ + cargo \ + tzdata \ # <- 추가 + && rm -rf /var/lib/apt/lists/* +``` + +### 3.2 영향 +- 모든 로그 타임스탬프가 KST로 표시 +- scheduled 작업이 한국 시간 기준으로 실행 +- DB 저장 시간은 변경 없음 (UTC 유지) + +--- + +## 4. 아키텍처 변화 + +### 이전 구조 +``` +사용자 → Gateway → skill-email(8501) → Gmail API + ↘ rb8001 → skill-email 호출 +``` + +### 현재 구조 +``` +사용자 → Gateway → rb8001(내장 email_integration) → Gmail API + ↘ skill-email(8501) 폴백 +``` + +### 장점 +- 네트워크 호출 감소 +- 응답 속도 향상 +- 단일 컨테이너로 Gmail 기능 제공 + +### 주의사항 +- skill-email과 중복 기능 +- 토큰 관리가 두 곳에서 발생 가능 + +--- + +## 5. 관련 이슈 + +### 5.1 STATE_SERVICE_URL 미설정 +- **현상**: rb8001이 레벨 1로 표시 +- **원인**: STATE_SERVICE_URL 환경변수 없음 +- **영향**: DB의 실제 스탯을 불러오지 못함 +- **해결 방안**: docker-compose.yml에 추가 필요 +```yaml +environment: + - STATE_SERVICE_URL=http://192.168.219.52:8507 +``` + +### 5.2 이메일 스킬 중복 +- **현상**: rb8001과 skill-email 모두 Gmail 처리 +- **우선순위**: rb8001 내장 > skill-email 서비스 +- **권장**: 한 곳으로 통합 + +--- + +## 6. 테스트 방법 + +### 6.1 이메일 기능 테스트 +```bash +# Slack에서 +/email 읽기 +/email 보내기 recipient@example.com "제목" "내용" + +# API 직접 호출 +curl -X POST http://192.168.219.52:8001/email/send \ + -H "Content-Type: application/json" \ + -d '{ + "user_id": "happybell80", + "to": "recipient@example.com", + "subject": "테스트", + "body": "테스트 메일" + }' +``` + +### 6.2 타임존 확인 +```bash +# 컨테이너 내부 +docker exec rb8001 date + +# 로그 확인 +docker logs rb8001 --tail 10 +# 시간이 KST(+09:00)로 표시되는지 확인 +``` + +--- + +## 7. 교훈 + +### 스킬 통합 방식 +- **외부 서비스**: 확장성 좋음, 관리 복잡 +- **내장 통합**: 성능 좋음, 확장성 제한 +- **선택 기준**: 사용 빈도와 성능 요구사항 + +### 타임존 관리 +- **컨테이너**: TZ 환경변수로 설정 +- **애플리케이션**: datetime 처리 시 timezone aware 필요 +- **DB**: UTC 유지, 표시할 때만 변환 + +### 환경변수 관리 +- 필수 환경변수는 문서화 +- 기본값 설정으로 fallback 제공 +- docker-compose.yml과 .env 동기화 + +--- + +## 8. 향후 개선사항 + +1. **STATE_SERVICE_URL 설정** + - rb8001이 실제 레벨 표시하도록 + +2. **이메일 스킬 통합 정리** + - rb8001 내장 vs skill-email 서비스 중 선택 + - 중복 코드 제거 + +3. **로깅 개선** + - 타임존 정보 포함 + - 이메일 처리 상세 로그 + +4. **모니터링** + - Gmail API 사용량 추적 + - 응답 시간 측정 + +--- + +## 9. 참고 파일 + +- `rb8001/app/skills/email_integration.py` +- `rb8001/app/router/router.py` +- `rb8001/Dockerfile` +- `rb8001/docker-compose.yml` +- `skill-email/services/gmail_service.py` + +--- + +*작성 완료: 2025-08-23 16:00* \ No newline at end of file