From 95bfccca0260a6ff3e994ebbbbfafb61b7dab442 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期五, 22 十一月 2024 10:11:51 +0800 Subject: [PATCH] merge --- app/service/session.py | 50 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 30 insertions(+), 20 deletions(-) diff --git a/app/service/session.py b/app/service/session.py index 6341414..7e43223 100644 --- a/app/service/session.py +++ b/app/service/session.py @@ -1,7 +1,9 @@ +from typing import Type + from sqlalchemy.orm import Session from Log import logger -from app.models import AgentType +from app.models import AgentType, current_time from app.models.session_model import SessionModel @@ -9,7 +11,8 @@ 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) -> Type[ + SessionModel] | SessionModel: """ 鍒涘缓涓�涓柊鐨勪細璇濊褰曘�� @@ -22,19 +25,20 @@ 杩斿洖: SessionModel: 鏂板垱寤虹殑浼氳瘽妯″瀷瀹炰緥锛屽鏋滀細璇滻D宸插瓨鍦ㄥ垯杩斿洖None銆� """ - logger.error("-------------xieru") 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) - logger.error("-------------xieru------------1") + existing_session.add_message({"role": "user", "content": name}) + 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[0:200], + name=name[0:50], agent_id=agent_id, agent_type=agent_type, - tenant_id = user_id, + tenant_id=user_id, message=[{"role": "user", "content": name}] ) self.db.add(new_session) @@ -42,7 +46,7 @@ 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鑾峰彇浼氳瘽璁板綍銆� @@ -52,9 +56,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.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: """ 鏇存柊浼氳瘽璁板綍銆� @@ -66,18 +73,21 @@ SessionModel: 鏇存柊鍚庣殑浼氳瘽妯″瀷瀹炰緥銆� """ logger.error("鏇存柊鏁版嵁---------------------------") - session = self.db.query(SessionModel).filter_by(id=session_id).first() + self.db.commit() + session = self.get_session_by_id(session_id) if session: if "message" in kwargs: - message = session.message - logger.error(kwargs) - message.append(kwargs["message"]) - session.message = message - logger.error("鏇存柊鏁版嵁--------------------------11111111-") - logger.error(message) + session.add_message(kwargs["message"]) + # 鏇挎崲鍏朵粬瀛楁 + for key, value in kwargs.items(): + if key != "message": + setattr(session, key, value) + session.update_date = current_time() + try: self.db.commit() self.db.refresh(session) - logger.error("鏇存柊鏁版嵁瀹屾垚--------------------------1111111122222222-") + except Exception as e: + self.db.rollback() return session def delete_session(self, session_id: str) -> None: -- Gitblit v1.8.0