import sys
import csv
import json
from collections import Counter

csv.field_size_limit(sys.maxsize)

filepath = r".\reporte_comprador_autorizador_2026_05_01_al_2026_06_09.csv"

with open(filepath, 'r', encoding='latin-1') as f:
    reader = csv.DictReader(f)
    headers = reader.fieldnames
    
    print("=== COLUMNAS ===")
    for i, h in enumerate(headers, 1):
        print(f"  {i}. {h}")
    
    rows = list(reader)
    print(f"\nTotal filas: {len(rows)}")
    
    # Count unique values for key fields
    fields_to_analyze = [
        'Estatus Requisición', 'Estatus Almacén', 'Estatus Cotización', 
        'Estatus Orden de Compra', 'Subsidiaria', 'Moneda'
    ]
    
    for field in fields_to_analyze:
        if field in headers:
            counter = Counter(row.get(field, '').strip() for row in rows)
            print(f"\n=== {field} ===")
            for val, cnt in counter.most_common(20):
                print(f"  {val}: {cnt}")
    
    # Compradores
    print("\n=== COMPRADORES (top 15) ===")
    counter = Counter(row.get('Comprador', '').strip() for row in rows)
    for val, cnt in counter.most_common(15):
        print(f"  {val}: {cnt}")
    
    # Familias
    print("\n=== FAMILIAS (top 15) ===")
    counter = Counter(row.get('Familia', '').strip() for row in rows)
    for val, cnt in counter.most_common(15):
        print(f"  {val}: {cnt}")
    
    # Proveedores
    print("\n=== PROVEEDORES (top 15) ===")
    counter = Counter(row.get('Proveedor', '').strip() for row in rows)
    for val, cnt in counter.most_common(15):
        print(f"  {val}: {cnt}")
    
    # Sample date ranges
    print("\n=== RANGO DE FECHAS ===")
    dates = [row.get('Fecha de Creación', '').strip() for row in rows if row.get('Fecha de Creación', '').strip()]
    dates_sorted = sorted(dates)
    if dates_sorted:
        print(f"  Fecha min: {dates_sorted[0]}")
        print(f"  Fecha max: {dates_sorted[-1]}")
    
    # Recepcion dates
    recep = [row.get('Fecha Recepción', '').strip() for row in rows if row.get('Fecha Recepción', '').strip()]
    print(f"  Registros CON fecha de recepcion: {len(recep)}")
    print(f"  Registros SIN fecha de recepcion: {len(rows) - len(recep)}")
    
    # Autorizador OC
    print("\n=== AUTORIZADORES OC (top 10) ===")
    counter = Counter(row.get('Autorizador OC', '').strip() for row in rows)
    for val, cnt in counter.most_common(10):
        print(f"  {val}: {cnt}")
    
    # Areas de consumo
    print("\n=== AREAS DE CONSUMO (top 10) ===")
    counter = Counter(row.get('Area de Consumo', '').strip() for row in rows)
    for val, cnt in counter.most_common(10):
        print(f"  {val}: {cnt}")
    
    # Sample a few rows to understand data
    print("\n=== MUESTRA DE DATOS (primera fila completa) ===")
    if rows:
        for k, v in rows[0].items():
            print(f"  {k}: {v}")
