Add troubleshooting: Email skill integration and skill architecture design

- Document email skill integration attempts
- Explain skill architecture philosophy
- Record path and network issues discovered
- Provide solutions for server deployment
This commit is contained in:
happybell80 2025-07-18 19:24:54 +09:00
parent 2db30c767d
commit 591e1c5983

View File

@ -0,0 +1,73 @@
# 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, 향후 마이크로서비스)