mirror of
https://github.com/zvx-echo6/meshai.git
synced 2026-06-11 01:14:45 +02:00
feat(dispatcher): bypass cooldown for immediate-severity events
Events with severity=immediate skip the per-toggle cooldown check entirely — they are already rate-controlled by source handler change detection. Also set cooldown_seconds default to 0 (disabled). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
fa5a869401
commit
d305ce65d7
2 changed files with 7 additions and 2 deletions
|
|
@ -543,7 +543,7 @@ class NotificationToggle:
|
|||
severity_channels: dict = field(default_factory=dict)
|
||||
# v0.5.2: staleness drop + per-toggle cooldown (Matt's spam fix)
|
||||
freshness_seconds: int = 600 # drop events older than this at dispatcher entrance
|
||||
cooldown_seconds: int = 300 # per (toggle, category, region) throttle window
|
||||
cooldown_seconds: int = 0 # per (toggle, category, region) throttle window; 0 = disabled
|
||||
# per-channel delivery config (mirrors NotificationRuleConfig channel fields)
|
||||
broadcast_channel: Optional[int] = None
|
||||
node_ids: list = field(default_factory=list)
|
||||
|
|
|
|||
|
|
@ -358,7 +358,12 @@ class Dispatcher:
|
|||
return
|
||||
|
||||
# ---------- Section 2 — per-toggle cooldown ----------
|
||||
cooldown_s = int(getattr(tog, "cooldown_seconds", 300) or 0)
|
||||
# Immediate-severity events bypass cooldown entirely — they are
|
||||
# already rate-controlled by source handler change detection.
|
||||
if getattr(event, "severity", None) == "immediate":
|
||||
cooldown_s = 0
|
||||
else:
|
||||
cooldown_s = int(getattr(tog, "cooldown_seconds", 300) or 0)
|
||||
if cooldown_s > 0:
|
||||
suffix = (event.data or {}).get("_cooldown_suffix", "")
|
||||
region_key = event.region or "*"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue