Fix common statement reconciliation and analyzer filenames

This commit is contained in:
A R R R Associates
2026-07-20 23:43:13 +05:30
parent 0e931411d6
commit 321f49db52
3 changed files with 93 additions and 122 deletions
+18 -9
View File
@@ -60,6 +60,24 @@ def _segment(value: object, default: str = "NA") -> str:
return text_value[:80] or default
def _workbook_filename(metas: list) -> str:
"""Build a safe BankName_ClientName.xlsx filename for every bank."""
bank_names = [str(getattr(meta, "bank_name", "") or "").strip() for meta in metas]
client_names = [str(getattr(meta, "customer_name", "") or "").strip() for meta in metas]
account_numbers = [str(getattr(meta, "account_number", "") or "").strip() for meta in metas]
unique_banks = list(dict.fromkeys(name for name in bank_names if name))
unique_clients = list(dict.fromkeys(name for name in client_names if name))
unique_accounts = list(dict.fromkeys(name for name in account_numbers if name))
bank = unique_banks[0] if len(unique_banks) == 1 else ("Multiple_Banks" if unique_banks else "Bank")
client = unique_clients[0] if len(unique_clients) == 1 else ""
if not client:
client = unique_accounts[0] if len(unique_accounts) == 1 else "Multiple_Statements"
return f"{_segment(bank, 'Bank')}_{_segment(client, 'Client')}.xlsx"
def role_bucket(roles: Iterable[str]) -> str | None:
role_set = set(roles)
for role, bucket in (("Partner", "Partner"), ("Manager", "Manager"), ("Branch Manager", "Manager"), ("Staff", "Staff"), ("Employee", "Staff"), ("Consultant", "Consultant")):
@@ -210,15 +228,6 @@ def _claim_jobs() -> list[str]:
db.close()
def _workbook_filename(metas) -> str:
"""Return BankName_ClientName.xlsx using filesystem-safe segments."""
banks = sorted({_segment(getattr(meta, "bank_name", ""), "Bank") for meta in metas if str(getattr(meta, "bank_name", "") or "").strip()})
customers = sorted({_segment(getattr(meta, "customer_name", ""), "Client") for meta in metas if str(getattr(meta, "customer_name", "") or "").strip()})
bank_label = banks[0] if len(banks) == 1 else ("Multi_Bank" if banks else "Bank")
client_label = customers[0] if len(customers) == 1 else ("Multiple_Clients" if customers else "Client")
return f"{bank_label}_{client_label}.xlsx"
def _process_job(job_id: str) -> None:
db = CommonSessionLocal()
try: