fix: 数据分析模块修复 添加 API 端点 + 租户维度
1. 新增 GET /api/analytics 端点(之前不存在,前端一直请求 404) 2. query_optimizer.get_analytics_optimized 支持 tenant_id 参数 3. 工单/预警/对话查询按 tenant_id 过滤 4. 数据分析控制面板新增租户筛选下拉框 5. updateCharts 传递 tenant_id 参数 6. populateTenantSelectors 填充分析页租户筛选器
This commit is contained in:
@@ -236,25 +236,31 @@ class QueryOptimizer:
|
||||
logger.error(f"批量更新工单失败: {e}")
|
||||
return False
|
||||
|
||||
def get_analytics_optimized(self, days: int = 30) -> Dict[str, Any]:
|
||||
"""优化版分析数据查询"""
|
||||
def get_analytics_optimized(self, days: int = 30, tenant_id: str = None) -> Dict[str, Any]:
|
||||
"""优化版分析数据查询(支持按租户筛选)"""
|
||||
start_time = time.time()
|
||||
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
end_time = datetime.now()
|
||||
start_time_query = end_time - timedelta(days=days-1)
|
||||
# 查询工单
|
||||
wo_query = session.query(WorkOrder)
|
||||
if tenant_id:
|
||||
wo_query = wo_query.filter(WorkOrder.tenant_id == tenant_id)
|
||||
workorders = wo_query.all()
|
||||
|
||||
# 批量查询所有需要的数据
|
||||
# 修改:查询所有工单,不限制时间范围
|
||||
workorders = session.query(WorkOrder).all()
|
||||
# 查询预警
|
||||
alert_query = session.query(Alert)
|
||||
if tenant_id:
|
||||
alert_query = alert_query.filter(Alert.tenant_id == tenant_id)
|
||||
alerts = alert_query.all()
|
||||
|
||||
# 修改:查询所有预警和对话,不限制时间范围
|
||||
alerts = session.query(Alert).all()
|
||||
|
||||
conversations = session.query(Conversation).all()
|
||||
# 查询对话
|
||||
conv_query = session.query(Conversation)
|
||||
if tenant_id:
|
||||
conv_query = conv_query.filter(Conversation.tenant_id == tenant_id)
|
||||
conversations = conv_query.all()
|
||||
|
||||
# 处理数据
|
||||
analytics = self._process_analytics_data(workorders, alerts, conversations, days)
|
||||
|
||||
Reference in New Issue
Block a user