rb8001 이메일 스킬 통합 및 타임존 설정 트러블슈팅 문서 작성

- 이메일 스킬 rb8001 내장 통합 분석
- Dockerfile 타임존 Asia/Seoul 설정 문서화
- 아키텍처 변화 및 영향 정리
- STATE_SERVICE_URL 이슈 기록
This commit is contained in:
happybell80 2025-08-23 15:58:00 +09:00
parent 2927802a9a
commit 1d0c218dd0

View File

@ -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*