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:
2026-04-07 13:12:04 +08:00
parent 99619f851f
commit 3984cffe23
8 changed files with 71 additions and 46 deletions

View File

@@ -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)