feat: 初始提交
This commit is contained in:
105
backend/app/main.py
Normal file
105
backend/app/main.py
Normal file
@@ -0,0 +1,105 @@
|
||||
"""FastAPI 应用入口,负责装配路由、依赖与生命周期管理。"""
|
||||
|
||||
import logging
|
||||
from logging.config import dictConfig
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from .core.config import settings
|
||||
from .db.init_db import init_db
|
||||
from .services.prompt_service import PromptService
|
||||
from .db.session import AsyncSessionLocal
|
||||
from .api.routers import api_router
|
||||
|
||||
|
||||
dictConfig(
|
||||
{
|
||||
"version": 1,
|
||||
"disable_existing_loggers": False,
|
||||
"formatters": {
|
||||
"default": {
|
||||
"format": "%(asctime)s [%(levelname)s] %(name)s - %(message)s",
|
||||
}
|
||||
},
|
||||
"handlers": {
|
||||
"console": {
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "default",
|
||||
}
|
||||
},
|
||||
"loggers": {
|
||||
"backend": {
|
||||
"level": settings.logging_level,
|
||||
"handlers": ["console"],
|
||||
"propagate": False,
|
||||
},
|
||||
"app": {
|
||||
"level": settings.logging_level,
|
||||
"handlers": ["console"],
|
||||
"propagate": False,
|
||||
},
|
||||
"backend.app": {
|
||||
"level": settings.logging_level,
|
||||
"handlers": ["console"],
|
||||
"propagate": False,
|
||||
},
|
||||
"backend.api": {
|
||||
"level": settings.logging_level,
|
||||
"handlers": ["console"],
|
||||
"propagate": False,
|
||||
},
|
||||
"backend.services": {
|
||||
"level": settings.logging_level,
|
||||
"handlers": ["console"],
|
||||
"propagate": False,
|
||||
},
|
||||
},
|
||||
"root": {
|
||||
"level": "WARNING",
|
||||
"handlers": ["console"],
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
# 应用启动时初始化数据库,并预热提示词缓存
|
||||
await init_db()
|
||||
async with AsyncSessionLocal() as session:
|
||||
prompt_service = PromptService(session)
|
||||
await prompt_service.preload()
|
||||
yield
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
title=settings.app_name,
|
||||
debug=settings.debug,
|
||||
version="1.0.0",
|
||||
lifespan=lifespan,
|
||||
)
|
||||
|
||||
# CORS 配置,生产环境建议改为具体域名
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
app.include_router(api_router)
|
||||
|
||||
|
||||
# 健康检查接口(用于 Docker 健康检查和监控)
|
||||
@app.get("/health", tags=["Health"])
|
||||
@app.get("/api/health", tags=["Health"])
|
||||
async def health_check():
|
||||
"""健康检查接口,返回应用状态。"""
|
||||
return {
|
||||
"status": "healthy",
|
||||
"app": settings.app_name,
|
||||
"version": "1.0.0",
|
||||
}
|
||||
Reference in New Issue
Block a user