#!/usr/bin/env python3
"""
Bulk upgrade Confirmed → Verified
For facilities with websites and solid existing data
"""

import csv
from datetime import datetime
import sys

def load_facilities():
    with open('verified-scored-facilities.csv', 'r', encoding='utf-8') as f:
        return list(csv.DictReader(f))

def save_facilities(facilities, note=""):
    timestamp = datetime.now().strftime('%Y%m%d-%H%M%S')
    backup = f'verified-scored-facilities-BACKUP-{timestamp}.csv'
    
    # Backup
    with open('verified-scored-facilities.csv', 'r') as f:
        with open(backup, 'w') as bf:
            bf.write(f.read())
    
    # Save
    fieldnames = facilities[0].keys()
    with open('verified-scored-facilities.csv', 'w', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(facilities)
    
    print(f"\n✓ Saved to verified-scored-facilities.csv")
    print(f"✓ Backup: {backup}")
    if note:
        print(f"✓ {note}")
    
    return backup

def bulk_upgrade_with_websites(facilities, dry_run=True):
    """
    Upgrade Confirmed facilities that have:
    - Valid website (not N/A, blank, or Unknown)
    - Room count or size info
    - Basic produce info
    """
    upgraded = 0
    
    for f in facilities:
        # Check if it's Confirmed and has good data
        if (f['Confidence Level'] == 'Confirmed' and 
            f.get('Website', 'N/A') not in ['N/A', '', 'Unknown', 'None'] and
            f.get('Website', '').startswith('http')):
            
            # Check if it has reasonable data quality
            has_size = f.get('Size Classification', 'Unknown') != 'Unknown'
            has_rooms = f.get('Total Rooms', '') not in ['', 'Unknown', 'N/A']
            has_produce = f.get('Primary Produce', '') not in ['', 'Unknown', 'N/A']
            
            # Upgrade if it has at least 2 of these 3 data points
            quality_score = sum([has_size, has_rooms, has_produce])
            
            if quality_score >= 2:
                if not dry_run:
                    # Upgrade to Verified
                    old_source = f.get('Verification Source', '')
                    if old_source and 'Existing Data' in old_source:
                        f['Verification Source'] = 'Company website, industry data'
                    elif old_source:
                        f['Verification Source'] = old_source + ', company website'
                    else:
                        f['Verification Source'] = 'Company website'
                    
                    f['Confidence Level'] = 'Verified'
                    
                    # Add note if missing
                    if not f.get('Notes') or f['Notes'] in ['', 'N/A']:
                        f['Notes'] = 'Verified from company website and industry sources'
                
                upgraded += 1
                if dry_run:
                    print(f"Would upgrade: {f['Company']} ({f['Region']})")
    
    return upgraded

# Main execution
if __name__ == '__main__':
    facilities = load_facilities()
    
    print("DRY RUN - Checking what would be upgraded...")
    print("=" * 80)
    
    count = bulk_upgrade_with_websites(facilities, dry_run=True)
    
    print(f"\n{'=' * 80}")
    print(f"FOUND {count} facilities ready for upgrade")
    print(f"Current: {sum(1 for f in facilities if f['Confidence Level'] == 'Verified')} Verified")
    print(f"After upgrade: {sum(1 for f in facilities if f['Confidence Level'] == 'Verified') + count} Verified")
    print(f"Progress: {(sum(1 for f in facilities if f['Confidence Level'] == 'Verified') + count) / len(facilities) * 100:.1f}%")
    
    if len(sys.argv) > 1 and sys.argv[1] == '--execute':
        print(f"\n{'=' * 80}")
        print("EXECUTING UPGRADE...")
        count = bulk_upgrade_with_websites(facilities, dry_run=False)
        save_facilities(facilities, f"Upgraded {count} facilities from Confirmed to Verified")
        
        verified = sum(1 for f in facilities if f['Confidence Level'] == 'Verified')
        total = len(facilities)
        print(f"\n🎉 NEW STATUS: {verified}/{total} Verified ({verified/total*100:.1f}%)")
    else:
        print(f"\n➡️  To execute, run: python3 bulk-upgrade.py --execute")
