大改,未验证

This commit is contained in:
2026-03-20 16:50:26 +08:00
parent c7ee292c4f
commit e14e3ee7a5
36 changed files with 1419 additions and 4805 deletions

View File

@@ -58,11 +58,49 @@ class WorkOrder(Base):
# 关联处理过程记录
process_history = relationship("WorkOrderProcessHistory", back_populates="work_order", order_by="WorkOrderProcessHistory.process_time")
class ChatSession(Base):
"""对话会话模型 — 将多轮对话组织为一个会话"""
__tablename__ = "chat_sessions"
id = Column(Integer, primary_key=True)
session_id = Column(String(100), unique=True, nullable=False) # 唯一会话标识
user_id = Column(String(100), nullable=True) # 用户标识
work_order_id = Column(Integer, ForeignKey("work_orders.id"), nullable=True)
title = Column(String(200), nullable=True) # 会话标题(取首条消息摘要)
status = Column(String(20), default="active") # active, ended
message_count = Column(Integer, default=0) # 消息轮数
source = Column(String(50), nullable=True) # 来源websocket, api, feishu
ip_address = Column(String(45), nullable=True)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
ended_at = Column(DateTime, nullable=True)
# 关联消息
messages = relationship("Conversation", back_populates="chat_session", order_by="Conversation.timestamp")
def to_dict(self):
return {
'id': self.id,
'session_id': self.session_id,
'user_id': self.user_id,
'work_order_id': self.work_order_id,
'title': self.title,
'status': self.status,
'message_count': self.message_count,
'source': self.source,
'ip_address': self.ip_address,
'created_at': self.created_at.isoformat() if self.created_at else None,
'updated_at': self.updated_at.isoformat() if self.updated_at else None,
'ended_at': self.ended_at.isoformat() if self.ended_at else None,
}
class Conversation(Base):
"""对话记录模型"""
__tablename__ = "conversations"
id = Column(Integer, primary_key=True)
session_id = Column(String(100), ForeignKey("chat_sessions.session_id"), nullable=True) # 关联会话
work_order_id = Column(Integer, ForeignKey("work_orders.id"))
user_message = Column(Text, nullable=False)
assistant_response = Column(Text, nullable=False)
@@ -79,6 +117,7 @@ class Conversation(Base):
cpu_usage = Column(Float) # CPU使用率
work_order = relationship("WorkOrder", back_populates="conversations")
chat_session = relationship("ChatSession", back_populates="messages")
class KnowledgeEntry(Base):
"""知识库条目模型"""