from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.v1 import documents, export, export_records from app.core.exceptions import register_exception_handlers from app.services.storage_monitor import start_background_monitor @asynccontextmanager async def lifespan(app: FastAPI): # 启动后台磁盘监控(每 30 分钟检查一次) monitor_task = start_background_monitor() yield # 关闭时取消后台任务 monitor_task.cancel() def create_app() -> FastAPI: app = FastAPI( title="Axonix Text Editor API", version="0.1.0", description="文本编辑器后端 API —— 阶段 0:文档 CRUD + 导出下载", lifespan=lifespan, ) # CORS(开发阶段放开,生产按需收紧) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # 全局异常处理 register_exception_handlers(app) # 路由注册 app.include_router(documents.router, prefix="/api/v1") app.include_router(export.router, prefix="/api/v1") app.include_router(export_records.router, prefix="/api/v1") return app app = create_app()