wiizm commited on
Commit
7ea8a03
ยท
verified ยท
1 Parent(s): 2cfce29

Upload app\core\config.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app//core//config.py +75 -0
app//core//config.py ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ ์„ค์ • ๊ด€๋ฆฌ ๋ชจ๋“ˆ
3
+ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
4
+ """
5
+
6
+ import os
7
+ from pathlib import Path
8
+ from typing import Optional
9
+ from dotenv import load_dotenv
10
+
11
+ # .env ํŒŒ์ผ ๋กœ๋“œ
12
+ load_dotenv()
13
+
14
+ # ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ
15
+ PROJECT_ROOT = Path(__file__).parent.parent.parent
16
+
17
+ class Config:
18
+ """์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ํด๋ž˜์Šค"""
19
+
20
+ # Flask ์„ค์ •
21
+ SECRET_KEY: str = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production')
22
+
23
+ # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค URI ์„ค์ •
24
+ # PostgreSQL: postgresql://user:password@host:port/database
25
+ # SQLite (๊ธฐ๋ณธ๊ฐ’): sqlite:///instance/finance_analysis.db
26
+ _database_url = os.getenv('DATABASE_URL', '')
27
+ if _database_url and (_database_url.startswith('postgresql://') or _database_url.startswith('postgres://')):
28
+ # PostgreSQL URL์ด ์ œ๊ณต๋˜๋ฉด ์‚ฌ์šฉ
29
+ SQLALCHEMY_DATABASE_URI: str = _database_url
30
+ else:
31
+ # ๊ธฐ๋ณธ๊ฐ’: SQLite ์‚ฌ์šฉ
32
+ if _database_url:
33
+ # DATABASE_URL์ด ์„ค์ •๋˜์—ˆ์ง€๋งŒ PostgreSQL ํ˜•์‹์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ 
34
+ import warnings
35
+ warnings.warn(f"DATABASE_URL์ด ์„ค์ •๋˜์—ˆ์ง€๋งŒ PostgreSQL ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. SQLite๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: {_database_url[:50]}...")
36
+ SQLALCHEMY_DATABASE_URI: str = f'sqlite:///{PROJECT_ROOT / "instance" / "finance_analysis.db"}'
37
+ SQLALCHEMY_TRACK_MODIFICATIONS: bool = False
38
+ MAX_CONTENT_LENGTH: int = 100 * 1024 * 1024 # 100MB
39
+
40
+ # Ollama ์„ค์ •
41
+ OLLAMA_BASE_URL: str = os.getenv('OLLAMA_BASE_URL', 'http://localhost:11434')
42
+
43
+ # ๊ฒฝ๋กœ ์„ค์ •
44
+ UPLOAD_FOLDER: Path = PROJECT_ROOT / 'uploads'
45
+ VECTOR_DB_PATH: Path = PROJECT_ROOT / 'vector_db'
46
+ KNOWLEDGE_GRAPH_PATH: Path = PROJECT_ROOT / 'knowledge_graphs'
47
+ TEMPLATES_FOLDER: Path = PROJECT_ROOT / 'templates'
48
+ STATIC_FOLDER: Path = PROJECT_ROOT / 'static'
49
+ INSTANCE_FOLDER: Path = PROJECT_ROOT / 'instance'
50
+
51
+ # ํŒŒ์ผ ํ™•์žฅ์ž ์„ค์ •
52
+ ALLOWED_EXTENSIONS: set[str] = {'txt', 'md', 'pdf', 'docx', 'epub'}
53
+
54
+ # ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ์„ค์ •
55
+ EMBEDDING_MODEL_NAME: str = os.getenv('EMBEDDING_MODEL_NAME', 'sentence-transformers/all-MiniLM-L6-v2')
56
+ RERANKER_MODEL_NAME: str = os.getenv('RERANKER_MODEL_NAME', 'BAAI/bge-reranker-base')
57
+
58
+ # Gemini API ์„ค์ •
59
+ GEMINI_API_KEY: Optional[str] = os.getenv('GEMINI_API_KEY', None)
60
+
61
+ @classmethod
62
+ def ensure_directories(cls) -> None:
63
+ """ํ•„์ˆ˜ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ"""
64
+ cls.UPLOAD_FOLDER.mkdir(parents=True, exist_ok=True)
65
+ cls.VECTOR_DB_PATH.mkdir(parents=True, exist_ok=True)
66
+ cls.KNOWLEDGE_GRAPH_PATH.mkdir(parents=True, exist_ok=True)
67
+ cls.STATIC_FOLDER.mkdir(parents=True, exist_ok=True)
68
+ cls.INSTANCE_FOLDER.mkdir(parents=True, exist_ok=True)
69
+
70
+
71
+ def get_config() -> Config:
72
+ """์„ค์ • ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜"""
73
+ return Config
74
+
75
+