"""FastAPI 应用入口。""" from fastapi import FastAPI, Depends from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse from pathlib import Path from .database import init_db from .deps import get_user_from_api_key from .schemas import MeOut, UserOut from .routers import auth, apikeys from . import ws app = FastAPI(title="Pica Gateway", version="0.1.0") # 路由 app.include_router(auth.router) app.include_router(apikeys.router) app.include_router(ws.router) # WebSocket 文本转发 @app.on_event("startup") def on_startup(): init_db() @app.get("/api/me", response_model=MeOut) def me(user=Depends(get_user_from_api_key)): """示例:用 X-API-Key 访问的受保护接口。""" return MeOut(user=UserOut(id=user.id, username=user.username), message="API Key 鉴权通过") @app.get("/health") def health(): return {"status": "ok"} # 静态前端页面 STATIC_DIR = Path(__file__).resolve().parent.parent / "static" app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static") @app.get("/") def index(): return FileResponse(STATIC_DIR / "index.html")