2026-09-08 19:17:35 +08:00
|
|
|
"""应用入口:四库异步生命周期 + 中间件 + 全局异常 + 路由装配。"""
|
|
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
|
|
2026-09-10 23:21:30 +08:00
|
|
|
import uvicorn
|
2026-09-08 19:17:35 +08:00
|
|
|
from fastapi import FastAPI
|
|
|
|
|
|
|
|
|
|
from api.router import api_router
|
|
|
|
|
from config import database
|
2026-09-11 10:47:01 +08:00
|
|
|
from service.customer_agent.bootstrap import (
|
|
|
|
|
build_default_knowledge_upload_service,
|
|
|
|
|
build_default_runtime,
|
|
|
|
|
)
|
2026-09-08 19:17:35 +08:00
|
|
|
from utils.exceptions import register_exception_handlers
|
|
|
|
|
from utils.logger import setup_logging
|
|
|
|
|
from utils.request_id import RequestIdMiddleware
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@asynccontextmanager
|
|
|
|
|
async def lifespan(app: FastAPI):
|
|
|
|
|
setup_logging() # 幂等:分级日志 + trace_id + 脱敏
|
|
|
|
|
# 四库会话懒创建:启动不连接任何库,首次访问才建,可手动预热:
|
|
|
|
|
# asyncio.run(database.init_db())
|
|
|
|
|
yield
|
|
|
|
|
await database.dispose() # 清理已创建的单例(未创建则空操作)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app = FastAPI(title="智能公募基金系统", version="0.1.0", lifespan=lifespan)
|
|
|
|
|
|
|
|
|
|
app.add_middleware(RequestIdMiddleware)
|
|
|
|
|
register_exception_handlers(app)
|
|
|
|
|
app.include_router(api_router)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get("/")
|
|
|
|
|
async def root():
|
2026-09-11 11:24:32 +08:00
|
|
|
return {"message": "智能公募基金系统 API", "docs": "/docs"}
|