generated from ttipo/project-base
a0c507a350
CI / Backend (lint · test · e2e · build) (pull_request) Successful in 12m11s
CI / Frontend (lint · type-check · test) (pull_request) Successful in 11m4s
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Successful in 11m15s
CI / Frontend (lint · type-check · test) (push) Waiting to run
CI / 에러 코드 SSOT 동기화 검사 (push) Waiting to run
CI / Backend (lint · test · e2e · build) (push) Has started running
AI 설정(AI_PROVIDER · 모델 · effort · 하루 횟수 · 비용 상한 · 제한 시간)이 예시 파일에 없어서,
실제 env 에 무엇을 적을 수 있는지 코드를 읽어야 알 수 있었다. 키와 기본값 설명을 빈 값으로 적어 둔다.
비어 있으면 코드 기본값을 쓰므로 예시를 그대로 옮겨도 동작이 바뀌지 않는다.
설계 §11 은 이 설정들이 루트 .env 에서 compose 로 넘어간다고 적었지만 compose 는 넘기지 않는다.
backend/.env.{env} 에 적는 것으로 고쳤다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
54 lines
3.0 KiB
Bash
54 lines
3.0 KiB
Bash
# ==========================================
|
|
# 백엔드 고유 시크릿 (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=
|