From 4eb8d55ec0a664678895132256c97cc63a80be2b Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期四, 21 十一月 2024 19:56:49 +0800
Subject: [PATCH] 写入记录问题

---
 app/api/chat.py        |   62 +++++++++++++++----------------
 app/service/basic.py   |    8 +++-
 app/service/session.py |   17 ++++----
 app/api/agent.py       |    6 +-
 4 files changed, 48 insertions(+), 45 deletions(-)

diff --git a/app/api/agent.py b/app/api/agent.py
index af36024..fe6e6c0 100644
--- a/app/api/agent.py
+++ b/app/api/agent.py
@@ -60,7 +60,7 @@
 
     elif agent.agent_type == AgentType.BASIC:
         offset = (page - 1) * limit
-        records = db.query(SessionModel).filter(SessionModel.agent_id == agent_id).offset(offset).limit(limit).all()
+        records = db.query(SessionModel).filter(SessionModel.agent_id == agent_id, SessionModel.tenant_id==current_user.id).offset(offset).limit(limit).all()
         result = [item.to_dict() for item in records]
         return ResponseList(code=200, msg="", data=result)
 
@@ -140,8 +140,8 @@
         except Exception as e:
             raise HTTPException(status_code=500, detail=str(e))
     elif agent.agent_type == AgentType.BASIC:
-        session = db.query(SessionModel).filter(SessionModel.agent_id == agent_id, SessionModel.tenant_id==current_user.id).first()
-        return JSONResponse(status_code=200, content={"code": 200, "data": session.log_to_json()})
+        session = db.query(SessionModel).filter(SessionModel.id == conversation_id).first()
+        return JSONResponse(status_code=200, content={"code": 200, "data": session.log_to_json() if session else {}})
     else:
         return JSONResponse(status_code=200, content={"code": 200, "log": "Unsupported agent type"})
 
diff --git a/app/api/chat.py b/app/api/chat.py
index 11af093..9784eb9 100644
--- a/app/api/chat.py
+++ b/app/api/chat.py
@@ -220,37 +220,32 @@
                 if not question:
                     await websocket.send_json({"message": "Invalid request", "type": "error"})
                     continue
-                if agent.agent_type == "questionTalk":
-                    async for result in service.questions_talk(question, chat_id):
-                        try:
-                            if result[:5] == "data:":
-                                # 濡傛灉鏄紝鍒欐埅鍙栨帀鍓�5涓瓧绗︼紝骞跺幓闄ら灏剧┖鐧界
-                                text = result[5:].strip()
-                            else:
-                                # 鍚﹀垯锛屼繚鎸佸師鏍�
-                                text = result
-                            try:
-                                data = json.loads(text)
-                                output = data.get("output", "")
-                                file_name = data.get("filename", "")
+                logger.error(agent.type)
+                if agent.type == "questionTalk":
 
-                                excel_url = None
-                                if file_name:
-                                    excel_url = f"/api/files/download/?agent_id=basic_question_talk&file_id={file_name}&file_type=word"
-                                result = {"message": output, "type": "message", "file_url": excel_url}
-                                try:
-                                    SessionService(db).update_session(session_id=chat_id, is_incr=1,
-                                                                      message={"role": "assistant", "content": result})
-                                except Exception as e:
-                                    logger.error(e)
-                                await websocket.send_json(result | data)
-                            except json.JSONDecodeError as e:
-                                print(f"Error decoding JSON: {e}")
-                                # print(f"Response text: {text}")
-                        except Exception as e2:
-                            result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"}
-                            await websocket.send_json(result)
-                            print(f"Error process message of basic agent: {e2}")
+                    try:
+                        data = await service.questions_talk(question, chat_id)
+                        output = data.get("output", "")
+                        file_name = data.get("filename", "")
+
+                        excel_url = None
+                        if file_name:
+                            excel_url = f"/api/files/download/?agent_id=basic_question_talk&file_id={file_name}&file_type=word"
+                        result = {"message": output, "type": "message", "file_url": excel_url}
+                        try:
+                            SessionService(db).update_session(chat_id,
+                                                              message={"role": "assistant", "content": result})
+                        except Exception as e:
+                            logger.error(e)
+                        logger.error("-----------------11111111--------------------")
+                        await websocket.send_json(result | data)
+                    except Exception as e2:
+
+                        result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"}
+                        logger.error(str(e2))
+                        logger.error(f"Error process message of basic chuti agent: {e2}")
+                        await websocket.send_json(result)
+
                 else:
                     async for result in service.excel_talk(question, chat_id):
                         try:
@@ -273,7 +268,7 @@
                                     image_url = f"/api/files/download/?agent_id=basic_excel_talk&file_id={image_name}&file_type=image"
                                 result = {"message": output, "type": "message", "excel_url": excel_url, "image_url": image_url}
                                 try:
-                                    SessionService(db).update_session(session_id=chat_id, is_incr=1,
+                                    SessionService(db).update_session(chat_id,
                                                                       message={"role": "assistant", "content": result})
                                 except Exception as e:
                                     logger.error(e)
@@ -286,7 +281,10 @@
                             await websocket.send_json(result)
                             print(f"Error process message of basic agent: {e2}")
         except Exception as e:
-            await websocket.send_json({"message": str(e), "type": "error"})
+            logger.error("----------------------------------------------fffffff")
+            logger.error(e)
+            print(e)
+            await websocket.send_json({"message": "鍑虹幇閿欒锛�", "type": "error"})
         finally:
             await websocket.close()
             print(f"Client {agent_id} disconnected")
diff --git a/app/service/basic.py b/app/service/basic.py
index f3e5db5..33e5f86 100644
--- a/app/service/basic.py
+++ b/app/service/basic.py
@@ -1,5 +1,7 @@
 import httpx
 
+from Log import logger
+
 
 class BasicService:
     def __init__(self, base_url: str):
@@ -73,13 +75,15 @@
                 else:
                     yield f"Error: {response.status_code}"
 
-    async def questions_talk(self, chat_id: str):
+    async def questions_talk(self,question, chat_id: str):
+        logger.error("---------------questions_talk--------------------------")
         url = f"{self.base_url}/questions/talk"
         params = {'chat_id': chat_id}
         headers = {'Content-Type': 'text/plain'}
-        async with httpx.AsyncClient() as client:
+        async with httpx.AsyncClient(timeout=1800) as client:
             response = await client.post(
                 url,
+                data=question,
                 headers=headers,
                 params=params
             )
diff --git a/app/service/session.py b/app/service/session.py
index 78ae31a..dd60c26 100644
--- a/app/service/session.py
+++ b/app/service/session.py
@@ -1,5 +1,6 @@
 from sqlalchemy.orm import Session
 
+from Log import logger
 from app.models import AgentType
 from app.models.session_model import SessionModel
 
@@ -29,7 +30,7 @@
 
         new_session = SessionModel(
             id=session_id,
-            name=name,
+            name=name[0:200],
             agent_id=agent_id,
             agent_type=agent_type,
             tenant_id = user_id,
@@ -63,16 +64,16 @@
         杩斿洖:
             SessionModel: 鏇存柊鍚庣殑浼氳瘽妯″瀷瀹炰緥銆�
         """
-        session = self.get_session_by_id(session_id)
+        logger.error("鏇存柊鏁版嵁---------------------------")
+        session = self.db.query(SessionModel).filter_by(id=session_id).first()
         if session:
             if "message" in kwargs:
-                message =  session.message
+
+                message = session.message
                 message.append(kwargs["message"])
-                kwargs["message"] = message
-            for key, value in kwargs.items():
-                setattr(session, key, value)
-            self.db.commit()
-            self.db.refresh(session)
+                session = message
+                self.db.commit()
+                self.db.refresh(session)
         return session
 
     def delete_session(self, session_id: str) -> None:

--
Gitblit v1.8.0