diff --git a/00_프로젝트_종합_v2.md b/00_프로젝트_종합_v2.md index 8cdb00b..67f15d5 100644 --- a/00_프로젝트_종합_v2.md +++ b/00_프로젝트_종합_v2.md @@ -97,16 +97,16 @@ LV.3 (매니저) → 간단한 응대 자동화 - **스킬 독립성**: 100개 로빙이 1개 스킬 서비스 공유 (리소스 효율성) ### 데이터 아키텍처: Polyglot Persistence -- **PostgreSQL**: 사용자, 스탯, 스킬 메타데이터 -- **ChromaDB**: 대화 내용, 벡터 임베딩, 장기 기억 -- **Neo4j**: 사용자 간 관계, 감정 이력 (계획) -- **Redis**: 세션 데이터, 캐시 (계획) +- **PostgreSQL**: 사용자, 스탯, 스킬 메타데이터 (운영 중) +- **ChromaDB**: 대화 내용, 벡터 임베딩, 장기 기억 (운영 중) +- **Neo4j**: 사용자 간 관계, 감정 이력 (구현 예정) +- **Redis**: 세션 데이터, 캐시 (구현 예정) --- ## 스탯과 성장 시스템 -### 4+1 핵심 스탯 +### 5종 핵심 스탯 | 스탯 | 초기값 | 최대값 | 실제 영향 | |-----|--------|--------|-----------| | 기억(Memory) | 5 | 105 | 저장 용량, 검색 정확도 | @@ -223,6 +223,6 @@ LV.3 (매니저) → 간단한 응대 자동화 --- **문서 생성일**: 2025-07-01 -**최종 업데이트**: 2025-07-29 -**버전**: 2.1 -**수정 내용**: 관련 문서 링크 업데이트 (GUI 공유 아키텍처 추가, 트러블슈팅 경로 수정) \ No newline at end of file +**최종 업데이트**: 2025-07-30 +**버전**: 2.2 +**수정 내용**: 스탯 시스템 통일 (5종 스탯 - 반응 제외, 윤리 추가), 데이터베이스 구현 상태 명시 \ No newline at end of file diff --git a/docs/architecture/00_아키텍쳐.md b/docs/architecture/00_아키텍쳐.md index 8b7802d..12407c8 100755 --- a/docs/architecture/00_아키텍쳐.md +++ b/docs/architecture/00_아키텍쳐.md @@ -53,10 +53,10 @@ modified: 2025-07-07 데이터의 종류와 활용 목적에 따라 최적의 데이터베이스를 조합하여 사용합니다. -- **관계형 DB (PostgreSQL)**: 사용자 정보, 스탯, 스킬 메타데이터 등 정형화된 데이터를 저장하고 트랜잭션 일관성을 보장합니다. -- **벡터 DB (ChromaDB, Pinecone)**: 대화 내용, 문서 등을 임베딩하여 저장하고, 의미 기반의 유사도 검색을 통해 에이전트의 장기 기억과 맥락 이해를 돕습니다. -- **그래프 DB (Neo4j)**: 스타트업, 투자자, 기술 등 객체 간의 복잡한 관계를 분석하고 시각화하는 데 사용됩니다. -- **인메모리 DB (Redis)**: 세션 데이터나 임시 캐시를 저장하여 빠른 응답 속도를 보장합니다. +- **관계형 DB (PostgreSQL)**: 사용자 정보, 스탯, 스킬 메타데이터 등 정형화된 데이터를 저장하고 트랜잭션 일관성을 보장합니다. (현재 운영 중) +- **벡터 DB (ChromaDB)**: 대화 내용, 문서 등을 임베딩하여 저장하고, 의미 기반의 유사도 검색을 통해 에이전트의 장기 기억과 맥락 이해를 돕습니다. (현재 운영 중) +- **그래프 DB (Neo4j)**: 스타트업, 투자자, 기술 등 객체 간의 복잡한 관계를 분석하고 시각화하는 데 사용됩니다. 사용자 간 관계, 감정 이력 추적 등에 활용 예정입니다. (구현 예정) +- **인메모리 DB (Redis)**: 세션 데이터나 임시 캐시를 저장하여 빠른 응답 속도를 보장합니다. API 응답 캐싱, 실시간 상태 관리 등에 필수적입니다. (구현 예정) ### 3.3. 함수형 프로그래밍 접근법 diff --git a/docs/architecture/skillhub_architecture.md b/docs/architecture/skillhub_architecture.md index 5df158c..70a2070 100755 --- a/docs/architecture/skillhub_architecture.md +++ b/docs/architecture/skillhub_architecture.md @@ -1,27 +1,84 @@ -# Skillhub 플러그인 아키텍처 설계 요약 +# Skillhub 마이크로서비스 아키텍처 설계 ## 개요 -이 문서는 제너럴 뉴스 콜렉터와 포맷 변환기 그리고 게시기 스킬을 플러그인 형태로 구성하는 시스템의 설계 내용을 요약합니다. 설계 목표는 초기에는 단일 프로세스 플러그인 구조로 시작하고 이후 필요에 따라 하이브리드 혹은 마이크로서비스 환경으로 자연스럽게 확장할 수 있는 유연성을 확보하는 것입니다. +이 문서는 로빙의 스킬 시스템을 HTTP API 기반 마이크로서비스로 구성하는 아키텍처를 설명합니다. 각 스킬은 독립된 마이크로서비스로 배포되어 로빙 본체와 HTTP 통신을 통해 상호작용하며, 리소스 효율성과 확장성을 동시에 달성합니다. ## 핵심 설계 원칙 -1. 모든 스킬은 Python 패키지로 배포되며 setuptools entry_points 기능을 활용해서 런타임에 동적으로 탐색됩니다. -2. 스킬 간 인터페이스는 추상 클래스 기반으로 고정하여 호출 방식이 일관되도록 합니다. -3. 각 스킬은 독립 가상 환경에 설치되어 의존성 충돌과 장애 전파를 방지합니다. -4. 파이프라인 정의 파일로 콜렉터, 포맷터, 퍼블리셔의 실행 순서를 선언합니다. -5. 스킬 패키지는 메타데이터에 지원 API 버전과 입출력 스키마 정보를 명확히 포함합니다. +1. 모든 스킬은 독립된 FastAPI 기반 마이크로서비스로 개발되어 Docker 컨테이너로 배포됩니다. +2. 스킬 간 통신은 표준화된 HTTP REST API를 통해 이루어지며, JSON 기반 요청/응답을 사용합니다. +3. 각 스킬은 독립된 컨테이너에서 실행되어 의존성 충돌과 장애 전파를 방지합니다. +4. 로빙 본체는 스킬 레지스트리를 통해 사용 가능한 스킬 목록과 엔드포인트를 관리합니다. +5. 100개의 로빙이 1개의 스킬 서비스를 공유하여 리소스 효율성을 극대화합니다. -## 데이터 스키마 검증 -모든 데이터 모델은 Pydantic 클래스로 선언합니다. 스키마는 Python 코드 수준에서 검증되고, 필요 시 model.schema_json 메서드를 통해 JSON Schema 파일을 자동 생성하여 문서화합니다. 파이프라인 실행기는 단계별 입출력 객체가 예상한 타입인지 추가로 검사하여 불일치 시 즉시 예외를 발생시킵니다. +## 마이크로서비스 구조 +``` +로빙 본체 (Container) + │ + ├─[HTTP API]→ skill-email:8501 + ├─[HTTP API]→ skill-news:8505 + ├─[HTTP API]→ skill-pdf:8502 (계획) + ├─[HTTP API]→ skill-calendar:8503 (계획) + └─[HTTP API]→ skill-digest:8504 (계획) +``` -## 버전 관리 전략 -Semantic Versioning을 적용합니다. 메이저 버전은 호환성을 끊는 변경에만 증가시키고 마이너 버전은 호환되는 기능 추가에, 패치 버전은 버그 수정에 사용합니다. skillhub 메타데이터의 api_version 필드는 런타임 호환 범위를 지정합니다. 동일한 스킬 이름이라도 버전이 다르면 별도 가상 환경에 설치되어 공존할 수 있습니다. +각 스킬 서비스는: +- FastAPI로 구현된 REST API 제공 +- 표준화된 /execute 엔드포인트 +- Pydantic 모델 기반 요청/응답 검증 +- 독립적인 로깅 및 모니터링 -## 구현 단계 로드맵 -1. skillhub-core 패키지에 인터페이스, 스키마, 로더, 가상 환경 관리 도구를 담아 우선 배포합니다. -2. 참조 스킬 세 가지를 작성합니다. 일반 뉴스 콜렉터, 요약 포맷 변환기, 이메일 퍼블리셔가 그 예입니다. -3. GitHub Actions에서 스키마 검증과 단위 테스트를 자동화합니다. -4. GitHub Organization에 registry.yaml 파일을 두고 초기에 승인된 스킬 메타데이터를 관리합니다. -5. 운영 환경에서는 파이프라인 정의 파일을 불러와 순차적으로 스킬을 실행하고 로그와 결과물을 외부 저장소로 보관합니다. +## API 표준화 +모든 스킬 서비스는 다음 표준을 따릅니다: +```python +# 요청 +POST /execute +{ + "user_id": "string", + "robeing_id": "string", + "params": {...} # 스킬별 파라미터 +} -## 향후 확장 포인트 -자연어 명령으로 스킬 조합을 자동 생성하거나 다른 프로그래밍 언어로 작성된 스킬을 통합해야 할 시점이 오면 LangGraph 같은 오케스트레이션 레이어를 추가합니다. 기존 플러그인 인터페이스는 그대로 유지되므로 변경 범위가 최소화됩니다. +# 응답 +{ + "success": bool, + "data": {...}, # 스킬별 결과 + "error": "string" # 실패 시 +} +``` + +## 현재 구현 상태 +### 완료된 스킬 서비스 +1. **skill-email (8501)**: Gmail API 연동, 이메일 읽기/전송 + - 독립 마이크로서비스로 완전 분리 + - Nginx 리버스 프록시 설정 완료 + +2. **skill-news (8505)**: 뉴스 수집 및 요약 + - Google News API 연동 + - 자동 요약 기능 + +### 계획 중인 스킬 +1. **skill-digest (8504)**: Thread 대화 요약 +2. **skill-pdf (8502)**: PDF 파싱 및 변환 +3. **skill-calendar (8503)**: 캘린더 연동 및 일정 관리 + +## 배포 및 운영 +### 배포 구조 +- 모든 스킬은 Docker 컨테이너로 패키징 +- docker-compose를 통한 일괄 배포 +- 51124 서버에서 모든 스킬 서비스 실행 +- Nginx를 통한 리버스 프록시 설정 + +### 스킬 레지스트리 +로빙 본체는 사용 가능한 스킬 목록을 다음과 같이 관리: +```python +SKILL_REGISTRY = { + "email": "http://skill-email:8501", + "news": "http://skill-news:8505", + # 추가 스킬... +} +``` + +### 확장성 +- 새로운 스킬 추가 시 독립된 서비스로 개발 +- 기존 스킬에 영향 없이 배포 가능 +- 스킬별 독립적인 스케일링 가능 diff --git a/docs/implementation/prd.md b/docs/implementation/prd.md index e4b4ae7..7f4d956 100755 --- a/docs/implementation/prd.md +++ b/docs/implementation/prd.md @@ -8,7 +8,7 @@ - Thread Digest (대화 요약) - Action Extractor (투두 추출 및 캘린더 연동) - PDF 파싱 및 HTML 변환 -- **성장 시스템**: 경험치 기반 레벨업, 5종 스탯(기억, 연산, 반응, 공감, 통솔) 관리 +- **성장 시스템**: 경험치 기반 레벨업, 5종 스탯(기억, 연산, 공감, 통솔, 윤리) 관리 - **아이템 시스템**: JWT 기반 API 권한 토큰 발급 및 관리 - **사용자 피드백 반영**: 평가 기반 정밀도 개선 및 경험치 획득 @@ -28,6 +28,8 @@ - **데이터베이스**: - PostgreSQL (스탯, 경험치, 스킬 기록) - Chroma Vector DB (대화 내용 기억) + - Neo4j (사용자 간 관계, 감정 이력) - 계획 + - Redis (세션 데이터, 캐시) - 계획 - **PDF 처리**: PyMuPDF 또는 pdfminer.six - **권한 관리**: JWT 기반 토큰 시스템 @@ -83,7 +85,7 @@ - **메모리 관리**: 효율적인 벡터 검색 및 저장 정책 # Appendix -- **기술 스택**: FastAPI, PostgreSQL, Chroma, LangChain, OpenAI API, Slack API, PyMuPDF +- **기술 스택**: FastAPI, PostgreSQL, Chroma, Neo4j, Redis, LangChain, OpenAI API, Slack API, PyMuPDF - **핵심 메트릭**: 응답 정확도, 처리 속도, 사용자 만족도, 기억 정확도 - **성공 지표**: 일일 활성 사용, 스킬 사용 빈도, 피드백 점수, 레벨업 달성률 diff --git a/docs/philosophy/robeing_stats_growth_design.md b/docs/philosophy/robeing_stats_growth_design.md index 1ed1f4e..d07f8b6 100755 --- a/docs/philosophy/robeing_stats_growth_design.md +++ b/docs/philosophy/robeing_stats_growth_design.md @@ -7,7 +7,7 @@ date: 2025-07-01 ## 요약 -로빙은 4가지 스탯(기억, 연산, 공감, 통솔)을 기반으로 성장하며, 전체 레벨은 20까지 존재한다. 각 레벨업마다 5개의 스탯 포인트를 분배하며, 스탯 자체에 레벨은 없고 누적 포인트만 존재한다. 이 구조를 통해 로빙은 사용자 피드백을 반영해 점진적으로 특화된 존재형 에이전트로 발전하고, 레벨 20 도달 시 ‘스카웃 시장’에 등록될 수 있다. +로빙은 5가지 스탯(기억, 연산, 공감, 통솔, 윤리)을 기반으로 성장하며, 전체 레벨은 20까지 존재한다. 각 레벨업마다 5개의 스탯 포인트를 분배하며, 스탯 자체에 레벨은 없고 누적 포인트만 존재한다. 이 구조를 통해 로빙은 사용자 피드백을 반영해 점진적으로 특화된 존재형 에이전트로 발전하고, 레벨 20 도달 시 ‘스카웃 시장’에 등록될 수 있다. --- @@ -15,7 +15,7 @@ date: 2025-07-01 - **전체 레벨**: 1~20 - **총 스탯 포인트**: 20단계 × 5포인트 = 100포인트 -- **스탯 종류**: 기억(Memory), 연산(Compute), 공감(Empathy), 통솔(Leadership) +- **스탯 종류**: 기억(Memory), 연산(Compute), 공감(Empathy), 통솔(Leadership), 윤리(Ethics) - **포인트 분배**: 각 레벨업 시 로빙이 사용자 피드백을 반영해 자율 결정 - **스탯에는 레벨 없음**, 포인트로만 성장 @@ -37,6 +37,9 @@ date: 2025-07-01 | 통솔 | 1~10 | 액션 추출, 할 일 정리 | | | 11~20 | 일정 재배열, 우선순위 조정 | | | 21~30 | 멀티 유저 조정, 대체안 제안 | +| 윤리 | 1~10 | 안전 체크, 공정성 검토 | +| | 11~20 | 편향 경고, 위험 방지 | +| | 21~30 | 도덕적 판단, 선행 체크 | --- @@ -56,9 +59,10 @@ date: 2025-07-01 ## 4. 활용 시나리오 -- **대표 A**: 감정 중심 커뮤니케이션 → 공감 40, 기억 30 중심 분포 -- **대표 B**: 전략 중심 의사결정 → 기억 35, 통솔 30 중심 분포 -- **대표 C**: 정리·기록 중시 → 연산 40, 기억 30 중심 분포 +- **대표 A**: 감정 중심 커뮤니케이션 → 공감 30, 기억 25, 윤리 20 중심 분포 +- **대표 B**: 전략 중심 의사결정 → 기억 30, 통솔 25, 연산 20 중심 분포 +- **대표 C**: 정리·기록 중시 → 연산 35, 기억 25, 윤리 15 중심 분포 +- **대표 D**: 안전·규정 준수 중시 → 윤리 35, 통솔 20, 기억 20 중심 분포 이러한 분포는 **로빙의 디지털 이력서**이자 **스카웃 시장에서의 포지셔닝 근거**가 된다. diff --git a/troubleshooting/250730_happybell80_프로젝트문서일관성수정.md b/troubleshooting/250730_happybell80_프로젝트문서일관성수정.md new file mode 100644 index 0000000..ceb07c0 --- /dev/null +++ b/troubleshooting/250730_happybell80_프로젝트문서일관성수정.md @@ -0,0 +1,53 @@ +# 250730 프로젝트 문서 일관성 수정 + +## 문제 상황 +프로젝트 문서들 간에 심각한 논리적 불일치가 발견됨: + +1. **스킬 아키텍처 충돌**: skillhub_architecture.md는 Python 패키지 기반 플러그인 시스템을 설명하지만, 실제 구현은 HTTP API 기반 마이크로서비스 +2. **데이터베이스 구현 격차**: 설계 문서는 PostgreSQL + ChromaDB + Neo4j + Redis를 명시하지만, 실제로는 PostgreSQL + ChromaDB만 운영 중 +3. **스탯 시스템 불일치**: PRD는 5종 스탯(기억/연산/반응/공감/통솔), 종합 문서는 4+1 스탯(윤리 추가)으로 혼재 + +## 해결 방안 +happybell80님의 방향성 확인: +- 실제 구현(HTTP API 마이크로서비스)이 맞음 +- Neo4j, Redis도 추가 예정 +- 스탯은 5종(기억/연산/공감/통솔/윤리) - 반응 제외 + +## 수정 작업 + +### 1. skillhub_architecture.md +- 전면 개편: Python 플러그인 → HTTP API 마이크로서비스 +- 현재 구현 상태 반영 (skill-email:8501, skill-news:8505) +- Docker 기반 배포 구조 명시 + +### 2. 00_아키텍쳐.md +- Polyglot Persistence 섹션 수정 +- PostgreSQL, ChromaDB: "(현재 운영 중)" +- Neo4j, Redis: "(구현 예정)" + +### 3. PRD.md +- 5종 스탯으로 통일 (반응 제외, 윤리 추가) +- 데이터베이스에 Neo4j, Redis 추가 (계획 표시) + +### 4. 00_프로젝트_종합_v2.md +- "4+1 핵심 스탯" → "5종 핵심 스탯" +- 데이터베이스 구현 상태 명시 +- 버전 2.2로 업데이트 + +### 5. robeing_stats_growth_design.md +- 4종 → 5종 스탯으로 수정 +- 윤리 스탯 성장 단계 추가: + - 1~10: 안전 체크, 공정성 검토 + - 11~20: 편향 경고, 위험 방지 + - 21~30: 도덕적 판단, 선행 체크 + +## 결과 +모든 문서가 현재 구현 상태와 일치하도록 수정 완료. 향후 계획(Neo4j, Redis)도 명확히 표시. + +## 교훈 +프로젝트 진행 중 방향성이 바뀔 때는 관련 문서를 즉시 업데이트해야 함. 특히 아키텍처 문서는 실제 구현과 항상 동기화되어야 함. + +## 담당자 +- 요청: happybell80 +- 작업: admin (51123 서버) +- 일시: 2025-07-30 09:30 KST \ No newline at end of file