75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
"""
|
|
설정 관리 모듈
|
|
환경 변수 및 애플리케이션 설정을 관리합니다.
|
|
"""
|
|
|
|
import os
|
|
from dotenv import load_dotenv
|
|
from pathlib import Path
|
|
|
|
# .env 파일 로드
|
|
load_dotenv()
|
|
|
|
class Config:
|
|
"""애플리케이션 설정 클래스"""
|
|
|
|
# 기본 애플리케이션 설정
|
|
APP_TITLE = os.getenv("APP_TITLE", "PDF/DXF 도면 분석기")
|
|
APP_VERSION = os.getenv("APP_VERSION", "1.1.0")
|
|
DEBUG = os.getenv("DEBUG", "False").lower() == "true"
|
|
|
|
# API 설정
|
|
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
|
|
GEMINI_MODEL = os.getenv("GEMINI_MODEL", "gemini-2.5-pro")
|
|
DEFAULT_PROMPT = os.getenv(
|
|
"DEFAULT_PROMPT",
|
|
"pdf 이미지 분석하여 도면인지 어떤 정보들이 있는지 알려줘.structured_output 이외에 정보도 기타에 넣어줘."
|
|
)
|
|
|
|
# 파일 업로드 설정
|
|
MAX_FILE_SIZE_MB = int(os.getenv("MAX_FILE_SIZE_MB", "50"))
|
|
ALLOWED_EXTENSIONS = os.getenv("ALLOWED_EXTENSIONS", "pdf,dxf").split(",")
|
|
UPLOAD_FOLDER = os.getenv("UPLOAD_FOLDER", "uploads")
|
|
|
|
# 경로 설정
|
|
BASE_DIR = Path(__file__).parent
|
|
UPLOAD_DIR = BASE_DIR / UPLOAD_FOLDER
|
|
ASSETS_DIR = BASE_DIR / "assets"
|
|
RESULTS_FOLDER = BASE_DIR / "results"
|
|
|
|
@classmethod
|
|
def validate_config(cls):
|
|
"""설정 유효성 검사"""
|
|
errors = []
|
|
|
|
if not cls.GEMINI_API_KEY:
|
|
errors.append("GEMINI_API_KEY가 설정되지 않았습니다.")
|
|
|
|
if not cls.UPLOAD_DIR.exists():
|
|
try:
|
|
cls.UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
|
|
except Exception as e:
|
|
errors.append(f"업로드 폴더 생성 실패: {e}")
|
|
|
|
return errors
|
|
|
|
@classmethod
|
|
def get_file_size_limit_bytes(cls):
|
|
"""파일 크기 제한을 바이트로 반환"""
|
|
return cls.MAX_FILE_SIZE_MB * 1024 * 1024
|
|
|
|
@classmethod
|
|
def get_gemini_api_key(cls):
|
|
"""Gemini API 키 반환"""
|
|
return cls.GEMINI_API_KEY
|
|
|
|
# 설정 검증
|
|
if __name__ == "__main__":
|
|
config_errors = Config.validate_config()
|
|
if config_errors:
|
|
print("설정 오류:")
|
|
for error in config_errors:
|
|
print(f" - {error}")
|
|
else:
|
|
print("설정이 올바르게 구성되었습니다.")
|