diff --git a/atlasbot/engine/answerer.py b/atlasbot/engine/answerer.py index 0fc7917..1dde320 100644 --- a/atlasbot/engine/answerer.py +++ b/atlasbot/engine/answerer.py @@ -715,6 +715,27 @@ class AnswerEngine: ) if node_line: reply = f"Hotspot node: {hotspot_node}. {node_line}." + if "postgres" in lowered_q and any(tok in lowered_q for tok in ("connection", "connections", "db")): + pg = None + if isinstance(snapshot_used, dict): + summary = snapshot_used.get("summary") if isinstance(snapshot_used.get("summary"), dict) else {} + if summary: + top = summary.get("top") if isinstance(summary.get("top"), dict) else {} + pg = top.get("postgres") if isinstance(top.get("postgres"), dict) else None + if not pg: + metrics = snapshot_used.get("metrics") if isinstance(snapshot_used.get("metrics"), dict) else {} + pg = metrics.get("postgres_connections") if isinstance(metrics.get("postgres_connections"), dict) else None + if isinstance(pg, dict): + used = pg.get("used") + max_conn = pg.get("max") + hottest = pg.get("hottest_db") or pg.get("hottest") + if used is not None and max_conn is not None: + if hottest: + reply = f"Postgres connections: used={used}, max={max_conn}; hottest_db={hottest}." + else: + reply = f"Postgres connections: used={used}, max={max_conn}." + else: + reply = "Postgres connection data is not fully available in the snapshot." if classify.get("question_type") in {"metric", "diagnostic"}: lowered_q = f"{question} {normalized}".lower()