37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
"""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)
|