from contextlib import asynccontextmanager from typing import Callable from fastapi import FastAPI from plugin import PluginManager from uvicorn.server import logger def active_config(): logger.info("[激活配置] 加载配置 ⚙️") from config import setting # noqa def import_router(app: FastAPI): logger.info("[导入路由] 开始导入路由 🛣️") from router import router app.include_router(router) logger.info("[导入路由] 路由导入完成 ✅") def install_plugins_after_started(app: FastAPI): logger.info("[安装插件] 开始安装插件 📦") from plugin import SpaProxy plugin_manager = PluginManager(app) # 安装插件 plugin_manager.register_plugin(SpaProxy(app, dist="frontend/dist")) logger.info("[安装插件] 插件安装完成 ✅") @asynccontextmanager async def lifespan(app: FastAPI, func: Callable = lambda: None): logger.info("[生命周期] 应用启动 🚀") active_config() import_router(app) install_plugins_after_started(app) func() yield logger.info("[生命周期] 应用关闭 🔧✅")