- 에러 메시지 위치: brain_service.py:56 (router.py 아님)
- robeing-monitor 경로: /stats/{id} (gateway와 불일치)
- DB 스키마 차이: robeing_id vs robeing_container_id
- 설정값 위치: config.py는 None, state_client.py가 8507 기본값
2.8 KiB
2.8 KiB
rb8001 Stats API 중복 구현 조사
작성일: 2025-09-15
작성자: happybell80
상태: 조사 완료
현재 상황
에러 메시지
- 발생 위치: rb8001 brain_service.py
- 에러:
Failed to fetch stats: {e} - 파일:
/home/happybell/projects/ivada/rb8001/app/brain/brain_service.py:56 - 참고: router.py의
_load_stats_from_state()호출은 이미 제거됨
Stats API 엔드포인트 현황
1. rb8001 내부 구현
- 파일:
/home/happybell/projects/ivada/rb8001/app/state/state_service.py - GET 엔드포인트:
@app.get("/api/stats/{robeing_id}")(67줄) - PUT 엔드포인트:
@app.put("/api/stats/{robeing_id}")(89줄) - DB 모델:
RobeingStats(database.py:24-41)- 필드:
robeing_id,ethics,stat_points포함 - 테이블명:
"robeing"
- 필드:
2. robeing-monitor 구현 (포트 9024)
- 파일:
/home/happybell/projects/ivada/robeing-monitor/app/state/state_service.py - GET 엔드포인트:
@app.get("/stats/{robeing_id}")(53줄) -/api없음 - PUT 엔드포인트:
@app.put("/stats/{robeing_id}")(75줄) -/api없음 - DB 모델:
RobeingStats(database.py:20-34)- 필드:
robeing_container_id사용 (robeing_id아님) ethics,stat_points필드 없음- 테이블명:
"robeing"
- 필드:
3. robeing-gateway 프록시
- 파일:
/home/happybell/projects/ivada/robeing-gateway/app/main.py:304 - 프록시:
f"http://192.168.219.52:9024/api/stats/{robeing_id}" - 문제: gateway는
/api/stats/로 프록시하지만 monitor는/stats/로 서비스
Stats API 호출자
1. rb8001/app/brain/brain_service.py
- GET 호출: 48줄
f"{settings.STATE_SERVICE_URL}/api/stats/{robeing_id}" - PUT 호출: 110줄
f"{settings.STATE_SERVICE_URL}/api/stats/{robeing_id}" - 에러 로깅: 56줄
Failed to fetch stats - 설정:
settings.STATE_SERVICE_URL(config.py:51, 기본값 None)
2. rb8001/app/brain/state_client.py
- base_url:
os.getenv('STATE_SERVICE_URL', 'http://localhost:8507')(17줄) - GET 메서드: 25줄
f"{self.base_url}/api/stats/{self.robeing_id}" - PUT 메서드: 68줄
f"{self.base_url}/api/stats/{self.robeing_id}" - 싱글톤:
state_client = StateServiceClient()(168줄) - 참고: rb8001 내에서 state_client 직접 사용 흔적 없음
설정값
- config.py:51:
STATE_SERVICE_URL: Optional[str] = None - state_client.py:17:
os.getenv('STATE_SERVICE_URL', 'http://localhost:8507')
확인된 문제
- robeing-monitor 경로:
/stats/{id}vs gateway 프록시:/api/stats/{id}불일치 - DB 스키마 차이: rb8001은
robeing_id, monitor는robeing_container_id - 필드 차이: rb8001은
ethics,stat_points있음, monitor는 없음