# rb8001: 하드코딩 URL/DB 기본값 환경변수화 정리

**날짜**: 2025-10-23  
**작성자**: admin  
**관련 파일**: 아래 목록 참조

---

## 문제
- RAG 업로드/검색, Tavily, skill-slack/news, DB/Neo4j/Embedding 등 다수의 URL/기본값이 코드에 하드코딩되어 운영 환경 전환에 취약.

## 조치
- 환경변수/Settings 기반으로 통일. 기본값은 localhost 계열로 보수적 설정.

### 수정 파일
- `app/router/slack_handler.py:64, 366` → `SKILL_RAG_FILE_URL` 기반 `/api/upload`, `/api/search`
- `app/pipelines/langgraph_document.py:34, 53, 141, 168` → `SKILL_RAG_FILE_URL` 기반 업로드/검색/재색인/텍스트 조회 URL
- `app/skills/email_integration.py:366` → LLM 콜백 `http://localhost:{PORT}/api/llm/extract`
- `app/commands/skill_commands.py:17,18,347` → `SKILL_SLACK_URL`, `SKILL_NEWS_URL`, `TAVILY_API_URL`
- `app/skills/dm_skill.py:362` → `SKILL_NEWS_URL + /api/news/search`
- `app/skills/news_posting_skill.py:36` → `DATABASE_URL` 기본값을 localhost로 변경
- `app/memory/neo4j_client.py:33` → `NEO4J_URI` 기본값을 localhost로 변경
- `app/services/naverworks_file_processor.py:19` → `DATABASE_URL` 기본값 localhost
- `app/services/coldmail_filter.py:14` → `DATABASE_URL` 기본값 localhost
- `app/services/coldmail_embedding_filter.py:14` → `DATABASE_URL` 기본값 localhost
- `app/services/startup_valuation.py:17` → `DATABASE_URL` 기본값 localhost
- `app/core/emotion/base.py:16` → `SKILL_EMBEDDING_URL` 기본값 8515로 정정
- `app/services/workflows/web_search_workflow.py:79` → `TAVILY_API_URL` 적용
- `app/router/message_router.py:140-167` → 웹검색 그래프 경로 도입(환경변수 `WEB_SEARCH_USE_GRAPH`) 및 os import

## 검증
- 단위 테스트 통과: 대명사 해소/출처블록/그래프 워크플로우 (로컬 전용)
- 배포 후 헬스체크: `/health` healthy

## 교훈
- URL/엔드포인트는 코드 하드코딩이 아닌 설정으로 관리해야 환경 전환·보안·유지보수가 용이하다.
- DB/Neo4j 기본값은 내부 localhost로 설정하고 실환경은 `.env`/compose로 주입.

---
