session_model.py 2.2 KB

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