fix(alerts): 修复检测IP冲突时 db.func 误用导致立即检测500

detect_ip_conflicts 误用 db.func.count/db.func.distinct,而 func 是
SQLAlchemy 模块属性而非 Session 方法,触发 AttributeError 使
/alerts/detect/run 返回500(前端弹'请求失败')。

改为 from sqlalchemy import func 后使用 func.count/func.distinct
This commit is contained in:
Your Name
2026-08-12 11:01:03 +08:00
parent 8775c9836d
commit 5369d8d6e5
+2 -1
View File
@@ -1,5 +1,6 @@
from typing import List, Dict, Any, Optional from typing import List, Dict, Any, Optional
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from sqlalchemy import func
from datetime import datetime, timedelta from datetime import datetime, timedelta
import logging import logging
import json import json
@@ -80,7 +81,7 @@ class AlertService:
subquery = db.query( subquery = db.query(
ARPEntry.ip_address ARPEntry.ip_address
).group_by(ARPEntry.ip_address).having( ).group_by(ARPEntry.ip_address).having(
db.func.count(db.func.distinct(ARPEntry.mac_address)) > 1 func.count(func.distinct(ARPEntry.mac_address)) > 1
).subquery() ).subquery()
conflict_entries = db.query(ARPEntry).filter( conflict_entries = db.query(ARPEntry).filter(