"""Print UNCATEGORIZED + low-confidence rows for human review.

Usage:
  python cecl_qfactor_review.py --shortqtr=1q26
  python cecl_qfactor_review.py --shortqtr=1q26 --min-confidence=0.7
"""
from __future__ import annotations
import argparse

from cecl_db import connect


def main() -> None:
    ap = argparse.ArgumentParser()
    ap.add_argument("--shortqtr", required=True)
    ap.add_argument("--min-confidence", type=float, default=0.6)
    args = ap.parse_args()

    conn = connect()
    cur = conn.cursor(dictionary=True)

    print("=== UNCATEGORIZED ===")
    cur.execute(
        """SELECT t.description, t.amount, t.shortname
           FROM cecl_qfactor_categorized qc
           JOIN cecl_benchmark_customfactor_text t ON t.id = qc.customfactor_text_id
           WHERE t.shortqtr = %s AND qc.is_uncategorized = 1
           ORDER BY t.description""",
        (args.shortqtr,),
    )
    for row in cur:
        print(f"  [{row['amount']}] {row['description']}")

    print(f"\n=== LOW CONFIDENCE (< {args.min_confidence}) ===")
    cur.execute(
        """SELECT t.description, qc.confidence, c.name AS assigned_cluster
           FROM cecl_qfactor_categorized qc
           JOIN cecl_benchmark_customfactor_text t ON t.id = qc.customfactor_text_id
           LEFT JOIN cecl_qfactor_categories c ON c.id = qc.category_id
           WHERE t.shortqtr = %s AND qc.is_uncategorized = 0
                 AND qc.confidence < %s
           ORDER BY qc.confidence""",
        (args.shortqtr, args.min_confidence),
    )
    for row in cur:
        print(f"  [{row['confidence']:.2f}] -> {row['assigned_cluster']} | {row['description']}")

    cur.close()
    conn.close()


if __name__ == "__main__":
    main()
