From e5e2be29cfc033c976558a4d0b5fa73426818b90 Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期三, 26 二月 2025 11:30:48 +0800
Subject: [PATCH] 增加系统信息修改

---
 app/service/session.py |   58 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/app/service/session.py b/app/service/session.py
index 78ae31a..16ef53d 100644
--- a/app/service/session.py
+++ b/app/service/session.py
@@ -1,6 +1,10 @@
+import json
+from typing import Type
+
 from sqlalchemy.orm import Session
 
-from app.models import AgentType
+from Log import logger
+from app.models import AgentType, current_time
 from app.models.session_model import SessionModel
 
 
@@ -8,7 +12,10 @@
     def __init__(self, db: Session):
         self.db = db
 
-    def create_session(self, session_id: str, name: str, agent_id: str, agent_type: AgentType, user_id: int) -> SessionModel:
+
+    def create_session(self, session_id: str, name: str, agent_id: str, agent_type: AgentType, user_id: int, message: dict = None, workflow_type: int = 0) -> Type[
+                                                                                                                    SessionModel] | SessionModel:
+
         """
         鍒涘缓涓�涓柊鐨勪細璇濊褰曘��
 
@@ -21,26 +28,33 @@
         杩斿洖:
             SessionModel: 鏂板垱寤虹殑浼氳瘽妯″瀷瀹炰緥锛屽鏋滀細璇滻D宸插瓨鍦ㄥ垯杩斿洖None銆�
         """
+        if not message:
+            message = {"role": "user", "content": name}
         existing_session = self.get_session_by_id(session_id)
         if existing_session:
-            message=existing_session.message
-            message.append({"role": "user", "content": name})
-            self.update_session(session_id, message=message)
+            print("update success")
+            # existing_session.add_message({"role": "user", "content": name})
+            existing_session.add_message(message)
+            existing_session.update_date = current_time()
+            self.db.commit()
+            self.db.refresh(existing_session)
+            return existing_session
 
         new_session = SessionModel(
             id=session_id,
-            name=name,
+            name=name[0:50],
             agent_id=agent_id,
             agent_type=agent_type,
-            tenant_id = user_id,
-            message=[{"role": "user", "content": name}]
+            tenant_id=user_id,
+            workflow=workflow_type,
+            message = json.dumps([message])
         )
         self.db.add(new_session)
         self.db.commit()
         self.db.refresh(new_session)
         return new_session
 
-    def get_session_by_id(self, session_id: str) -> SessionModel:
+    def get_session_by_id(self, session_id: str) -> Type[SessionModel] | None:
         """
         鏍规嵁浼氳瘽ID鑾峰彇浼氳瘽璁板綍銆�
 
@@ -50,9 +64,12 @@
         杩斿洖:
             SessionModel: 鏌ユ壘鍒扮殑浼氳瘽妯″瀷瀹炰緥锛屽鏋滄湭鎵惧埌鍒欒繑鍥濶one銆�
         """
-        return self.db.query(SessionModel).filter_by(id=session_id).first()
+        session = self.db.query(SessionModel).filter_by(id=session_id).first()
+        if  session and session.message is None:
+            session.message = '[]'
+        return session
 
-    def update_session(self, session_id: str, **kwargs) -> SessionModel:
+    def update_session(self, session_id: str, **kwargs) -> Type[SessionModel] | None:
         """
         鏇存柊浼氳瘽璁板綍銆�
 
@@ -63,16 +80,23 @@
         杩斿洖:
             SessionModel: 鏇存柊鍚庣殑浼氳瘽妯″瀷瀹炰緥銆�
         """
+        logger.error("鏇存柊鏁版嵁---------------------------")
+        self.db.commit()
         session = self.get_session_by_id(session_id)
         if session:
             if "message" in kwargs:
-                message =  session.message
-                message.append(kwargs["message"])
-                kwargs["message"] = message
+                session.add_message(kwargs["message"])
+            # 鏇挎崲鍏朵粬瀛楁
             for key, value in kwargs.items():
-                setattr(session, key, value)
-            self.db.commit()
-            self.db.refresh(session)
+                if key != "message":
+                    setattr(session, key, value)
+            session.update_date = current_time()
+            try:
+                self.db.commit()
+                self.db.refresh(session)
+            except Exception as e:
+                logger.error(e)
+                self.db.rollback()
         return session
 
     def delete_session(self, session_id: str) -> None:

--
Gitblit v1.8.0