2025-10-23 14:08:08 +08:00
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
|
|
|
|
|
|
from fastapi import FastAPI
|
|
|
|
|
|
2026-01-22 02:09:50 +08:00
|
|
|
from src.services.task_service import tasker
|
2026-01-14 17:32:19 +08:00
|
|
|
from src.services.mcp_service import init_mcp_servers
|
2026-02-21 02:48:20 +08:00
|
|
|
from src.services.skill_service import init_skills_cache
|
2026-01-21 15:15:52 +08:00
|
|
|
from src.storage.postgres.manager import pg_manager
|
|
|
|
|
from src.knowledge import knowledge_base
|
2026-01-14 17:32:19 +08:00
|
|
|
from src.utils import logger
|
2025-10-23 14:08:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@asynccontextmanager
|
|
|
|
|
async def lifespan(app: FastAPI):
|
|
|
|
|
"""FastAPI lifespan事件管理器"""
|
2026-01-21 15:15:52 +08:00
|
|
|
# 初始化数据库连接
|
|
|
|
|
try:
|
|
|
|
|
pg_manager.initialize()
|
2026-01-22 05:57:13 +08:00
|
|
|
await pg_manager.create_business_tables()
|
2026-02-22 17:42:37 +08:00
|
|
|
await pg_manager.ensure_business_schema()
|
2026-01-22 05:57:13 +08:00
|
|
|
await pg_manager.ensure_knowledge_schema()
|
2026-01-21 15:15:52 +08:00
|
|
|
except Exception as e:
|
|
|
|
|
logger.error(f"Failed to initialize database during startup: {e}")
|
|
|
|
|
|
2026-01-22 01:15:01 +08:00
|
|
|
# 初始化 MCP 服务器配置
|
|
|
|
|
try:
|
|
|
|
|
await init_mcp_servers()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error(f"Failed to initialize MCP servers during startup: {e}")
|
|
|
|
|
|
2026-02-21 02:48:20 +08:00
|
|
|
# 初始化 Skills 缓存
|
|
|
|
|
try:
|
|
|
|
|
await init_skills_cache()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error(f"Failed to initialize skills cache during startup: {e}")
|
|
|
|
|
|
2026-01-21 15:15:52 +08:00
|
|
|
# 初始化知识库管理器
|
|
|
|
|
try:
|
|
|
|
|
await knowledge_base.initialize()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error(f"Failed to initialize knowledge base manager: {e}")
|
|
|
|
|
|
2026-01-14 00:34:24 +08:00
|
|
|
await tasker.start()
|
2025-10-23 14:08:08 +08:00
|
|
|
yield
|
|
|
|
|
await tasker.shutdown()
|
2026-01-21 15:15:52 +08:00
|
|
|
await pg_manager.close()
|