瀏覽代碼

对话列表过滤name空数据

zhangqian 1 年之前
父節點
當前提交
93f9d6fc87
共有 3 個文件被更改,包括 20 次插入11 次删除
  1. 8 2
      app/api/agent.py
  2. 11 9
      app/service/bisheng.py
  3. 1 0
      app/service/ragflow.py

+ 8 - 2
app/api/agent.py

@@ -26,7 +26,12 @@ async def agent_list(db: Session = Depends(get_db)):
 
 
 @router.get("/{agent_id}/sessions", response_model=ResponseList)
-async def chat_list(agent_id: str, db: Session = Depends(get_db), current_user: UserModel = Depends(get_current_user)):
+async def chat_list(
+        agent_id: str,
+        page: int = Query(1, ge=1),
+        limit: int = Query(10, ge=1, le=100),
+        db: Session = Depends(get_db),
+        current_user: UserModel = Depends(get_current_user)):
     agent = db.query(AgentModel).filter(AgentModel.id == agent_id).first()
     if not agent:
         return ResponseList(code=404, msg="Agent not found")
@@ -44,7 +49,8 @@ async def chat_list(agent_id: str, db: Session = Depends(get_db), current_user:
         bisheng_service = BishengService(base_url=settings.sgb_base_url)
         try:
             token = get_bisheng_token(db, current_user.id)
-            result = await bisheng_service.get_chat_sessions(token)
+            print(f"Calling get_chat_sessions with token={token}, page={page}, limit={limit}")
+            result = await bisheng_service.get_chat_sessions(token, page, limit)
         except Exception as e:
             raise HTTPException(status_code=500, detail=str(e))
         return ResponseList(code=200, msg="", data=result)

+ 11 - 9
app/service/bisheng.py

@@ -56,8 +56,8 @@ class BishengService:
             data = self._check_response(response)
             return data.get('public_key')
 
-    async def get_chat_sessions(self, token: str) -> list:
-        url = f"{self.base_url}/api/v1/chat/list?page=1&limit=40"
+    async def get_chat_sessions(self, token: str, page: int = 1, limit: int=100) -> list:
+        url = f"{self.base_url}/api/v1/chat/list?page={page}&limit={limit}"
         headers = {'cookie': f"access_token_cookie={token};"}
         async with httpx.AsyncClient() as client:
             response = await client.get(url, headers=headers)
@@ -70,6 +70,8 @@ class BishengService:
                     "updated_time": int(datetime.strptime(item["update_time"], "%Y-%m-%dT%H:%M:%S").timestamp() * 1000)
                 }
                 for item in data
+                if
+                "latest_message" in item and "message" in item["latest_message"] and item["latest_message"]["message"]
             ]
             return result
 
@@ -85,13 +87,13 @@ class BishengService:
             response.raise_for_status()
             data = self._check_response(response)
             session_log = [
-                    {
-                        "message": message.get("message"),
-                        "role": message.get("category"),
-                        "ts": message.get("create_time")
-                    }
-                    for message in data
-                ]
+                {
+                    "message": message.get("message"),
+                    "role": message.get("category"),
+                    "ts": message.get("create_time")
+                }
+                for message in data
+            ]
 
             # 把session_log 按ts 升序排序
             session_log.sort(key=lambda x: x['ts'])

+ 1 - 0
app/service/ragflow.py

@@ -99,6 +99,7 @@ class RagflowService:
                     "updated_time": item["update_time"]
                 }
                 for item in data
+                if "id" in item and "name" in item and item["name"]
             ]
             return result