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:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user