| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from contextlib import asynccontextmanager
- from fastapi import FastAPI
- from fastapi.middleware.cors import CORSMiddleware
- from app.config import get_settings
- settings = get_settings()
- @asynccontextmanager
- async def lifespan(app: FastAPI):
- # 启动时:确保数据目录存在
- settings.ensure_dirs()
- yield
- # 关闭时:清理资源(如有需要)
- def create_app() -> FastAPI:
- app = FastAPI(
- title="PEFT Fine-Tuning Platform",
- version="0.1.0",
- lifespan=lifespan,
- )
- # CORS 中间件
- app.add_middleware(
- CORSMiddleware,
- allow_origins=settings.backend_cors_origins,
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- # 挂载路由 (Phase 2 起逐步填充)
- from app.api import models as models_api
- from app.api import datasets as datasets_api
- from app.api import training as training_api
- from app.api import evaluation as evaluation_api
- from app.api import deployment as deployment_api
- app.include_router(models_api.router, prefix="/api/v1/models", tags=["models"])
- app.include_router(datasets_api.router, prefix="/api/v1/datasets", tags=["datasets"])
- app.include_router(training_api.router, prefix="/api/v1/training", tags=["training"])
- app.include_router(evaluation_api.router, prefix="/api/v1/evaluation", tags=["evaluation"])
- app.include_router(deployment_api.router, prefix="/api/v1/deployment", tags=["deployment"])
- # WebSocket
- from app.core.websocket import router as ws_router
- app.include_router(ws_router)
- @app.get("/health")
- async def health_check():
- return {"status": "ok", "env": settings.backend_env}
- return app
- app = create_app()
|