From cb2b0d814d5f4019bc7e502468afab66e4308174 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Tue, 26 Aug 2025 13:51:02 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20Frontend-rb8001=20=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EC=97=94=EB=93=9C=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EB=AF=B8?= =?UTF-8?q?=EC=97=B0=EA=B2=B0=20=EB=AC=B8=EC=A0=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 문제: Frontend /api/chat 요청이 rb8001에 도달 안 함 - 원인: rb8001에 /api/chat 엔드포인트 없음, Gateway 라우팅 누락 - 해결방안: 엔드포인트 추가 또는 Gateway 프록시 설정 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- ...6_frontend_rb8001_chat_endpoint_missing.md | 191 ++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 troubleshooting/250826_frontend_rb8001_chat_endpoint_missing.md diff --git a/troubleshooting/250826_frontend_rb8001_chat_endpoint_missing.md b/troubleshooting/250826_frontend_rb8001_chat_endpoint_missing.md new file mode 100644 index 0000000..8bbcd30 --- /dev/null +++ b/troubleshooting/250826_frontend_rb8001_chat_endpoint_missing.md @@ -0,0 +1,191 @@ +# Frontend-rb8001 대화 엔드포인트 미연결 문제 + +## 작성일: 2025-08-26 +## 작성자: 서버 관리자 +## 상태: 미해결 +## 영향: Frontend(goeun2dc) 채팅 기능 완전 불가 + +--- + +## 1. 문제 상황 + +### 1.1 증상 +- **사용자**: goeun2dc@gmail.com (happybell80) +- **현상**: Frontend 채팅 입력 시 응답 없음 +- **경로**: Frontend(8000) → Gateway(8100) → ❌ (rb8001 도달 실패) + +### 1.2 네트워크 플로우 +``` +[예상 플로우] +Frontend → Gateway(51123:8100) → rb8001(51124:8001) + +[실제 플로우] +Frontend → Gateway(51123:8100) → 없음 (404) +``` + +--- + +## 2. 원인 분석 + +### 2.1 엔드포인트 불일치 +| 구성요소 | 엔드포인트 | 상태 | +|---------|-----------|------| +| Frontend | `/api/chat` 요청 | 전송 중 | +| Gateway | 라우팅 규칙 없음 | ❌ | +| rb8001 | `/api/chat` 없음 | ❌ | +| rb8001 | `/complete` 있음 | ✅ (Slack용) | + +### 2.2 서버별 확인 결과 + +#### 51123 서버 (Gateway) +```bash +# Gateway 환경변수 +VITE_API_URL=http://localhost:8001 # 로컬 개발용 +VITE_ROBING_API_URL=https://ro-being.com/gateway # 실제 사용 중 + +# Gateway 로그 +JWT 인증 성공 (happybell80) +/api/chat 라우팅 규칙 없음 +``` + +#### 51124 서버 (rb8001) +```bash +# rb8001 엔드포인트 확인 +/complete - LLM 처리용 ✅ +/api/slack/events - Slack 전용 ✅ +/api/cron/daily-summary - 크론용 ✅ +/api/chat - 없음 ❌ + +# 테스트 결과 +curl http://localhost:8001/complete -d '{"prompt":"test"}' # 200 OK +curl http://localhost:8001/api/chat -d '{"message":"test"}' # 404 Not Found +``` + +### 2.3 근본 원인 +1. **엔드포인트 미구현**: rb8001에 `/api/chat` 엔드포인트 없음 +2. **Gateway 라우팅 누락**: Gateway가 rb8001로 프록시하지 않음 +3. **프로토콜 불일치**: Frontend 요청 형식과 rb8001 `/complete` 형식 다름 + +--- + +## 3. 해결 방안 + +### 3.1 Option 1: rb8001에 /api/chat 엔드포인트 추가 +```python +# rb8001/app/router/router.py +@router.post("/api/chat") +async def chat_endpoint(request: ChatRequest): + """Frontend 채팅 요청 처리""" + # 1. Frontend 형식 → rb8001 형식 변환 + # 2. _process_message() 호출 + # 3. Frontend 형식으로 응답 반환 +``` + +### 3.2 Option 2: Gateway에서 라우팅 매핑 +```python +# robeing-gateway/app/main.py +@app.post("/api/chat") +async def proxy_chat(request: Request): + """채팅 요청을 rb8001로 프록시""" + # 1. /api/chat → /complete 변환 + # 2. http://192.168.219.52:8001/complete 호출 + # 3. 응답 변환 후 반환 +``` + +### 3.3 Option 3: Frontend 수정 +```javascript +// frontend-customer/src/api/chat.js +// VITE_API_URL을 올바른 엔드포인트로 변경 +const API_URL = import.meta.env.VITE_RB8001_URL || 'http://192.168.219.52:8001' +const endpoint = '/complete' // /api/chat 대신 +``` + +--- + +## 4. 임시 해결책 + +### 즉시 적용 가능한 방법 +```bash +# Gateway 컨테이너에 임시 프록시 추가 +docker exec robeing-gateway bash -c " +cat > /tmp/proxy.py << 'EOF' +from fastapi import Request +import httpx + +@app.post('/api/chat') +async def temp_proxy(request: Request): + data = await request.json() + async with httpx.AsyncClient() as client: + # 형식 변환 + rb8001_data = { + 'prompt': data.get('message', ''), + 'user_id': data.get('user_id', 'web_user'), + 'channel': 'web' + } + response = await client.post( + 'http://192.168.219.52:8001/complete', + json=rb8001_data + ) + return {'response': response.json().get('response', '')} +EOF +" +``` + +--- + +## 5. 검증 방법 + +### 5.1 엔드포인트 테스트 +```bash +# Frontend 형식 테스트 +curl -X POST http://localhost:8100/api/chat \ + -H "Content-Type: application/json" \ + -d '{"message": "안녕하세요", "user_id": "happybell80"}' + +# 예상 응답 +{"response": "안녕하세요! 무엇을 도와드릴까요?"} +``` + +### 5.2 전체 플로우 테스트 +1. Frontend 로그인 (goeun2dc@gmail.com) +2. 채팅 입력 +3. rb8001 로그 확인: `docker logs rb8001 --tail 50` +4. 응답 수신 확인 + +--- + +## 6. 장기 해결 계획 + +### 6.1 아키텍처 정리 +- Frontend ↔ rb8001 직접 통신 vs Gateway 경유 결정 +- 통일된 API 규격 정의 (OpenAPI 스펙) + +### 6.2 구현 우선순위 +1. **긴급**: rb8001에 /api/chat 엔드포인트 추가 +2. **중요**: Gateway 라우팅 규칙 정비 +3. **일반**: Frontend 환경변수 정리 + +--- + +## 7. 관련 파일 + +### 51123 서버 +- `/home/admin/robeing-gateway/app/main.py` - Gateway 라우팅 +- `/home/admin/frontend-customer/.env` - Frontend 설정 + +### 51124 서버 +- `/home/happybell/projects/ivada/rb8001/app/router/router.py` - rb8001 엔드포인트 +- `/home/happybell/projects/ivada/rb8001/.env` - rb8001 설정 + +### 로컬 개발 +- `frontend-customer/src/api/` - API 호출 코드 +- `frontend-customer/src/components/Chat/` - 채팅 컴포넌트 + +--- + +## 8. 참고 사항 + +- Slack 채팅은 정상 작동 (별도 플로우) +- DM 기능도 정상 (/complete 직접 사용) +- 문제는 Web Frontend 채팅만 해당 +- State Service는 rb8001에 통합됨 (250826_happybell80_rb8001_이중저장구현.md 참고) \ No newline at end of file