From bf938067a1221df395e3b7aef927be0c7e1449c6 Mon Sep 17 00:00:00 2001 From: OpenSquared Date: Thu, 25 Jun 2026 21:55:43 +0200 Subject: [PATCH] fix: cat_name not defined in impact_service evaluate_event_impacts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _find_cat() returned only default_impacts, never the category name. Now returns (name, defaults) tuple; cat_name → matched_cat_name. Fixes: 'name cat_name is not defined' on AI evaluate. Co-Authored-By: Claude Sonnet 4.6 --- backend/services/impact_service.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/services/impact_service.py b/backend/services/impact_service.py index cd3d25b..d415fcb 100644 --- a/backend/services/impact_service.py +++ b/backend/services/impact_service.py @@ -127,16 +127,17 @@ def evaluate_event_impacts( all_cats = get_all_event_categories() def _find_cat(candidates): + """Returns (category_name, default_impacts) or (None, None).""" for c in candidates: if c is None: continue row = next((x for x in all_cats if x["name"].lower() == c.lower()), None) if row: try: - return json.loads(row.get("default_impacts") or "[]") + return row["name"], json.loads(row.get("default_impacts") or "[]") except Exception: pass - return None + return None, None sub = (event.get("sub_type") or "").strip() cat = (event.get("category") or "").strip() @@ -153,7 +154,7 @@ def evaluate_event_impacts( elif row.get("type") == cat and not sub: candidates.append(row["name"]) - category_defaults = _find_cat(candidates) + matched_cat_name, category_defaults = _find_cat(candidates) api_key = _get_api_key() if not api_key: @@ -190,7 +191,7 @@ def evaluate_event_impacts( "source_id": event_id, "source_name": event["name"], "source_date": event["start_date"], - "category_name": cat_name, + "category_name": matched_cat_name or sub or cat, "instrument_id": imp["instrument_id"], "impact_score": float(imp.get("impact_score", 0.5)), "direction": imp.get("direction", "neutral"),