# Email Skill 통합 및 스킬 아키텍처 설계

**날짜**: 2025-07-18  
**작업자**: happybell80 & Claude

## 오후 7시 24분

### Email Skill을 rb10508_test에 통합

**배경**:
- 로빙이 이메일 기능을 사용하려면 email skill 통합 필요
- 초기에는 별도 서비스(포트 8100)로 구상했으나 아키텍처 재검토

**스킬 아키텍처 철학 정립**:
1. **스킬의 정의**: 로빙이 레벨업할 때 획득하는 내재화된 기능
2. **컨테이너 외부 배치**: 100개의 로빙이 하나의 스킬 서비스 공유
3. **마이크로서비스 패턴**: 각 스킬은 독립 포트에서 실행
4. **스킬 레지스트리**: 중앙에서 스킬 위치 및 상태 관리

**구현 과정**:

1. **초기 시도 - HTTP 클라이언트 방식**
   ```python
   # app/skills/email_skill.py
   class EmailSkill:
       def __init__(self):
           self.base_url = "http://localhost:8100"
   ```
   - 문제: skill_email 서비스가 실행되지 않아 연결 실패

2. **아키텍처 재검토**
   - 질문: "로빙 내부에 스킬을 탑재한 이유가 없잖아"
   - 결론: 직접 import 방식으로 전환

3. **최종 구현 - Direct Import 방식**
   ```python
   # skill_email 경로 추가
   sys.path.append('/home/happybell/projects/ivada/skill_email')
   
   # GmailService 직접 사용
   from services.gmail_service import GmailService
   ```

**문제점 발견**:
1. **경로 하드코딩**: 로컬 개발 경로가 코드에 고정
2. **Docker 네트워크 격리**: localhost:9000 접근 불가
3. **모듈 import 실패**: 서버 경로와 로컬 경로 불일치

**해결 방안**:
```python
# 환경변수 사용
SKILL_EMAIL_PATH = os.environ.get('SKILL_EMAIL_PATH', '/home/admin/skill_email')
AUTH_SERVER_URL = os.environ.get('AUTH_SERVER_URL', 'http://auth-server:9000')
```

**Docker 설정 필요**:
```yaml
volumes:
  - /home/admin/skill_email:/code/skill_email:ro
environment:
  - SKILL_EMAIL_PATH=/code/skill_email
  - AUTH_SERVER_URL=http://localhost:9000  # host 모드
```

**다음 작업**:
- 서버에서 경로 문제 해결
- Docker 볼륨 마운트 설정
- 환경변수 기반 설정으로 코드 수정

**교훈**:
- 개발 환경과 서버 환경의 차이 고려 필수
- 하드코딩된 경로는 항상 문제 발생
- 스킬 아키텍처는 단계적으로 구현 (현재는 import, 향후 마이크로서비스)