告警详情页 graph_panel 为空时接口报错
0x01 关键信息
a. 现象
- 告警详情接口
/fta/alert/v2/alert/detail/返回业务失败。 - 栈信息落在
AlertDetailResource.clean_graph_panel_where(),异常为AttributeError: 'NoneType' object has no attribute 'get'。
b. 根因
AIOPSManager.get_graph_panel(alert)对“本身无图表”的告警可以合法返回None。AlertDetailResource.perform_request()未对graph_panel判空, 仍直接调用clean_graph_panel_where(graph_panel), 最终在graph_panel.get("targets", [])处报错。
0x02 解决方案
- 在
packages/fta_web/alert/resources.py中为clean_graph_panel_where()增加空值兜底。 - 保持
graph_panel=None的原有语义不变,只修复详情接口不应因此崩溃的问题。
0x03 说明
- 本次触发样例是
gse_process_event告警,panel=None属于预期行为,不是本次需要修复的问题本身。