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:
parent
2db30c767d
commit
591e1c5983
@ -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, 향후 마이크로서비스)
|
||||||
Loading…
x
Reference in New Issue
Block a user