""" config.py — Tập trung toàn bộ biến cấu hình từ environment / .env """ import os from dotenv import load_dotenv load_dotenv() # ── Server ──────────────────────────────────────────────────── HOST: str = os.getenv("HOST", "0.0.0.0") PORT: int = int(os.getenv("PORT", "7860")) # ── CORS ───────────────────────────────────────────────────── _cors_raw: str = os.getenv("CORS_ORIGINS", "http://localhost:5500,http://localhost:3000,http://127.0.0.1:5500") CORS_ORIGINS: list[str] = [o.strip() for o in _cors_raw.split(",")] # ── InsightFace Model ───────────────────────────────────────── MODEL_NAME: str = os.getenv("MODEL_NAME", "buffalo_l") MODEL_PROVIDER: str = os.getenv("MODEL_PROVIDER", "CPUExecutionProvider") DET_SIZE: tuple[int, int] = ( int(os.getenv("DET_SIZE_W", "640")), int(os.getenv("DET_SIZE_H", "640")), ) # ── Recognition ─────────────────────────────────────────────── SIMILARITY_THRESHOLD: float = float(os.getenv("SIMILARITY_THRESHOLD", "0.45")) # ── MongoDB Atlas ───────────────────────────────────────────── MONGO_URI: str = os.getenv( "MONGO_URI", "mongodb+srv://253bigdatagroup2:253bigdatagroup2@cluster0.rgljpiy.mongodb.net/?appName=Cluster0", ) MONGO_DB_NAME: str = os.getenv("MONGO_DB_NAME", "face_recognition_media") MONGO_COL_RAW_IMAGES: str = os.getenv("RAW_IMAGES_COLLECTION", "raw_images") MONGO_COL_FACE_CROPS: str = os.getenv("MONGO_COLLECTION_NAME", "face_crops") MONGO_COL_UNKNOWN_FACES: str = os.getenv("UNKNOWN_FACES_COLLECTION", "unknown_faces") MONGO_COL_PAYLOADS: str = os.getenv("RECOGNITION_PAYLOADS_COLLECTION", "recognition_payloads") # ── Supabase PostgreSQL ─────────────────────────────────────── SUPABASE_DB_URI: str = os.getenv( "SUPABASE_DB_URI", "postgresql://postgres.sspdmjreiuavgmldzcof:253bigdatagroup2@aws-1-ap-southeast-2.pooler.supabase.com:6543/postgres", ) # ── Local Fallback ──────────────────────────────────────────── DB_FOLDER: str = os.getenv("DB_FOLDER", "face_db")