ai-review/vector/app/config/settings.py
2025-06-15 14:15:05 +00:00

81 lines
3.1 KiB
Python

# app/config/settings.py
import os
from typing import Optional
class Settings:
"""환경 변수 기반 설정 클래스"""
# 애플리케이션 메타데이터
APP_TITLE = os.getenv("APP_TITLE", "음식점 Vector DB 구축 서비스")
APP_VERSION = os.getenv("APP_VERSION", "1.0.0")
APP_DESCRIPTION = os.getenv("APP_DESCRIPTION", "소상공인을 위한 AI 기반 경쟁업체 분석 및 액션 추천 시스템")
# 서버 설정
HOST = os.getenv("HOST", "0.0.0.0")
PORT = int(os.getenv("PORT", "8000"))
LOG_LEVEL = os.getenv("LOG_LEVEL", "info")
# Restaurant API 설정
RESTAURANT_API_HOST = os.getenv("RESTAURANT_API_HOST", "0.0.0.0")
RESTAURANT_API_PORT = os.getenv("RESTAURANT_API_PORT", "18000")
@property
def RESTAURANT_API_URL(self) -> str:
return f"http://{self.RESTAURANT_API_HOST}:{self.RESTAURANT_API_PORT}"
# Review API 설정
REVIEW_API_HOST = os.getenv("REVIEW_API_HOST", "0.0.0.0")
REVIEW_API_PORT = os.getenv("REVIEW_API_PORT", "19000")
@property
def REVIEW_API_URL(self) -> str:
return f"http://{self.REVIEW_API_HOST}:{self.REVIEW_API_PORT}"
# Claude API 설정
CLAUDE_API_KEY = os.getenv("CLAUDE_API_KEY", "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")
CLAUDE_MODEL = os.getenv("CLAUDE_MODEL", "claude-sonnet-4-20250514")
# Vector DB 설정
VECTOR_DB_PATH = os.getenv("VECTOR_DB_PATH", "./vectordb")
VECTOR_DB_COLLECTION = os.getenv("VECTOR_DB_COLLECTION", "restaurant_reviews")
EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "sentence-transformers/all-MiniLM-L6-v2")
# 데이터 수집 설정
MAX_RESTAURANTS_PER_CATEGORY = int(os.getenv("MAX_RESTAURANTS_PER_CATEGORY", "50"))
MAX_REVIEWS_PER_RESTAURANT = int(os.getenv("MAX_REVIEWS_PER_RESTAURANT", "100"))
REQUEST_DELAY = float(os.getenv("REQUEST_DELAY", "0.1"))
REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", "600"))
# 환경 감지
@property
def IS_K8S_ENV(self) -> bool:
"""Kubernetes 환경인지 확인"""
return (
os.getenv("KUBERNETES_SERVICE_HOST") is not None or
self.RESTAURANT_API_HOST in ["restaurant-api-service", "kakao-review-api-service"] or
self.REVIEW_API_HOST in ["restaurant-api-service", "kakao-review-api-service"]
)
def get_restaurant_api_url(self) -> str:
"""환경에 따른 Restaurant API URL 반환"""
if self.IS_K8S_ENV:
host = "restaurant-api-service"
port = "80"
else:
host = self.RESTAURANT_API_HOST
port = self.RESTAURANT_API_PORT
return f"http://{host}:{port}"
def get_review_api_url(self) -> str:
"""환경에 따른 Review API URL 반환"""
if self.IS_K8S_ENV:
host = "kakao-review-api-service"
port = "80"
else:
host = self.REVIEW_API_HOST
port = self.REVIEW_API_PORT
return f"http://{host}:{port}"
# 설정 인스턴스
settings = Settings()