File size: 1,321 Bytes
b655c88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""
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)