From 04b78c7ebc726c67a74f9cce8824af19caf5e673 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Wed, 10 Sep 2025 15:51:06 +0900 Subject: [PATCH] docs: harmonize rb8001/rb10508 roles, gateway routing, ports; unify proxy_pass slashes; externalize RAG; fix nginx-infra refs; generalize embedding dims; skill sharing notes --- 000_프로젝트_종합_v3.md | 18 +++++----- ..._컨테이너와_마이크로서비스.md | 8 ++--- 300_architecture/README.md | 14 ++++---- ...VP_개발기_구조_일정_시행착오.md | 6 ++-- ..._claude_rb10408_vs_rb10508_비교분석.md | 6 ++-- ideas/250909_ocr_skill_implementation_plan.md | 5 ++- .../250909_로빙_검색_API_통합_전략.md | 36 +++++++++---------- plans/250807_서비스_재구조화_계획.md | 8 ++--- troubleshooting/250716_auth_server_setup.md | 12 +++---- 9 files changed, 58 insertions(+), 55 deletions(-) diff --git a/000_프로젝트_종합_v3.md b/000_프로젝트_종합_v3.md index ddbeecd..1c1feb9 100644 --- a/000_프로젝트_종합_v3.md +++ b/000_프로젝트_종합_v3.md @@ -95,10 +95,10 @@ version: 3.0 │ 51124 서버 (서비스 운영) │ ├─────────────────────────────────────────────┤ │ 로빙 서비스: │ -│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ -│ │rb8001 │ │rb10408 │ │rb10508 │ │ -│ │(테스트) │ │(미디어) │ │(메인) │ │ -│ └─────────┘ └─────────┘ └─────────┘ │ +│ ┌────────────┐ ┌─────────┐ ┌──────────────┐ │ +│ │rb8001 │ │rb10408 │ │rb10508_micro │ │ +│ │(메인/프로덕션)│ (미디어) │ │(테스트) │ │ +│ └────────────┘ └─────────┘ └──────────────┘ │ │ │ │ 스킬 서비스: │ │ ┌─────────┐ ┌─────────┐ ┌──────────┐ │ @@ -143,17 +143,19 @@ sequenceDiagram participant U as User participant S as Slack participant N as nginx(51123) - participant R as rb10508(51124) + participant G as Gateway(8100) + participant R as rb8001(51124) participant E as Embedding participant DB as PostgreSQL participant C as ChromaDB U->>S: 메시지 입력 S->>N: Webhook 전달 - N->>R: 요청 라우팅 + N->>G: 요청 전달 + G->>R: 라우팅 R->>DB: 스탯/레벨 조회 R->>E: 텍스트 임베딩 - E-->>R: 384차원 벡터 + E-->>R: 임베딩 벡터(모델 종속 차원) R->>C: 유사 기억 검색 C-->>R: 관련 컨텍스트 R->>R: LLM 처리 @@ -359,4 +361,4 @@ sequenceDiagram > "로빙과 함께라면, 당신은 더 이상 혼자가 아닙니다." -*Last Updated: 2025.01.31* \ No newline at end of file +*Last Updated: 2025.01.31* diff --git a/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md b/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md index abcd2d5..33819fb 100644 --- a/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md +++ b/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md @@ -27,7 +27,7 @@ | 서버 | IP | 역할 | 주요 서비스 | |------|-----|------|------------| | 51123 | 192.168.219.45 | 메인 서버 | Gitea, nginx, auth-server, PostgreSQL | -| 51124 | 192.168.219.52 | 로빙/스킬 서버 | rb8001, rb10508, skill-email, ChromaDB | +| 51124 | 192.168.219.52 | 로빙/스킬 서버 | rb8001, rb10508_micro, skill-email, ChromaDB | ### 기본 구조 ``` @@ -53,7 +53,7 @@ │ │ rb8001 (8001) │ │ │ │ rb10508_micro (10508) │ │ │ │ skill-email (8501) │ │ -│ │ skill-news (8502) │ │ +│ │ skill-news (8505) │ │ │ └─────────────────────────────┘ │ │ ┌─────────────────────────────┐ │ │ │ ChromaDB (8000) │ │ @@ -146,7 +146,7 @@ robeing.conversations: id, robeing_id, user_message, robeing_response | 10508 | rb10508_micro | 테스트 로빙 | | 10408 | rb10408_test | 개발 로빙 | | 8501 | skill-email | Gmail 스킬 | -| 8502 | skill-news | 뉴스 스킬 | +| 8505 | skill-news | 뉴스 스킬 | | 8000 | ChromaDB | 벡터 DB | ### API 엔드포인트 @@ -336,4 +336,4 @@ Gateway (8100) **업데이트**: 2025-08-21 **작성자**: 로빙 개발팀 **버전**: 2.0 -**상태**: 구현 중 \ No newline at end of file +**상태**: 구현 중 diff --git a/300_architecture/README.md b/300_architecture/README.md index 5d15a3e..9bffe60 100644 --- a/300_architecture/README.md +++ b/300_architecture/README.md @@ -41,11 +41,13 @@ Embedding: Separated Service (Memory Optimization) ## 시스템 구조 이해하기 ``` -User → Slack → rb10508 Container → PostgreSQL/ChromaDB - ↓ - Embedding Service - ↓ - Skill Services +User → Slack → nginx → Gateway(8100) → rb8001(프로덕션) + ↓ + Embedding Service + ↓ + Skill Services (HTTP) + ↓ + PostgreSQL / ChromaDB ``` ## 실습 과제 @@ -59,4 +61,4 @@ User → Slack → rb10508 Container → PostgreSQL/ChromaDB - 동시 처리: 5개 요청 ## 다음 단계 -Part 4 [성장과 진화](../400_growth/README.md)에서 이 아키텍처 위에서 어떻게 성장하는지 학습하세요. \ No newline at end of file +Part 4 [성장과 진화](../400_growth/README.md)에서 이 아키텍처 위에서 어떻게 성장하는지 학습하세요. diff --git a/500_business/510_3개월_MVP_개발기_구조_일정_시행착오.md b/500_business/510_3개월_MVP_개발기_구조_일정_시행착오.md index e8f5eef..a2e17df 100644 --- a/500_business/510_3개월_MVP_개발기_구조_일정_시행착오.md +++ b/500_business/510_3개월_MVP_개발기_구조_일정_시행착오.md @@ -51,7 +51,7 @@ sudo chown -R 999:999 ./chromadb_data - 3초 룰 구현 (빠른 응답 후 처리) - 메시지 큐 시스템 -**rb10508 (메인 브레인)**: +**rb10508 (메인 브레인) [당시 기준 — 현행: rb8001가 메인]**: - 기억 시스템 구현 - 감정 모델 통합 - PostgreSQL 연동 @@ -103,7 +103,7 @@ WebSocket connection to 'ws://localhost:10508' failed // 해결: nginx 프록시 설정 location /ws { - proxy_pass http://172.17.0.1:10508; + proxy_pass http://172.17.0.1:10508/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; @@ -254,4 +254,4 @@ async def execute_skill(skill_name: str, params: dict): 로빙은 이제 단순한 챗봇이 아니다. 기억하고, 느끼고, 성장하는 AI 에이전트다. 앞으로도 계속 진화할 것이다. -**"도구에서 동료로, 동료에서 친구로"** - 이것이 로빙이 가는 길이다. \ No newline at end of file +**"도구에서 동료로, 동료에서 친구로"** - 이것이 로빙이 가는 길이다. diff --git a/ideas/250811_claude_rb10408_vs_rb10508_비교분석.md b/ideas/250811_claude_rb10408_vs_rb10508_비교분석.md index 20f96ea..1b519d9 100644 --- a/ideas/250811_claude_rb10408_vs_rb10508_비교분석.md +++ b/ideas/250811_claude_rb10408_vs_rb10508_비교분석.md @@ -368,8 +368,8 @@ class HTTPEmbeddingFunction: |----------|------|------|-----------|-------------| | **skill_email** | 8501 | 운영 중 (6일) | 이메일 조회/발송 | rb10408, rb10508 | | **skill-news** | 8505 | 정상 (2시간) | 뉴스 검색/요약 | rb10408, rb10508 | -| **skill-slack** | 8503 | 정상 (2시간) | Slack 메시지 처리 | rb10408만 | -| **skill-embedding** | 8515 | 정상 (6일) | 텍스트 임베딩 생성 | rb10508만 | +| **skill-slack** | 8503 | 정상 (2시간) | Slack 메시지 처리 | 공용(원칙) — 현재 rb10408만 연결, 확대 예정 | +| **skill-embedding** | 8515 | 정상 (6일) | 텍스트 임베딩 생성 | 공용(원칙) — 현재 rb10508만 연결, 공용 전환 계획 | ### 스킬 통합 개선 방안 @@ -485,4 +485,4 @@ class HTTPEmbeddingFunction: --- -*이 문서는 2025년 8월 11일 51124 서버에서 실측한 데이터를 기반으로 작성되었습니다.* \ No newline at end of file +*이 문서는 2025년 8월 11일 51124 서버에서 실측한 데이터를 기반으로 작성되었습니다.* diff --git a/ideas/250909_ocr_skill_implementation_plan.md b/ideas/250909_ocr_skill_implementation_plan.md index 130cb17..9d21428 100644 --- a/ideas/250909_ocr_skill_implementation_plan.md +++ b/ideas/250909_ocr_skill_implementation_plan.md @@ -15,7 +15,7 @@ - 흐름: 업로드 → (PDF/이미지 분기) → skill-ocr HTTP 호출 → 텍스트/블록/메타 → RAG(ChromaDB) 저장 → 응답 - 컴포넌트 - rb*: 클라이언트 요청 처리, 파일 유형 판별, skill-ocr 호출만 담당 - - skill-ocr(8501): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등) + - skill-ocr(8506): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등) - Storage: `/mnt/hdd/uploads/{user_id}/`, 로그 `/mnt/hdd/logs/skill-ocr/` - Vector DB: ChromaDB(텍스트 조각) + PostgreSQL(메타) @@ -69,7 +69,7 @@ - 로그는 `/mnt/hdd/logs/skill-ocr/` 30일 롤링, 샘플: `Fallback to OCR`, `OCR quality low: confidence=0.72` ## 6) 배포 가이드(요약) -- 컨테이너: `skill-ocr`(8501) +- 컨테이너: `skill-ocr`(8506) - 볼륨: `-v /mnt/hdd/uploads:/mnt/hdd/uploads:ro`, `-v /mnt/hdd/logs/skill-ocr:/logs` - 환경: `LANGS=kor,eng`, `THREADS=N`, `USE_GPU=false|true` - 헬스체크: `GET /healthz` (main.py/Dockerfile/compose/workflows 동기화) @@ -100,4 +100,3 @@ - TrOCR: Hugging Face 문서, AAAI 논문 - Donut: GitHub, arXiv, 산업 적용 리뷰 - Kraken/Calamari: GitHub, 공식 문서 - diff --git a/ideas/250909_로빙_검색_API_통합_전략.md b/ideas/250909_로빙_검색_API_통합_전략.md index 9af34e5..dd1a430 100644 --- a/ideas/250909_로빙_검색_API_통합_전략.md +++ b/ideas/250909_로빙_검색_API_통합_전략.md @@ -2,7 +2,7 @@ **작성일**: 2025-09-09 **작성자**: happybell80 & Claude -**관련 서비스**: rb8001 (RAG 스킬 내부 구현) +**관련 서비스**: skill-rag (HTTP 외부 스킬) **핵심 기술**: Multi-provider Search API, Query Routing, Caching, RAG ## 1. 검색 프로바이더 계층 구조 @@ -25,7 +25,7 @@ 검색 의도 추가: LLM 프롬프트에 "검색 요청은 /search로" 또는 직접 패턴 매칭. ```python -# rb8001/app/skills/rag.py +# 예시 라우팅 (의도별 외부 호출) def route_by_pattern(query): if "뉴스" in query: return 'news_api' if "언제" in query: return 'duckduckgo' # 즉답 @@ -35,17 +35,17 @@ def route_by_pattern(query): ## 3. 구현 아키텍처 ``` -사용자 → rb8001 내부 RAG 스킬 - ↓ - [Query Router] - ↓ - [Provider Manager] - / | | \ -Tavily Brave Serper DuckDuckGo - ↓ - [Result Merger] - ↓ - [Redis Cache] +사용자 → rb8001 → (HTTP) skill-rag + ↓ + [Query Router] + ↓ + [Provider Manager] + / | | \ + Tavily Brave Serper DuckDuckGo + ↓ + [Result Merger] + ↓ + [Redis Cache] ``` ## 4. 캐싱 전략 @@ -66,17 +66,17 @@ Tavily Brave Serper DuckDuckGo ### 예상 월 비용: $0.05 -## 6. 구현 위치: rb8001/app/skills/rag.py +## 6. 구현 위치: skill-rag (외부 서비스) -별도 마이크로서비스 대신 rb8001 내부 RAG 스킬로 구현 -- 웹 검색 + 파일 RAG 통합 처리 +rb8001 내부 구현 대신 외부 RAG 스킬(HTTP)로 분리 +- 웹 검색 + 파일 RAG 통합 처리 (HTTP 인터페이스) - Phase 1: Tavily + DuckDuckGo 웹 검색 - Phase 2: ChromaDB 파일 검색 통합 -- Phase 3: 복잡도 증가 시 skill-rag 분리 +- Phase 3: 트래픽 증가 시 스케일아웃 (수평 확장) ## 7. 핵심 차별점 - 다층 프로바이더로 안정성 확보 - 쿼리 타입별 최적 API 자동 선택 - 무료 한도 최대 활용으로 비용 최소화 -- 캐싱으로 중복 검색 방지 \ No newline at end of file +- 캐싱으로 중복 검색 방지 diff --git a/plans/250807_서비스_재구조화_계획.md b/plans/250807_서비스_재구조화_계획.md index b7b742c..386fc62 100644 --- a/plans/250807_서비스_재구조화_계획.md +++ b/plans/250807_서비스_재구조화_계획.md @@ -43,11 +43,11 @@ ``` ├── 로빙 컨테이너 │ ├── rb8001:8001 (프로덕션) -│ ├── rb10508_test:10508 (테스트) -│ └── rb10408_test:10408 (테스트) +│ ├── rb10508_micro:10508 (테스트) +│ └── rb10408:10408 (테스트) ├── 스킬 서비스 │ ├── skill-email:8501 (Gmail 연동) -│ ├── skill-news:8502 +│ ├── skill-news:8505 │ ├── skill-embedding:8515 (포트 변경됨) │ └── skill-slack (멀티봇 지원) └── ChromaDB (벡터 DB) @@ -244,4 +244,4 @@ GET /api/health # 헬스체크 - 이 계획은 초안이며, 구현 과정에서 수정될 수 있음 - 기존 frontend-base의 코드를 최대한 재활용 -- 서버팀과 사전 협의 필요 (포트, 도메인 등) \ No newline at end of file +- 서버팀과 사전 협의 필요 (포트, 도메인 등) diff --git a/troubleshooting/250716_auth_server_setup.md b/troubleshooting/250716_auth_server_setup.md index d5dff58..3103c6d 100644 --- a/troubleshooting/250716_auth_server_setup.md +++ b/troubleshooting/250716_auth_server_setup.md @@ -1,7 +1,7 @@ # 중앙 인증 서버(auth.ro-being.com) 구축 **날짜**: 2025-07-16 -**관련 서비스**: auth-server, nginx-deploy +**관련 서비스**: auth-server, nginx-infra **작성자**: Claude AI Assistant ## 작업 개요 @@ -43,7 +43,7 @@ auth-server/ ### 3. Nginx 리버스 프록시 설정 -**nginx-deploy/default.conf 수정**: +**nginx-infra/default.conf 수정**: ```nginx # Auth server configuration server { @@ -123,7 +123,7 @@ services: ## 관련 파일 - `/home/happybell/projects/ivada/auth-server/` - 인증 서버 -- `/home/happybell/projects/ivada/nginx-deploy/default.conf` - Nginx 설정 +- `/home/happybell/projects/ivada/nginx-infra/default.conf` - Nginx 설정 - `/home/happybell/projects/ivada/skill_email/` - Gmail 스킬 (통합 예정) ## SSL/HTTPS 설정 추가 @@ -135,10 +135,10 @@ services: ### 해결 과정 -1. **nginx-deploy 저장소 구조 파악**: +1. **nginx-infra 저장소 구조 파악**: - `default.conf`: Docker nginx 설정 (legacy) - `server-nginx-default`: 실제 서버 nginx 설정 파일 - - GitHub Actions가 `server-nginx-default`를 서버의 `/etc/nginx/sites-available/default`로 복사 + - Gitea Actions가 `server-nginx-default`를 서버의 `/etc/nginx/sites-available/default`로 복사 2. **HTTPS 서버 블록 추가**: ```nginx @@ -185,4 +185,4 @@ server { 2. **중앙 인증의 장점**: 토큰 관리 일원화, 보안 강화, 확장성 3. **마이크로서비스 구조**: 각 서비스(인증, API, 로빙)를 독립적으로 관리 4. **SSL 설정 패턴**: HTTP는 HTTPS로 리다이렉션, HTTPS 블록에 실제 프록시 설정 -5. **nginx-deploy 워크플로우**: 로컬 수정 → Git push → GitHub Actions → 서버 배포 \ No newline at end of file +5. **nginx-infra 워크플로우**: 로컬 수정 → Git push → Gitea Actions → 서버 배포