session_model.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import json
  2. from datetime import datetime
  3. from enum import IntEnum
  4. from sqlalchemy import Column, String, Enum as SQLAlchemyEnum, Integer, DateTime, JSON, TEXT
  5. from app.models import AgentType, current_time
  6. from app.models.base_model import Base
  7. class SessionModel(Base):
  8. __tablename__ = "sessions"
  9. id = Column(String(255), primary_key=True)
  10. name = Column(String(255))
  11. agent_id = Column(String(255))
  12. agent_type = Column(SQLAlchemyEnum(AgentType), nullable=False) # 目前只存basic的,ragflow和bisheng的调接口获取
  13. create_date = Column(DateTime, default=current_time) # 创建时间,默认值为当前时区时间
  14. update_date = Column(DateTime, default=current_time, onupdate=current_time) # 更新时间,默认值为当前时区时间,更新时自动更新
  15. tenant_id = Column(Integer) # 创建人
  16. message = Column(TEXT) # 说明
  17. conversation_id = Column(String(64))
  18. # to_dict 方法
  19. def to_dict(self):
  20. return {
  21. 'id': self.id,
  22. 'name': self.name,
  23. 'agent_type': self.agent_type,
  24. 'agent_id': self.agent_id,
  25. 'create_date': self.create_date.strftime("%Y-%m-%d %H:%M:%S"),
  26. 'update_date': self.update_date.strftime("%Y-%m-%d %H:%M:%S"),
  27. }
  28. def log_to_json(self):
  29. return {
  30. 'id': self.id,
  31. 'name': self.name,
  32. 'agent_type': self.agent_type,
  33. 'agent_id': self.agent_id,
  34. 'create_date': self.create_date.strftime("%Y-%m-%d %H:%M:%S"),
  35. 'update_date': self.update_date.strftime("%Y-%m-%d %H:%M:%S"),
  36. 'message': json.loads(self.message)
  37. }
  38. def add_message(self, message: dict):
  39. if self.message is None:
  40. self.message = '[]'
  41. try:
  42. msg = json.loads(self.message)
  43. msg.append(message)
  44. except Exception as e:
  45. return
  46. self.message = json.dumps(msg)