diff --git a/backend/app/services/congress_api.py b/backend/app/services/congress_api.py index b4a49ce..3ea0fb7 100644 --- a/backend/app/services/congress_api.py +++ b/backend/app/services/congress_api.py @@ -165,8 +165,19 @@ def _normalize_state(state: str | None) -> str | None: def parse_member_from_api(data: dict) -> dict: """Normalize raw API member list data into our model fields.""" - terms = data.get("terms", {}).get("item", []) + terms_raw = data.get("terms", {}) + if isinstance(terms_raw, list): + terms = terms_raw + elif isinstance(terms_raw, dict): + terms = terms_raw.get("item", []) + else: + terms = [] current_term = terms[-1] if terms else {} + chamber = current_term.get("chamber") + # Fallback: infer House from presence of a numeric district + if not chamber and data.get("district"): + chamber = "House of Representatives" + district = data.get("district") return { "bioguide_id": data.get("bioguideId"), "name": data.get("name", ""), @@ -174,8 +185,8 @@ def parse_member_from_api(data: dict) -> dict: "last_name": data.get("lastName"), "party": data.get("partyName") or None, "state": _normalize_state(data.get("state")), - "chamber": current_term.get("chamber"), - "district": str(data.get("district")) if data.get("district") else None, + "chamber": chamber, + "district": str(int(district)) if district is not None else None, "photo_url": data.get("depiction", {}).get("imageUrl"), "official_url": data.get("officialWebsiteUrl"), }