fix(15): correct SQL column names in trend detector and alert evaluator
- Replace `collected_at` with `time` (actual hypertable column) in 5 queries - Remove non-existent `rule_type` column from site_alert_events INSERTs - Fix trend dedup query to use `rule_id IS NULL` instead of `rule_type` Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -72,7 +72,7 @@ async def _evaluate_condition(session, rule) -> bool: # noqa: ANN001
|
||||
FROM wireless_registrations wr
|
||||
JOIN devices d ON d.id = wr.device_id
|
||||
WHERE d.sector_id = :sector_id
|
||||
AND wr.collected_at > now() - interval '10 minutes'
|
||||
AND wr.time > now() - interval '10 minutes'
|
||||
"""),
|
||||
{"sector_id": sector_id},
|
||||
)
|
||||
@@ -93,7 +93,7 @@ async def _evaluate_condition(session, rule) -> bool: # noqa: ANN001
|
||||
FROM wireless_registrations wr
|
||||
JOIN devices d ON d.id = wr.device_id
|
||||
WHERE d.sector_id = :sector_id
|
||||
AND wr.collected_at > now() - interval '10 minutes'
|
||||
AND wr.time > now() - interval '10 minutes'
|
||||
"""),
|
||||
{"sector_id": sector_id},
|
||||
)
|
||||
@@ -106,7 +106,7 @@ async def _evaluate_condition(session, rule) -> bool: # noqa: ANN001
|
||||
FROM wireless_registrations wr
|
||||
JOIN devices d ON d.id = wr.device_id
|
||||
WHERE d.sector_id = :sector_id
|
||||
AND wr.collected_at BETWEEN now() - interval '70 minutes'
|
||||
AND wr.time BETWEEN now() - interval '70 minutes'
|
||||
AND now() - interval '60 minutes'
|
||||
"""),
|
||||
{"sector_id": sector_id},
|
||||
@@ -178,10 +178,10 @@ async def _evaluate_rules() -> None:
|
||||
await session.execute(
|
||||
text("""
|
||||
INSERT INTO site_alert_events
|
||||
(tenant_id, site_id, sector_id, rule_id, rule_type,
|
||||
(tenant_id, site_id, sector_id, rule_id,
|
||||
severity, message, state, consecutive_hits, triggered_at)
|
||||
VALUES
|
||||
(:tenant_id, :site_id, :sector_id, :rule_id, :rule_type,
|
||||
(:tenant_id, :site_id, :sector_id, :rule_id,
|
||||
:severity, :message, 'active', 1, now())
|
||||
"""),
|
||||
{
|
||||
@@ -189,7 +189,6 @@ async def _evaluate_rules() -> None:
|
||||
"site_id": str(rule.site_id),
|
||||
"sector_id": str(rule.sector_id) if rule.sector_id else None,
|
||||
"rule_id": rule_id,
|
||||
"rule_type": rule.rule_type,
|
||||
"severity": severity,
|
||||
"message": f"Alert rule '{rule.name}' condition met",
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@ async def _detect_trends() -> None:
|
||||
FROM wireless_registrations
|
||||
WHERE mac_address = :mac
|
||||
AND device_id = :ap_device_id
|
||||
AND collected_at > now() - interval '7 days'
|
||||
AND time > now() - interval '7 days'
|
||||
"""),
|
||||
{"mac": mac, "ap_device_id": str(ap_device_id)},
|
||||
)
|
||||
@@ -67,7 +67,7 @@ async def _detect_trends() -> None:
|
||||
FROM wireless_registrations
|
||||
WHERE mac_address = :mac
|
||||
AND device_id = :ap_device_id
|
||||
AND collected_at > now() - interval '14 days'
|
||||
AND time > now() - interval '14 days'
|
||||
"""),
|
||||
{"mac": mac, "ap_device_id": str(ap_device_id)},
|
||||
)
|
||||
@@ -88,7 +88,7 @@ async def _detect_trends() -> None:
|
||||
text("""
|
||||
SELECT id FROM site_alert_events
|
||||
WHERE link_id = :link_id
|
||||
AND rule_type = 'signal_degradation'
|
||||
AND rule_id IS NULL
|
||||
AND state = 'active'
|
||||
LIMIT 1
|
||||
"""),
|
||||
@@ -105,10 +105,10 @@ async def _detect_trends() -> None:
|
||||
await session.execute(
|
||||
text("""
|
||||
INSERT INTO site_alert_events
|
||||
(tenant_id, site_id, link_id, rule_type, severity, message, state,
|
||||
(tenant_id, site_id, link_id, severity, message, state,
|
||||
consecutive_hits, triggered_at)
|
||||
VALUES
|
||||
(:tenant_id, :site_id, :link_id, 'signal_degradation', 'warning',
|
||||
(:tenant_id, :site_id, :link_id, 'warning',
|
||||
:message, 'active', 1, now())
|
||||
"""),
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user