main.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from contextlib import asynccontextmanager
  2. from fastapi import FastAPI
  3. from fastapi.middleware.cors import CORSMiddleware
  4. from app.config import get_settings
  5. settings = get_settings()
  6. @asynccontextmanager
  7. async def lifespan(app: FastAPI):
  8. # 启动时:确保数据目录存在
  9. settings.ensure_dirs()
  10. yield
  11. # 关闭时:清理资源(如有需要)
  12. def create_app() -> FastAPI:
  13. app = FastAPI(
  14. title="PEFT Fine-Tuning Platform",
  15. version="0.1.0",
  16. lifespan=lifespan,
  17. )
  18. # CORS 中间件
  19. app.add_middleware(
  20. CORSMiddleware,
  21. allow_origins=settings.backend_cors_origins,
  22. allow_credentials=True,
  23. allow_methods=["*"],
  24. allow_headers=["*"],
  25. )
  26. # 挂载路由 (Phase 2 起逐步填充)
  27. from app.api import models as models_api
  28. from app.api import datasets as datasets_api
  29. from app.api import training as training_api
  30. from app.api import evaluation as evaluation_api
  31. from app.api import deployment as deployment_api
  32. app.include_router(models_api.router, prefix="/api/v1/models", tags=["models"])
  33. app.include_router(datasets_api.router, prefix="/api/v1/datasets", tags=["datasets"])
  34. app.include_router(training_api.router, prefix="/api/v1/training", tags=["training"])
  35. app.include_router(evaluation_api.router, prefix="/api/v1/evaluation", tags=["evaluation"])
  36. app.include_router(deployment_api.router, prefix="/api/v1/deployment", tags=["deployment"])
  37. # WebSocket
  38. from app.core.websocket import router as ws_router
  39. app.include_router(ws_router)
  40. @app.get("/health")
  41. async def health_check():
  42. return {"status": "ok", "env": settings.backend_env}
  43. return app
  44. app = create_app()