import logging from contextlib import asynccontextmanager from fastapi import FastAPI from app.core.config import settings from app.routers import chat, health, plugin from app.routers import queue as queue_router from app.services.config_reader import load_ai_config from app.services.queue import queue_service logger = logging.getLogger("ai-service") @asynccontextmanager async def lifespan(app: FastAPI): config = await load_ai_config() provider = config.get("provider", "lmstudio") model = config.get(provider, {}).get("model", "unknown") logger.info("[ai-service] active provider: %s model: %s", provider, model) queue_service.start() logger.info("[ai-service] queue worker started") yield queue_service.stop() logger.info("[ai-service] queue worker stopped") app = FastAPI(title=settings.PROJECT_NAME, lifespan=lifespan) app.include_router(chat.router, tags=["chat"]) app.include_router(health.router, tags=["health"]) app.include_router(queue_router.router) app.include_router(plugin.router, tags=["plugin"])