chatbot-lichsu / backend /runtime_paths.py
Nguyễn Quốc Vỹ
Update repo
b655c88
"""
Quản lý đường dẫn dữ liệu runtime dùng chung cho local và Hugging Face Space.
"""
from __future__ import annotations
import os
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def get_default_data_dir() -> str:
"""Mặc định local dùng ./data, còn Space không cấu hình thì dùng /tmp/app_data."""
if os.getenv("SPACE_ID"):
return "/tmp/app_data"
return os.path.join(ROOT_DIR, "data")
DEFAULT_DATA_DIR = get_default_data_dir()
def get_app_data_dir() -> str:
"""Thư mục dữ liệu runtime. Có thể override bằng APP_DATA_DIR."""
data_dir = os.getenv("APP_DATA_DIR", DEFAULT_DATA_DIR).strip() or DEFAULT_DATA_DIR
return os.path.abspath(data_dir)
APP_DATA_DIR = get_app_data_dir()
PDF_DIR = os.path.join(APP_DATA_DIR, "pdf")
PROCESSED_DIR = os.path.join(APP_DATA_DIR, "processed")
VECTOR_DIR = os.path.join(APP_DATA_DIR, "csdl_vector")
DB_PATH = os.path.join(APP_DATA_DIR, "chatbot.db")
ENV_PATH = os.path.join(ROOT_DIR, ".env")
DATASET_MANIFEST_PATH = os.path.join(APP_DATA_DIR, "dataset_manifest.json")
def ensure_app_dirs() -> None:
"""Tạo các thư mục runtime cơ bản nếu chưa tồn tại."""
for path in (APP_DATA_DIR, PDF_DIR, PROCESSED_DIR, VECTOR_DIR):
os.makedirs(path, exist_ok=True)