from datetime import date
from decimal import Decimal

AS_OF = date(2026, 11, 10)

def main(input):
    output = []
    for row in input:
        days = max(0, (AS_OF - date.fromisoformat(row["due_date"])).days)
        balance = Decimal(str(row["balance"]))
        bucket = "current" if days == 0 else "1-30" if days <= 30 else "31-60" if days <= 60 else "61-90" if days <= 90 else "90+"
        disputed = str(row["disputed"]).lower() == "true"
        action = "none" if balance <= 0 or days == 0 else "dispute_review" if disputed else "contact_customer"
        output.append(dict(row, days_overdue=days, aging_bucket=bucket, collection_action=action))
    return output
