환경 변수 (아직 미정)

infra

# Database
DB_PASSWORD=changeme
POSTGRES_DB=waddoc
POSTGRES_USER=waddoc
# Redis
REDIS_PASSWORD=changeme
# LiveKit
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=devsecret
# GPU Server
# 기본값은 host 기반 조합이다. 커스텀 포트나 http 스킴을 쓰면 아래 AI_IDV_URL을 직접 지정한다.
DEV_GPU_SERVER_HOST=10.0.0.10
PROD_GPU_SERVER_HOST=10.0.0.20
# 직접 지정이 필요한 경우 사용. 예: <http://70.12.130.107:8010/idv/api/v1/verify>
AI_IDV_URL=
# Domain (prod)
SERVER_DOMAIN=example.com
# SSL cert mount path
CERTS_DIR=/home/ubuntu/.waddoc/certs
# JWT
JWT_SECRET=changeme
# 미션 단말 토큰 만료 시간(초). 본인인증과 환자 토큰 발급 범위만 가진다.
MISSION_TERMINAL_TOKEN_EXPIRY=1800
# 차량 체크인용 DEVICE_TERMINAL 토큰 만료 시간(초). 후보 조회와 mission claim 단계에서만 사용한다.
DEVICE_TERMINAL_TOKEN_EXPIRY=1800
# Robot terminal bootstrap
# 백엔드가 허용할 차량 단말 식별자. FE의 VITE_ROBOT_TERMINAL_ID와 같은 값이어야 한다.
ROBOT_TERMINAL_BOOTSTRAP_ID=GIMCHEON-01
# 차량 단말 bootstrap 공유 키. FE의 VITE_ROBOT_TERMINAL_KEY와 같은 값이어야 한다.
ROBOT_TERMINAL_BOOTSTRAP_KEY=GIMCHEON-01
# 프론트 컨테이너 시작 시 runtime-config.js에 주입되는 차량 단말 ID. 백엔드의 ROBOT_TERMINAL_BOOTSTRAP_ID와 같은 값이어야 한다.
VITE_ROBOT_TERMINAL_ID=GIMCHEON-01
# 프론트 컨테이너 시작 시 runtime-config.js에 주입되는 차량 단말 공유 키. 백엔드의 ROBOT_TERMINAL_BOOTSTRAP_KEY와 같은 값이어야 한다.
VITE_ROBOT_TERMINAL_KEY=GIMCHEON-01
# AI
# AI-IDV 호출 타임아웃(ms). GPU 서버 지연 시 백엔드가 실패로 판단하는 기준이다.
AI_IDV_TIMEOUT_MS=5000
# SMS (Solapi)
SOLAPI_API_KEY=changeme
SOLAPI_API_SECRET=changeme
SOLAPI_SENDER_NUMBER=01012345678
# Mission telemetry
TELEMETRY_API_KEY=telemetry-prod-key
# Kafka
KAFKA_BOOTSTRAP_SERVERS=kafka:29092
KAFKA_EXTERNAL_HOST=localhost
KAFKA_PORT=8092
ZOOKEEPER_CLIENT_PORT=2181
KAFKA_BROKER_ID=1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
# Temporary bypass for identity verification when AI IDV server is unavailable
CONSULTATION_IDENTITY_CHECK_BYPASS_ENABLED=false

# Seed bootstrap (local default: true, prod default: false)
# 더미 데이터 넣는 용도
APP_SEED_ENABLED=false
APP_SEED_DEFAULT_PASSWORD=Passw0rd!


FE

# 로컬 npm run dev 실행 시 사용하는 차량 단말 ID.
# 백엔드의 ROBOT_TERMINAL_BOOTSTRAP_ID와 같아야 한다.
VITE_ROBOT_TERMINAL_ID=robot-terminal-01
# 로컬 npm run dev 실행 시 사용하는 차량 단말 공유 키.
# 백엔드의 ROBOT_TERMINAL_BOOTSTRAP_KEY와 같아야 한다.
VITE_ROBOT_TERMINAL_KEY=robot-terminal-key

FE-phone



BE

# Spring 프로필
SPRING_PROFILES_ACTIVE=prod

# 데이터베이스
DB_HOST=postgres
DB_USER=waddoc
DB_PASSWORD=change-me

# Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=change-me

# Kafka
KAFKA_BOOTSTRAP_SERVERS=kafka:29092

# JWT
JWT_SECRET=replace-with-at-least-32-characters

# AI 서비스
AI_IDV_URL=https://gpu.example.com/idv/api/v1/verify
AI_TRIAGE_URL=https://gpu.example.com/triage/api/v1/recommend
AI_IDV_TRANSFER_MODE=multipart
AI_IDV_TIMEOUT_MS=5000

# 파일 저장소
FILE_STORAGE_ROOT=/data/uploads

# SMS (SOLAPI)
SOLAPI_API_KEY=your-solapi-api-key
SOLAPI_API_SECRET=your-solapi-api-secret
SOLAPI_SENDER_NUMBER=029302266
SMS_CONTACT_NUMBER=01049163720

# LiveKit
LIVEKIT_HOST=http://livekit:7880
LIVEKIT_API_KEY=your-livekit-api-key
LIVEKIT_API_SECRET=your-livekit-api-secret
LIVEKIT_URL=wss://api.example.com/livekit

# prod 설정에서 LIVEKIT_URL을 비웠을 때 사용할 예비 도메인
SERVER_DOMAIN=api.example.com

# 참고
# - application-prod.yml 에서는 sms.provider=solapi 를 직접 사용하므로 SMS_PROVIDER 환경변수는 필요 없습니다.
# - infra/docker-compose.prod.yml 로 배포하면 해당 compose 용 env 에
#   POSTGRES_DB, POSTGRES_USER, SERVER_DOMAIN, PROD_GPU_SERVER_HOST 도 함께 넣어야 합니다.


AI



AI_IDV