Files
fletimageanalysis/config.py
2025-07-16 17:33:20 +09:00

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("설정이 올바르게 구성되었습니다.")