feat: 新增多格式文件上传入库与认证体系
- 新增 JWT 认证模块,支持登录/注册/用户管理 - 新增文件上传接口,支持 .txt/.md/.html/.pdf/.docx 等格式解析入库 - 新增检索结果 AI 总结功能 - 新增文本去重缓存机制 - 新增全局认证夹具简化测试 - 新增配置项与环境变量支持 - 完善文档与测试覆盖
This commit is contained in:
+14
-2
@@ -8,10 +8,12 @@ from fastapi.exceptions import RequestValidationError
|
||||
from fastapi.responses import FileResponse, JSONResponse
|
||||
|
||||
from app.api.response import ApiError, error
|
||||
from app.api.v1.auth import router as auth_router
|
||||
from app.api.v1.document import router as document_router
|
||||
from app.api.v1.knowledge import router as knowledge_router
|
||||
from app.api.v1.search import router as search_router
|
||||
from app.config import settings
|
||||
from app.core.auth import ensure_default_admin
|
||||
from app.services.qdrant import QdrantService
|
||||
|
||||
logger = structlog.get_logger()
|
||||
@@ -19,15 +21,24 @@ logger = structlog.get_logger()
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(_: FastAPI) -> AsyncIterator[None]:
|
||||
"""应用生命周期:启动时初始化 Qdrant 集合
|
||||
"""应用生命周期:启动时初始化 Qdrant 集合与默认管理员
|
||||
|
||||
初始化失败仅记录日志、不阻止启动(本地开发可能无 Qdrant)。
|
||||
初始化失败仅记录日志、不阻止启动(本地开发可能无 Qdrant/Redis)。
|
||||
"""
|
||||
try:
|
||||
await QdrantService().ensure_collections()
|
||||
logger.info("Qdrant 集合初始化完成")
|
||||
except Exception:
|
||||
logger.error("Qdrant 集合初始化失败,跳过初始化继续启动")
|
||||
try:
|
||||
await ensure_default_admin()
|
||||
except Exception:
|
||||
logger.warning("默认管理员初始化失败,跳过", exc_info=True)
|
||||
try:
|
||||
Path(settings.upload_dir).mkdir(parents=True, exist_ok=True)
|
||||
logger.info("上传目录已就绪", upload_dir=settings.upload_dir)
|
||||
except Exception:
|
||||
logger.warning("上传目录初始化失败,文件落盘将按需创建", exc_info=True)
|
||||
yield
|
||||
|
||||
|
||||
@@ -38,6 +49,7 @@ app = FastAPI(
|
||||
lifespan=lifespan,
|
||||
)
|
||||
|
||||
app.include_router(auth_router)
|
||||
app.include_router(search_router)
|
||||
app.include_router(document_router)
|
||||
app.include_router(knowledge_router)
|
||||
|
||||
Reference in New Issue
Block a user