-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
76 lines (62 loc) · 4.01 KB
/
Copy path.env.example
File metadata and controls
76 lines (62 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# FastAPI AI 서버 환경변수 예시. 실제 값은 .env(gitignore)나 배포 환경변수로 주입한다.
#
# 값을 두 부류로 나눈다 — 이 구분이 곧 "무엇을 Secret으로 다루는가"의 기준이다(P45).
#
# 비밀 코드에 둘 수 없다. 주입이 필수이며 없으면 기동 실패한다.
# 공개 정본이 코드(app/core/config.py)에 있다. 주입은 덮어쓰기이며 생략해도 뜬다.
#
# 아래 공개 항목의 값은 코드 기본값과 같다. 참고용으로 적어 둔 것이므로 .env를 만들 때
# 지워도 되고, 남겨 두면 같은 값을 한 번 더 쓰는 것뿐이다.
# ─── 비밀 — 주입 필수 ────────────────────────────────────────
# DB (ai 스키마 전용 롤. core.* 권한 없음)
# 로컬 기동 기준: README 1단계 pgvector 컨테이너(5433 · pinlog/pinlog)와 일치.
# Docker 실행 시에는 host를 host.docker.internal로(README Docker 절 참고).
DATABASE_URL=postgresql://pinlog:pinlog@localhost:5433/pinlog
# GMS 게이트웨이 API 키
GMS_API_KEY=CHANGME
# 카카오 로컬 REST API 키 (이미지 장소 제안 후보 검색)
KAKAO_REST_API_KEY=CHANGME
# 서비스 간 공유 시크릿 (내부 API 인증 — X-Internal-Secret 헤더)
# 백엔드의 PINLOG_AI_INTERNAL_SECRET과 같은 값이어야 한다. 다르면 모든 내부 호출이 401이고,
# 백엔드가 그 실패를 삼키므로 임베딩·Keyword가 하나도 생성되지 않는다.
INTERNAL_SHARED_SECRET=CHANGME
# GMS 엔드포인트 — 값 자체는 비밀이 아니지만 배포마다 달라 주입받는다(기본값 없음).
# `/gmsapi/` 세그먼트를 포함해야 한다 — 판정 클라이언트가 이 세그먼트로 Gemini root를
# 파생한다. 빠지면 임베딩만 동작하고 judge가 조용히 실패하므로 기동 시 fail-fast로 막는다
# (config.py `_gms_base_url_shape`).
GMS_BASE_URL=https://gms.ssafy.io/gmsapi/api.openai.com/v1
# ─── 공개 — 코드가 정본. 아래는 config.py 기본값과 같은 값 ───
# Embedding Profile. 네 값은 서로 정합해야 하며(profile 문자열이 나머지 셋을 부분 문자열로
# 포함) 어긋나면 기동 실패한다.
#
# 바꾸려면 config.py를 고쳐 PR을 낸다. 이 변경은 기존 임베딩을 전부 조회 대상에서 빼는
# 결정이라(model-profile.md §3.2) 리뷰를 거쳐야 하고, 그래서 정본을 코드에 뒀다.
# 여기서 덮어쓰는 것은 실험·롤백 용도다.
PINLOG_EMBEDDING_MODEL=text-embedding-3-small
PINLOG_EMBEDDING_DIMENSION=1536
PINLOG_EMBEDDING_DISTANCE=cosine
PINLOG_EMBEDDING_PROFILE=openai-text-embedding-3-small-1536-cosine-v1
# LLM 판정 벤더 폴백 체인 — 우선순위 순서의 "vendor:model" 목록이다.
# 429는 게이트웨이 전역이 아니라 프로바이더 경로별로 걸린다(2026-07-30 실측). 1순위가
# 막히면 2·3순위로 넘어간다. 지원 벤더는 openai · gemini · anthropic 이며 키는 셋 다
# 같은 GMS_API_KEY를 쓴다(헤더 이름만 다르다).
#
# 항목을 하나만 남기면 폴백 이전 동작으로 되돌아간다 — 롤백은 이 한 줄로 한다.
# `PINLOG_JUDGE_MODEL`을 대체했다(S15P11A705-175). 옛 키는 이제 무시된다.
PINLOG_JUDGE_CHAIN=openai:gpt-4o-mini,gemini:gemini-2.5-flash,anthropic:claude-haiku-4-5-20251001
# 후보 검색 파라미터 (테스트 C 확정값)
KEYWORD_CANDIDATE_TOP_K=10
SIMILARITY_FLOOR=0.30
# PROCESSING 재선점 만료 — Spring 재스캔 만료와 같은 값이어야 한다.
PROCESSING_EXPIRY_SEC=600
# 이미지 장소 제안. 기본값은 코드가 정본이며 아래 값은 로컬 조정용이다.
PINLOG_IMAGE_MODEL=gemini-3.5-flash
IMAGE_MODEL_TIMEOUT_SEC=20
KAKAO_TIMEOUT_SEC=5
PLACE_SUGGESTION_TIMEOUT_SEC=30
VISION_MAX_CONCURRENCY=1
# 개발 환경에서만 장소명과 생성 맥락을 로그로 확인한다. 운영 기본값은 false다.
PLACE_SUGGESTION_LOG_RESULTS=false
IMAGE_MAX_BYTES=10485760
GMS_IMAGE_MAX_BYTES=50000
GMS_VISION_REQUEST_MAX_BYTES=90000