from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager from .core.model_loader import load_models, unload_models from app.api.card_inference import router as card_inference_router from app.api.score_inference import router as score_inference_router from app.api.config_api import router as config_api_router import os from .core.logger import setup_logging, get_logger from .core.config import settings setup_logging() # 获取一个用于 main 模块的日志记录器 logger = get_logger(__name__) @asynccontextmanager async def lifespan(main_app: FastAPI): print("--- 应用启动 ---") # --- 文件和目录准备 --- os.makedirs(settings.TEMP_WORK_DIR, exist_ok=True) # --- 模型加载 --- load_models() yield print("--- 应用关闭 ---") unload_models() app = FastAPI(title="卡片框和缺陷检测服务", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"] ) app.include_router(card_inference_router, prefix=settings.API_Inference_prefix) app.include_router(score_inference_router, prefix=settings.API_Score_prefix) app.include_router(config_api_router, prefix=settings.API_Config_prefix)