atlasbot: fix tag detection for workload queries

This commit is contained in:
Brad Stein 2026-01-28 03:20:28 -03:00
parent be82109d4e
commit 8316e5dd15

View File

@ -3154,35 +3154,37 @@ def _open_ended_interpret(
def _preferred_tags_for_prompt(prompt: str) -> set[str]: def _preferred_tags_for_prompt(prompt: str) -> set[str]:
q = normalize_query(prompt) q = normalize_query(prompt)
tokens = set(_tokens(prompt))
tags: set[str] = set() tags: set[str] = set()
if any(word in q for word in ("cpu", "ram", "memory", "net", "network", "io", "disk", "hottest", "busy", "usage", "utilization", "load")): if tokens & {"cpu", "ram", "memory", "net", "network", "io", "disk", "hottest", "busy", "usage", "utilization", "load"}:
tags.add("utilization") tags.add("utilization")
if any(word in q for word in ("postgres", "database", "db", "connections")): if tokens & {"postgres", "database", "db", "connections"}:
tags.add("database") tags.add("database")
if any(word in q for word in ("pod", "pods", "deployment", "job", "cronjob")): if tokens & {"pod", "pods", "deployment", "job", "cronjob"}:
tags.add("pods") tags.add("pods")
if any(word in q for word in ("workload", "service", "namespace")): if tokens & {"workload", "service", "namespace"}:
tags.add("workloads") tags.add("workloads")
if any(word in q for word in ("ready", "not ready", "down", "unreachable", "availability")): if tokens & {"ready", "down", "unreachable", "availability"} or "not ready" in q:
tags.add("availability") tags.add("availability")
if any(word in q for word in ("node", "nodes", "hardware", "arch", "architecture", "rpi", "jetson", "amd64", "arm64", "worker", "control-plane")): if tokens & {"node", "nodes", "hardware", "arch", "architecture", "rpi", "jetson", "amd64", "arm64", "worker", "control-plane"}:
tags.update({"hardware", "inventory", "architecture"}) tags.update({"hardware", "inventory", "architecture"})
return tags & _ALLOWED_INSIGHT_TAGS return tags & _ALLOWED_INSIGHT_TAGS
def _primary_tags_for_prompt(prompt: str) -> set[str]: def _primary_tags_for_prompt(prompt: str) -> set[str]:
q = normalize_query(prompt) q = normalize_query(prompt)
if any(word in q for word in ("cpu", "ram", "memory", "net", "network", "io", "disk", "hottest", "busy", "usage", "utilization", "load")): tokens = set(_tokens(prompt))
if tokens & {"cpu", "ram", "memory", "net", "network", "io", "disk", "hottest", "busy", "usage", "utilization", "load"}:
return {"utilization"} return {"utilization"}
if any(word in q for word in ("postgres", "database", "db", "connections")): if tokens & {"postgres", "database", "db", "connections"}:
return {"database"} return {"database"}
if any(word in q for word in ("pod", "pods", "deployment", "job", "cronjob")): if tokens & {"pod", "pods", "deployment", "job", "cronjob"}:
return {"pods"} return {"pods"}
if any(word in q for word in ("workload", "service", "namespace")): if tokens & {"workload", "service", "namespace"}:
return {"workloads"} return {"workloads"}
if any(word in q for word in ("ready", "not ready", "down", "unreachable", "availability")): if tokens & {"ready", "down", "unreachable", "availability"} or "not ready" in q:
return {"availability"} return {"availability"}
if any(word in q for word in ("node", "nodes", "hardware", "arch", "architecture", "rpi", "jetson", "amd64", "arm64", "worker", "control-plane")): if tokens & {"node", "nodes", "hardware", "arch", "architecture", "rpi", "jetson", "amd64", "arm64", "worker", "control-plane"}:
return {"hardware", "inventory", "architecture"} return {"hardware", "inventory", "architecture"}
return set() return set()
@ -3202,9 +3204,10 @@ def _tags_from_text(text: str) -> set[str]:
q = normalize_query(text) q = normalize_query(text)
if not q: if not q:
return set() return set()
tokens = set(_tokens(text))
tags: set[str] = set() tags: set[str] = set()
for tag, keywords in _TAG_KEYWORDS.items(): for tag, keywords in _TAG_KEYWORDS.items():
if any(word in q for word in keywords): if any(word in tokens for word in keywords):
tags.add(tag) tags.add(tag)
return tags & _ALLOWED_INSIGHT_TAGS return tags & _ALLOWED_INSIGHT_TAGS