|
|
"""
|
|
|
์ค์ ๊ด๋ฆฌ ๋ชจ๋
|
|
|
ํ๊ฒฝ ๋ณ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ค์ ์ ๊ด๋ฆฌํฉ๋๋ค.
|
|
|
"""
|
|
|
|
|
|
import os
|
|
|
from pathlib import Path
|
|
|
from typing import Optional
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
|
|
|
|
|
PROJECT_ROOT = Path(__file__).parent.parent.parent
|
|
|
|
|
|
class Config:
|
|
|
"""์ ํ๋ฆฌ์ผ์ด์
์ค์ ํด๋์ค"""
|
|
|
|
|
|
|
|
|
SECRET_KEY: str = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_database_url = os.getenv('DATABASE_URL', '')
|
|
|
if _database_url and (_database_url.startswith('postgresql://') or _database_url.startswith('postgres://')):
|
|
|
|
|
|
SQLALCHEMY_DATABASE_URI: str = _database_url
|
|
|
else:
|
|
|
|
|
|
if _database_url:
|
|
|
|
|
|
import warnings
|
|
|
warnings.warn(f"DATABASE_URL์ด ์ค์ ๋์์ง๋ง PostgreSQL ํ์์ด ์๋๋๋ค. SQLite๋ฅผ ์ฌ์ฉํฉ๋๋ค: {_database_url[:50]}...")
|
|
|
SQLALCHEMY_DATABASE_URI: str = f'sqlite:///{PROJECT_ROOT / "instance" / "finance_analysis.db"}'
|
|
|
SQLALCHEMY_TRACK_MODIFICATIONS: bool = False
|
|
|
MAX_CONTENT_LENGTH: int = 100 * 1024 * 1024
|
|
|
|
|
|
|
|
|
OLLAMA_BASE_URL: str = os.getenv('OLLAMA_BASE_URL', 'http://localhost:11434')
|
|
|
|
|
|
|
|
|
UPLOAD_FOLDER: Path = PROJECT_ROOT / 'uploads'
|
|
|
VECTOR_DB_PATH: Path = PROJECT_ROOT / 'vector_db'
|
|
|
KNOWLEDGE_GRAPH_PATH: Path = PROJECT_ROOT / 'knowledge_graphs'
|
|
|
TEMPLATES_FOLDER: Path = PROJECT_ROOT / 'templates'
|
|
|
STATIC_FOLDER: Path = PROJECT_ROOT / 'static'
|
|
|
INSTANCE_FOLDER: Path = PROJECT_ROOT / 'instance'
|
|
|
|
|
|
|
|
|
ALLOWED_EXTENSIONS: set[str] = {'txt', 'md', 'pdf', 'docx', 'epub'}
|
|
|
|
|
|
|
|
|
EMBEDDING_MODEL_NAME: str = os.getenv('EMBEDDING_MODEL_NAME', 'sentence-transformers/all-MiniLM-L6-v2')
|
|
|
RERANKER_MODEL_NAME: str = os.getenv('RERANKER_MODEL_NAME', 'BAAI/bge-reranker-base')
|
|
|
|
|
|
|
|
|
GEMINI_API_KEY: Optional[str] = os.getenv('GEMINI_API_KEY', None)
|
|
|
|
|
|
@classmethod
|
|
|
def ensure_directories(cls) -> None:
|
|
|
"""ํ์ ๋๋ ํ ๋ฆฌ ์์ฑ"""
|
|
|
cls.UPLOAD_FOLDER.mkdir(parents=True, exist_ok=True)
|
|
|
cls.VECTOR_DB_PATH.mkdir(parents=True, exist_ok=True)
|
|
|
cls.KNOWLEDGE_GRAPH_PATH.mkdir(parents=True, exist_ok=True)
|
|
|
cls.STATIC_FOLDER.mkdir(parents=True, exist_ok=True)
|
|
|
cls.INSTANCE_FOLDER.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
|
|
|
def get_config() -> Config:
|
|
|
"""์ค์ ์ธ์คํด์ค ๋ฐํ"""
|
|
|
return Config
|
|
|
|
|
|
|
|
|
|