fix(aiops): suppress repeated llm alert loops
This commit is contained in:
42
apps/api/tests/test_openclaw_cache_key.py
Normal file
42
apps/api/tests/test_openclaw_cache_key.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from src.services.openclaw import OpenClawService, _build_alert_cache_context_hash
|
||||
|
||||
|
||||
def test_openclaw_cache_key_uses_stable_alert_scope_when_context_hash_exists():
|
||||
service = object.__new__(OpenClawService)
|
||||
context_hash = "HostBackupFailed:backup_failure:awoooi-prod:awoooi-frequent:critical:fp-1"
|
||||
prompt_a = "System prompt and instructions\n\n## Alert Data:\ncurrent_value=1"
|
||||
prompt_b = "System prompt and instructions\n\n## Alert Data:\ncurrent_value=2"
|
||||
|
||||
assert service._generate_cache_key(prompt_a, context_hash) == service._generate_cache_key(
|
||||
prompt_b,
|
||||
context_hash,
|
||||
)
|
||||
|
||||
|
||||
def test_openclaw_cache_key_keeps_full_prompt_specificity_without_context_hash():
|
||||
service = object.__new__(OpenClawService)
|
||||
prompt_a = "System prompt and instructions\n\n## Alert Data:\ncurrent_value=1"
|
||||
prompt_b = "System prompt and instructions\n\n## Alert Data:\ncurrent_value=2"
|
||||
|
||||
assert service._generate_cache_key(prompt_a) != service._generate_cache_key(prompt_b)
|
||||
|
||||
|
||||
def test_openclaw_alert_cache_context_hash_ignores_dynamic_annotations():
|
||||
base_context = {
|
||||
"alertname": "HostBackupFailed",
|
||||
"alert_category": "backup_failure",
|
||||
"namespace": "awoooi-prod",
|
||||
"target_resource": "awoooi-frequent",
|
||||
"severity": "critical",
|
||||
"fingerprint": "fp-1",
|
||||
"annotations": {"description": "failed at 14:00"},
|
||||
}
|
||||
next_context = {
|
||||
**base_context,
|
||||
"annotations": {"description": "failed at 14:01"},
|
||||
"message": "new volatile message",
|
||||
}
|
||||
|
||||
assert _build_alert_cache_context_hash(base_context) == _build_alert_cache_context_hash(
|
||||
next_context
|
||||
)
|
||||
Reference in New Issue
Block a user