rb8001 이메일 스킬 통합 및 타임존 설정 트러블슈팅 문서 작성
- 이메일 스킬 rb8001 내장 통합 분석 - Dockerfile 타임존 Asia/Seoul 설정 문서화 - 아키텍처 변화 및 영향 정리 - STATE_SERVICE_URL 이슈 기록
This commit is contained in:
parent
2927802a9a
commit
1d0c218dd0
206
troubleshooting/250823_happybell80_rb8001_이메일_스킬_통합_및_타임존_설정.md
Normal file
206
troubleshooting/250823_happybell80_rb8001_이메일_스킬_통합_및_타임존_설정.md
Normal 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*
|
||||
Loading…
x
Reference in New Issue
Block a user