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"),