# -*- coding: utf-8 -*- """ 对话管理蓝图 处理对话相关的API路由 """ from flask import Blueprint, request, jsonify from src.core.database import db_manager from src.core.models import Conversation from src.core.query_optimizer import query_optimizer conversations_bp = Blueprint('conversations', __name__, url_prefix='/api/conversations') @conversations_bp.route('') def get_conversations(): """获取对话历史列表(分页)- 优化版""" try: page = request.args.get('page', 1, type=int) per_page = request.args.get('per_page', 10, type=int) search = request.args.get('search', '') user_id = request.args.get('user_id', '') date_filter = request.args.get('date_filter', '') # 使用优化后的查询 result = query_optimizer.get_conversations_paginated( page=page, per_page=per_page, search=search, user_id=user_id, date_filter=date_filter ) return jsonify(result) except Exception as e: return jsonify({"error": str(e)}), 500 @conversations_bp.route('/') def get_conversation_detail(conversation_id): """获取对话详情""" try: with db_manager.get_session() as session: conv = session.query(Conversation).filter(Conversation.id == conversation_id).first() if not conv: return jsonify({"error": "对话不存在"}), 404 return jsonify({ 'success': True, 'id': conv.id, 'user_id': conv.user_id, 'user_message': conv.user_message, 'assistant_response': conv.assistant_response, 'timestamp': conv.timestamp.isoformat() if conv.timestamp else None, 'response_time': conv.response_time, 'work_order_id': conv.work_order_id }) except Exception as e: return jsonify({"error": str(e)}), 500 @conversations_bp.route('/', methods=['DELETE']) def delete_conversation(conversation_id): """删除对话记录""" try: with db_manager.get_session() as session: conv = session.query(Conversation).filter(Conversation.id == conversation_id).first() if not conv: return jsonify({"error": "对话不存在"}), 404 session.delete(conv) session.commit() # 清除对话历史相关缓存 from src.core.cache_manager import cache_manager cache_manager.clear() # 清除所有缓存 return jsonify({"success": True, "message": "对话记录已删除"}) except Exception as e: return jsonify({"error": str(e)}), 500 @conversations_bp.route('/clear', methods=['DELETE']) def clear_all_conversations(): """清空所有对话历史""" try: with db_manager.get_session() as session: session.query(Conversation).delete() session.commit() # 清除对话历史相关缓存 from src.core.cache_manager import cache_manager cache_manager.clear() # 清除所有缓存 return jsonify({"success": True, "message": "对话历史已清空"}) except Exception as e: return jsonify({"error": str(e)}), 500