From 226202d6eee6480f3386c6295be26fad42940cc8 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期五, 28 三月 2025 09:41:39 +0800 Subject: [PATCH] 知识库分享,历史记录文件 --- app/models/v2/session_model.py | 33 ++++++++++++++++++++++++++++----- 1 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/models/v2/session_model.py b/app/models/v2/session_model.py index fad5bc1..c1ec605 100644 --- a/app/models/v2/session_model.py +++ b/app/models/v2/session_model.py @@ -3,7 +3,7 @@ from datetime import datetime from sqlalchemy.orm import Session -from typing import Optional, Type +from typing import Optional, Type, List from pydantic import BaseModel from sqlalchemy import Column, String, Integer, DateTime, JSON, TEXT, Index @@ -43,9 +43,9 @@ 'session_id': self.id, 'name': self.name, 'agent_type': self.agent_type, - 'agent_id': self.agent_id, + 'chat_id': self.agent_id, 'event_type': self.event_type, - 'session_type': self.session_type, + 'session_type': self.session_type if self.session_type else 0, 'create_date': self.create_date.strftime("%Y-%m-%d %H:%M:%S"), 'update_date': self.update_date.strftime("%Y-%m-%d %H:%M:%S"), } @@ -55,7 +55,7 @@ 'id': self.id, 'name': self.name, 'agent_type': self.agent_type, - 'agent_id': self.agent_id, + 'chat_id': self.agent_id, 'create_date': self.create_date.strftime("%Y-%m-%d %H:%M:%S"), 'update_date': self.update_date.strftime("%Y-%m-%d %H:%M:%S"), 'message': json.loads(self.message) @@ -82,6 +82,17 @@ + def to_dict(self): + res = {"files": [], "inputs": {}} + if hasattr(self, 'files'): + res['files'] = self.files + if hasattr(self, 'inputs'): + res['inputs'] = self.inputs + return res + + + + class ChatSessionDao: def __init__(self, db: Session): self.db = db @@ -104,7 +115,7 @@ return session async def update_session_by_id(self, session_id: str, session, message: dict, conversation_id=None) -> ChatSessionModel | None: - print(message) + # print(message) if not session: session = await self.get_session_by_id(session_id) if session: @@ -133,3 +144,15 @@ if session: self.db.delete(session) self.db.commit() + + async def get_session_list(self, user_id: int, agent_id: str, keyword:str, page: int, page_size: int) -> any: + query = self.db.query(ChatSessionModel).filter(ChatSessionModel.tenant_id==user_id) + if agent_id: + query = query.filter(ChatSessionModel.agent_id==agent_id) + if keyword: + query = query.filter(ChatSessionModel.name.like('%{}%'.format(keyword))) + total = query.count() + session_list = query.order_by(ChatSessionModel.update_date.desc()).offset((page-1)*page_size).limit(page_size).all() + return total, session_list + + -- Gitblit v1.8.0