|
|
""" |
|
|
์ค์ ๊ด๋ฆฌ ๋ชจ๋ |
|
|
ํ๊ฒฝ ๋ณ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ค์ ์ ๊ด๋ฆฌํฉ๋๋ค. |
|
|
""" |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|