---
task_id: task-2123
type: context
scope: task
created: 2026-04-23
updated: 2026-04-23
status: in-progress
---

# 맥락 노트: task-2123

**task**: task-2123

---

## 결정 근거

### 방법 B(python-dotenv) 선택
- 방법 A: systemd EnvironmentFile만으로도 해결 가능하나, systemd 외 실행 환경(직접 uvicorn 실행, 테스트 등)에서는 .env가 로드되지 않음
- 방법 B: python-dotenv는 모든 실행 환경에서 .env를 로드하므로 더 robust
- 최종 결정: 방법 A + B 모두 적용. B가 주 로드 수단, A는 보조(안전망)

### 3 Step Why 자문
1st Why: "왜 이 설계가 필요한가?" → .env 파일의 환경변수가 systemd 서비스로 전달되지 않아 Naver API 호출 시 500 에러가 발생함
2nd Why: "왜 python-dotenv + EnvironmentFile 이중 적용이 최선인가?" → dotenv만으로는 systemd 환경의 PATH 등 시스템 변수와 분리되고, EnvironmentFile만으로는 로컬 개발 시 적용 안 됨. 이중 적용이 모든 환경을 커버함
3rd Why: "왜 이 이중 적용이 대안(예: export 스크립트, wrapper shell)보다 나은가?" → export 스크립트는 유지보수 포인트 추가, wrapper shell은 systemd ExecStart 복잡화. dotenv + EnvironmentFile은 표준 패턴이며 추가 복잡도 최소

## 참조 자료

- 서비스 파일: `/home/jay/.config/systemd/user/insuro-api.service`
- 서버 코드: `/home/jay/projects/InsuRo/server/main.py`
- 환경변수: `/home/jay/projects/InsuRo/.env`

## 주의사항

- .env 파일에 PII 포함 가능 — 외부 AI 전달 시 반드시 마스킹
- python-dotenv의 load_dotenv()는 이미 설정된 환경변수를 덮어쓰지 않음 (override=False 기본값) — systemd Environment와 충돌 없음
