- 기존 문서에 전체 서비스 하드코딩 위치 추가 - rb8001, skill-* 서비스들 하드코딩 상세 추가 - frontend-base, nginx-infra 추가 - 실제 사용 환경변수명 정정 - 교체 가이드 추가
139 lines
5.4 KiB
Markdown
139 lines
5.4 KiB
Markdown
# 하드코딩 URL 제거 작업
|
|
|
|
## 작성일: 2025-09-15
|
|
## 작성자: 51123 서버 관리자
|
|
|
|
## 정정 사항 (문서 vs 코드 불일치)
|
|
- ROBEING_HOST 변수명은 실제 코드에서 사용되지 않음. robeing-gateway는 `DEFAULT_ROBEING_HOST`/`DEFAULT_ROBEING_PORT`/`DEFAULT_ROBEING_ID`를 사용함.
|
|
- SLACK_CALLBACK_URL, GMAIL_CALLBACK_URL은 코드에 없음. auth-server는 `SLACK_REDIRECT_URI`, `GOOGLE_REDIRECT_URI`, `GOOGLE_PASSPORT_REDIRECT_URI`를 사용함.
|
|
- FRONTEND_URL은 코드에서 직접 사용하지 않음. 프론트는 `VITE_AUTH_SERVER_URL`을 사용하고, CORS 도메인은 코드에 상수로 정의되어 있음.
|
|
|
|
## 발견된 하드코딩 현황
|
|
|
|
### auth-server
|
|
**app/providers/slack.py**
|
|
- Line 79, 187, 189: `http://localhost:3000`
|
|
- Line 158, 165, 177: `http://localhost:3000/login?error=`
|
|
- Line 94: `https://auth.ro-being.com/auth/slack/login/callback`
|
|
- Line 203: `https://auth.ro-being.com/auth/slack/login/callback`
|
|
|
|
**app/providers/gmail_passport.py**
|
|
- Line 54: `postgresql://robeings:robeings@192.168.219.45:5432/main_db`
|
|
- Line 26: `https://auth.ro-being.com/auth/gmail/passport/callback`
|
|
|
|
**app/providers/gmail.py**
|
|
- Line 23: `https://auth.ro-being.com/auth/gmail/callback`
|
|
|
|
**app/main.py**
|
|
- Line 28-32: `http://localhost:3000`, `5173`, `5174`, `8000`, `10508`
|
|
|
|
### frontend-customer
|
|
**src/contexts/auth-context.tsx**
|
|
- Line 22: `https://auth.ro-being.com` (기본값)
|
|
- Line 79: `https://auth.ro-being.com/auth/verify`
|
|
|
|
**src/components/skills-items-panel.tsx**
|
|
- Line 361: `https://auth.ro-being.com/auth/gmail/passport`
|
|
- Line 432: `https://auth.ro-being.com/auth/slack/passport/install`
|
|
|
|
### rb8001
|
|
**app/commands/skill_commands.py**
|
|
- 하드코딩: `localhost:8502`, `localhost:8505` URL
|
|
|
|
**app/skills/email_integration.py**
|
|
- Line 37: `http://192.168.219.45:9000/api/slack/mapping/{slack_id}`
|
|
- Line 253: `http://localhost:8001/api/llm/extract` (콜백 URL)
|
|
- Line 17-18: `localhost:8501`, `localhost:9024` (기본값)
|
|
|
|
**app/memory/embedding_client.py**
|
|
- 임베딩 서비스 URL 하드코딩
|
|
|
|
**app/core/emotion/base.py**
|
|
- Line 13: `http://localhost:8015` (SKILL_EMBEDDING_URL 기본값)
|
|
|
|
**app/brain/state_client.py**
|
|
- Line 17: `http://localhost:8507` (STATE_SERVICE_URL 기본값)
|
|
|
|
### robeing-gateway
|
|
**app/main.py**
|
|
- Line 128-129: `http://localhost:5173`, `http://localhost:3000`
|
|
- Line 157: `http://192.168.219.52:9024` (MONITOR_URL로 부분 환경변수화됨)
|
|
- Line 304: `http://192.168.219.52:9024/api/stats/{robeing_id}` (하드코딩)
|
|
- Line 383: `http://192.168.219.52:9024`
|
|
- Line 567: `http://192.168.219.52:8001/api/slack/events`
|
|
- Line 620: `http://192.168.219.52:8001/api/slack/interactive`
|
|
|
|
**app/database.py**
|
|
- Line 20: `postgresql+asyncpg://postgres:postgres@localhost:5432/main_db`
|
|
- Line 24: `192.168.219.52` (DEFAULT_ROBEING_HOST로 환경변수화됨)
|
|
|
|
### robeing-monitor
|
|
**app/core/config.py**
|
|
- DB 및 서비스 URL 다수 하드코딩
|
|
|
|
**app/api/monitor.py**
|
|
- `rb10508_micro` 등 localhost URL 배열
|
|
|
|
**app/api/items.py**
|
|
- `https://auth.ro-being.com` 포함
|
|
|
|
**docker-compose.yml**
|
|
- DB 호스트 `192.168.219.45`
|
|
|
|
### skill-email
|
|
**main.py**
|
|
- Monitor 기본값: `http://localhost:9024`
|
|
|
|
**services/api_credentials_provider.py**
|
|
- Monitor URL 하드코딩
|
|
|
|
### skill-slack
|
|
**app/core/config.py**
|
|
- `LLM_GATEWAY_URL`, `STATE_SERVICE_URL`, `MEMORY_SERVICE_URL` localhost
|
|
|
|
**services/slack_data_client_impl.py**
|
|
- `rb10408`, `rb10409`, `rb10410` localhost 매핑
|
|
|
|
**워크플로우/배포문서**
|
|
- `redis://localhost:6379`
|
|
|
|
### skill-publish
|
|
**app/config.py**
|
|
- Squarespace, 뉴스 URL 하드코딩
|
|
|
|
**services/**
|
|
- 외부 서비스 URL 하드코딩
|
|
|
|
**Dockerfile/docker-compose.yml**
|
|
- 헬스체크: `http://localhost:8511`
|
|
|
|
### frontend-base
|
|
**backend/main.py, backend/admin_routes.py**
|
|
- CORS 허용 도메인 및 헬스체크 대상에 `http://localhost:*`, `http://172.17.0.1:*` 고정
|
|
|
|
### rb10508_micro
|
|
**app/api/endpoints.py**
|
|
- DB 접속: `host='192.168.219.45', port=5432, user='robeings'` 하드코딩
|
|
|
|
### skill-embedding
|
|
**http_embedding_function.py / 테스트/컴포즈**
|
|
- 기본 URL 및 헬스체크: `http://localhost:8515` 하드코딩
|
|
|
|
### nginx-infra
|
|
**server-nginx-default**
|
|
- proxy_pass에 `http://localhost:*`, `http://192.168.219.52:*` 다수 고정
|
|
|
|
## 실제 사용되는 환경변수
|
|
- VITE_AUTH_SERVER_URL (frontend-customer)
|
|
- DATABASE_URL (여러 서비스 공통)
|
|
- DEFAULT_ROBEING_HOST, DEFAULT_ROBEING_PORT, DEFAULT_ROBEING_ID (robeing-gateway)
|
|
- MONITOR_URL (robeing-gateway)
|
|
- SLACK_REDIRECT_URI, GOOGLE_REDIRECT_URI, GOOGLE_PASSPORT_REDIRECT_URI (auth-server)
|
|
- SKILL_EMAIL_URL, SKILL_NEWS_URL, SKILL_SLACK_URL, SKILL_EMBEDDING_URL, STATE_SERVICE_URL (rb8001 및 관련 스킬)
|
|
|
|
## 교체 가이드 (요약)
|
|
- 코드 상수에 직접 박힌 URL/IP/포트를 전부 환경변수로 치환한다. 이미 존재하는 키를 우선 사용하고, 미존재 시 새 키를 정의한다.
|
|
- robeing-gateway Stats 프록시는 `MONITOR_URL`만 참조하도록 통일하고(현재 304행), Slack 프록시 대상도 환경변수 또는 DB의 `robeing_url`을 사용한다.
|
|
- auth-server의 모든 리다이렉트/콜백 URL은 `*_REDIRECT_URI` 계열 변수만 사용한다. `http://localhost:3000`로의 에러 리다이렉트는 state의 `redirect_uri` 또는 별도 `FRONTEND_ORIGIN` 변수로 대체한다.
|
|
- CORS 허용 도메인과 헬스체크 대상은 코드 상수 대신 ENV(.env, compose, workflow)에서 주입하고 코드의 하드코딩을 제거한다.
|