|
@@ -1,14 +1,21 @@
|
|
|
from contextlib import asynccontextmanager
|
|
|
from datetime import datetime
|
|
|
+from typing import Optional
|
|
|
|
|
|
-from fastapi import FastAPI
|
|
|
+from fastapi import FastAPI, Depends, Security, HTTPException
|
|
|
from py_tools.connections.http import AsyncHttpClient
|
|
|
from py_tools.logging import logger
|
|
|
+from pydantic import BaseModel
|
|
|
+from requests import Session
|
|
|
|
|
|
from .config.site import SiteConfig
|
|
|
+from .db.session import get_db
|
|
|
from .middlewares.base import register_middlewares
|
|
|
-from .router.knowledge_nodes_api import knowledge_nodes_api_router
|
|
|
+from .model.response import StandardResponse
|
|
|
+from .router.knowledge_nodes_api import knowledge_nodes_api_router, get_request_id, api_key_header
|
|
|
+from .service.kg_node_service import KGNodeService
|
|
|
from .utils import log_util
|
|
|
+from .utils.ObjectToJsonArrayConverter import ObjectToJsonArrayConverter
|
|
|
|
|
|
|
|
|
@asynccontextmanager
|
|
@@ -23,7 +30,6 @@ app = FastAPI(
|
|
|
lifespan=lifespan,
|
|
|
middleware=register_middlewares(), # 注册web中间件
|
|
|
)
|
|
|
-
|
|
|
@app.get("/health")
|
|
|
async def health_check():
|
|
|
"""健康检查接口"""
|
|
@@ -33,6 +39,34 @@ async def health_check():
|
|
|
"service": "knowledge-graph"
|
|
|
}
|
|
|
|
|
|
+class Agent(BaseModel):
|
|
|
+ node_name: str
|
|
|
+ relation: str
|
|
|
+@app.post("/nodes/paginated_search", response_model=StandardResponse,operation_id="实体查询")
|
|
|
+async def paginated_search(
|
|
|
+ payload: Agent,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ request_id: str = Depends(get_request_id),
|
|
|
+ api_key: str = Security(api_key_header)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ service = KGNodeService(db)
|
|
|
+ service.search_title_index()
|
|
|
+ return StandardResponse(
|
|
|
+ success=True,
|
|
|
+ requestId=request_id,
|
|
|
+ data=ObjectToJsonArrayConverter.convert(result)
|
|
|
+ )
|
|
|
+ except Exception as e:
|
|
|
+ logger.error(f"分页查询失败: {str(e)}")
|
|
|
+ raise HTTPException(
|
|
|
+ status_code=500,
|
|
|
+ detail=StandardResponse(
|
|
|
+ success=False,
|
|
|
+ error_code=500,
|
|
|
+ error_msg=str(e)
|
|
|
+ )
|
|
|
+ )
|
|
|
|
|
|
async def init_setup():
|
|
|
"""初始化项目配置"""
|
|
@@ -45,7 +79,7 @@ async def startup():
|
|
|
await init_setup()
|
|
|
|
|
|
# 加载路由
|
|
|
- app.include_router(knowledge_nodes_api_router)
|
|
|
+ #app.include_router(knowledge_nodes_api_router)
|
|
|
|
|
|
logger.info("fastapi startup success")
|
|
|
|