DOCS/troubleshooting/250915_hardcoded_url_removal.md
happybell80 7837cd2751 docs: 하드코딩 URL 전체 현황 문서 수정
- 기존 문서에 전체 서비스 하드코딩 위치 추가
- rb8001, skill-* 서비스들 하드코딩 상세 추가
- frontend-base, nginx-infra 추가
- 실제 사용 환경변수명 정정
- 교체 가이드 추가
2025-09-15 20:21:23 +09:00

5.4 KiB

하드코딩 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)에서 주입하고 코드의 하드코딩을 제거한다.