任务 1.1: 引入 Repository 层 - BaseRepository 基类:自动 tenant_id 过滤、CRUD、分页、批量删除 - WorkOrderRepository: 工单列表(状态/优先级过滤)、飞书记录查找 - AlertRepository: 预警列表(级别/活跃过滤)、解决预警 - ChatSessionRepository: 会话列表(状态/搜索过滤) - ConversationRepository: 按 session_id 查对话 - KnowledgeRepository: 知识库列表(分类/验证过滤) 任务 10: 清理旧代码 - 删除 src/web/static/js/core/ 目录(5个文件) - 删除 src/web/static/js/services/ 目录 - 删除 src/web/static/js/components/ 目录 - 删除 src/web/static/js/pages/ 目录(12个文件) - 修复 index.html/chat.html/chat_http.html 中对已删除 JS 的引用
44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
from sqlalchemy import desc
|
|
from src.core.models import ChatSession, Conversation
|
|
from src.core.database import db_manager
|
|
from .base import BaseRepository
|
|
|
|
|
|
class ChatSessionRepository(BaseRepository):
|
|
model_class = ChatSession
|
|
|
|
def list_sessions(self, tenant_id=None, page=1, per_page=20, status=None, search=None):
|
|
with db_manager.get_session() as session:
|
|
q = self._base_query(session, tenant_id)
|
|
if status:
|
|
q = q.filter(ChatSession.status == status)
|
|
if search:
|
|
from sqlalchemy import or_
|
|
q = q.filter(or_(
|
|
ChatSession.title.contains(search),
|
|
ChatSession.session_id.contains(search)
|
|
))
|
|
q = q.order_by(desc(ChatSession.updated_at))
|
|
total = q.count()
|
|
items = q.offset((page - 1) * per_page).limit(per_page).all()
|
|
return {
|
|
'sessions': [self._to_dict(s) for s in items],
|
|
'page': page, 'per_page': per_page,
|
|
'total': total, 'total_pages': (total + per_page - 1) // per_page
|
|
}
|
|
|
|
|
|
class ConversationRepository(BaseRepository):
|
|
model_class = Conversation
|
|
|
|
def get_by_session_id(self, session_id: str, tenant_id=None):
|
|
with db_manager.get_session() as session:
|
|
q = self._base_query(session, tenant_id).filter(Conversation.session_id == session_id)
|
|
items = q.order_by(Conversation.timestamp).all()
|
|
return [self._to_dict(c) for c in items]
|
|
|
|
|
|
chat_session_repo = ChatSessionRepository()
|
|
conversation_repo = ConversationRepository()
|