From 1752a6cf1072164dec93948f9684ffac7358822f Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Mon, 6 Jul 2026 13:27:59 +0000 Subject: [PATCH] =?UTF-8?q?Contact=20carries=20the=20best-priority=20mobil?= =?UTF-8?q?e=20and=20landline=20Abri=20lists=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- infrastructure/abri/abri_client.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/infrastructure/abri/abri_client.py b/infrastructure/abri/abri_client.py index 16f74e17b..3d5a7f537 100644 --- a/infrastructure/abri/abri_client.py +++ b/infrastructure/abri/abri_client.py @@ -30,12 +30,18 @@ def _format_appointment_date(appointment_date: date) -> str: return appointment_date.strftime("%d/%m/%Y") +def _phone_priority(entry: ET.Element) -> Tuple[int, int]: + """Sort key: lowest numeric priority first; unusable priorities last.""" + try: + return (0, int((entry.get("priority") or "").strip())) + except ValueError: + return (1, 0) + + def _select_phone_number(entries: List[ET.Element]) -> Optional[str]: - for entry in entries: - number = (entry.text or "").strip() - if number: - return number - return None + usable = [entry for entry in entries if (entry.text or "").strip()] + ranked = sorted(usable, key=_phone_priority) # stable: ties keep document order + return (ranked[0].text or "").strip() if ranked else None class AbriClient: