"""packs-lab FastAPI application.

NAS 자료 다운로드 자동화 — DSM 공유 링크 발급 + 5GB 멀티파트 업로드 수신.
모든 Vercel 호출은 HMAC 인증. 사용자 다운로드는 Vercel이 supabase 인증 후 프록시.
"""
import logging
import os
from contextlib import asynccontextmanager

from fastapi import FastAPI

logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(name)s] %(levelname)s %(message)s")
logger = logging.getLogger("packs-lab")


@asynccontextmanager
async def lifespan(app: FastAPI):
    # DSM credentials presence check
    for key in ("DSM_HOST", "DSM_USER", "DSM_PASS", "BACKEND_HMAC_SECRET"):
        if not os.getenv(key):
            logger.warning("환경변수 %s 미설정 — packs-lab 일부 기능 작동 안 함", key)
    logger.info("packs-lab 시작")
    yield


app = FastAPI(lifespan=lifespan, title="packs-lab", version="1.0.0")


@app.get("/health")
def health():
    return {"status": "ok", "service": "packs-lab"}


from . import routes  # noqa: E402

app.include_router(routes.router)
