# ========================================== # 백엔드 고유 시크릿 (development) # # ⚠️ DB / Redis / CORS / PORT 는 루트 .env.development 에서 docker-compose 가 주입한다. # 여기에 중복 작성하지 말 것 (SSOT: 루트 .env — .claude/rules/env-structure.md). # 이 파일에는 "루트에서 내려주지 않는 값"만 작성한다. # # 사용법: cp .env.development.example .env.development # docker-compose 의 env_file 지시자 때문에 파일은 비어 있어도 존재해야 한다. # ========================================== # JWT 서명 키 — 인증 도입 시 사용. 환경마다 다른 값을 쓰고 절대 커밋하지 않는다. JWT_SECRET=change-me-generate-a-long-random-string JWT_ACCESS_EXPIRES_IN=1h JWT_REFRESH_EXPIRES_IN=14d # 공공데이터포털 일반 인증키 — 마이페이지의 "Decoding" 키를 넣는다. # 한 키로 활용신청이 승인된 모든 API(관광공사 국문·영문·반려동물, 기상청 단기예보, 상가정보)를 호출한다. # 개발 계정은 관광공사 API 하루 1,000건 제한이 있다. PUBLIC_DATA_SERVICE_KEY=change-me-data-go-kr-decoding-key # 관광공사 API 오퍼레이션별 하루 호출 한도(장소 동기화 명령이 이 안에서 멈춘다). 비우면 1000(개발 계정). # 운영 계정 승인 후 승인된 한도로 올린다. TOUR_API_DAILY_LIMIT= # 공연예술통합전산망(KOPIS) Open API 인증키 — 공연 정보 동기화(서버에서만 쓴다, 1인 1키). # kopis.or.kr → Open API 에서 신청하면 이메일로 온다. KOPIS_SERVICE_KEY=change-me-kopis-service-key # 카카오 REST API 키 — 장소 검색(로컬 API)을 서버에서만 호출한다. # 응답(이름·주소·좌표)은 저장·캐시·LLM 전송 금지. 장소 ID·place_url 만 저장할 수 있다. KAKAO_REST_API_KEY=change-me-kakao-rest-api-key # Claude API 키 — AI 코스 생성. 사용량만큼 과금된다. ANTHROPIC_API_KEY=change-me-anthropic-api-key # ── AI 코스 생성 설정 (설계 docs/design/ai-course.md §11) ── # 비워 두면 코드 기본값을 쓴다. 바꿀 때만 값을 적는다 — 값을 적으면 코드 기본값이 바뀌어도 이 값이 이긴다. # AI 를 부르는 곳: anthropic(기본) · fake(키 없이 흐름만 확인하는 가짜 AI) AI_PROVIDER= # 코스 초안 모델(기본 claude-sonnet-5-5) · 조건 해석 모델(기본 claude-haiku-5-5) # claude-haiku-5-5 · claude-sonnet-5-5 만 받는다(가격표 src/shared/utils/ai-pricing.ts). 바꾸면 npm run ai:eval 로 다시 잰다 AI_COURSE_MODEL= AI_CONDITION_MODEL= # 추론 깊이 low · medium · high (기본 low · low) AI_COURSE_EFFORT= AI_CONDITION_EFFORT= # 하루 생성 횟수 — 비로그인(기기 기준) · 로그인(사용자 기준) (기본 2 · 5) AI_DAILY_LIMIT_GUEST= AI_DAILY_LIMIT_MEMBER= # 하루 비용 상한(정수 달러, 조건 해석 포함, 기본 3) — 넘으면 그날 새 생성을 막는다 AI_DAILY_BUDGET_USD= # AI 호출 한 번의 제한 시간(ms, 기본 30000) AI_TIMEOUT_MS=