feat(alerts): 飞书通知支持 Web 界面配置(数据库存储+热更新)
1. 新增 notification_config 模型,飞书配置存数据库(单行id=1) 2. feishu_service 改为从数据库读配置,支持热更新,Web保存即生效 3. alerts.py 新增接口: - GET /alerts/notify/feishu/config 读配置(secret只返回是否已设) - PUT /alerts/notify/feishu/config 保存配置+热更新 (status/test 同步改为走数据库配置) 4. 前端告警中心增加「飞书通知设置」弹窗: - 开关/Webhook/签名密钥/最低级别/类型白名单 - 保存配置、发送测试按钮 5. alert_service.create_alert 推送时按数据库配置判断 配置无需改文件/重启,前端界面直接保存即生效。
This commit is contained in:
@@ -13,15 +13,9 @@ from app.models.network import Network, IPAddress
|
||||
from app.models.snmp import NetworkDevice, ARPEntry
|
||||
|
||||
# 飞书告警通知(延迟导入避免循环依赖)
|
||||
_feishu_service = None
|
||||
|
||||
|
||||
def _get_feishu_service():
|
||||
global _feishu_service
|
||||
if _feishu_service is None:
|
||||
from app.services.feishu_service import get_feishu_service
|
||||
_feishu_service = get_feishu_service()
|
||||
return _feishu_service
|
||||
def _get_feishu_service(db=None):
|
||||
from app.services.feishu_service import get_feishu_service
|
||||
return get_feishu_service(db)
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -85,7 +79,7 @@ class AlertService:
|
||||
|
||||
# 飞书告警通知(仅新创建的告警推送;existing 去重返回的不会走到这里,避免刷屏)
|
||||
try:
|
||||
_get_feishu_service().send_alert({
|
||||
_get_feishu_service(db).send_alert({
|
||||
"alert_type": alert_type.value if hasattr(alert_type, "value") else str(alert_type),
|
||||
"severity": severity.value if hasattr(severity, "value") else str(severity),
|
||||
"title": title,
|
||||
|
||||
Reference in New Issue
Block a user