#!/usr/bin/env python3
"""GHL Conversation AI setup via Playwright"""
import os, sys, time, json
from datetime import datetime
from pathlib import Path

os.environ['LD_LIBRARY_PATH'] = '/mnt/e/genesis-system/.venvs/playwright-libs/'

GHL_EMAIL = os.getenv('GHL_EMAIL', 'kinan@agileadpt.com')
GHL_PASSWORD = os.getenv('GHL_PASSWORD', 'SystemBird505*')
LOCATION_ID = os.getenv('LOCATION_ID', 'SWdaQpAVAtRigYcMfder')
REPORT_DIR = Path(f'/mnt/e/genesis-system/reports/ghl_conv_ai_{datetime.now().strftime("%Y%m%d_%H%M%S")}')
REPORT_DIR.mkdir(parents=True, exist_ok=True)

def run():
    from playwright.sync_api import sync_playwright
    results = []
    
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False, args=['--no-sandbox','--disable-gpu'])
        context = browser.new_context(viewport={'width':1920,'height':1080})
        page = context.new_page()
        
        try:
            results.append("Starting GHL Conversation AI setup...")
            page.goto('https://app.gohighlevel.com/', timeout=30000)
            page.wait_for_load_state('load', timeout=20000)
            page.screenshot(path=str(REPORT_DIR/'01_login_page.png'), full_page=True)
            results.append(f"Loaded login: {page.url}")
            
            # Debug: print all inputs
            inputs = page.query_selector_all('input')
            results.append(f"Found {len(inputs)} input fields")
            
            # Try multiple selectors
            email_input = page.query_selector('input[name="email"]') or \
                         page.query_selector('input[placeholder*="email"]') or \
                         page.query_selector('input[type="email"]')
            
            if email_input:
                email_input.fill(GHL_EMAIL)
                results.append(f"Filled email: {GHL_EMAIL}")
            else:
                results.append("ERROR: Could not find email input")
                page.screenshot(path=str(REPORT_DIR/'01_debug_inputs.png'), full_page=True)
                return results
            
            # Password field
            pwd_input = page.query_selector('input[name="password"]') or \
                       page.query_selector('input[type="password"]')
            
            if pwd_input:
                pwd_input.fill(GHL_PASSWORD)
                results.append("Filled password")
            else:
                results.append("ERROR: Could not find password input")
                return results
            
            # Submit button
            submit = page.query_selector('button[type="submit"]') or \
                    page.query_selector('button:has-text("Sign in")') or \
                    page.query_selector('button:has-text("Login")')
            
            if submit:
                submit.click()
                results.append("Clicked submit button")
            else:
                results.append("ERROR: Could not find submit button")
                return results
            
            page.wait_for_load_state('networkidle', timeout=25000)
            page.screenshot(path=str(REPORT_DIR/'02_after_login.png'), full_page=True)
            results.append(f"After login: {page.url}")
            
            # Navigate to Conversation AI
            conv_ai_url = f'https://app.gohighlevel.com/location/{LOCATION_ID}/conversations/ai'
            page.goto(conv_ai_url, timeout=30000)
            page.wait_for_load_state('load', timeout=15000)
            page.screenshot(path=str(REPORT_DIR/'03_conv_ai.png'), full_page=True)
            results.append(f"Conversation AI page: {page.url}")
            
            page.wait_for_timeout(2000)
            html = page.content()
            results.append(f"Page size: {len(html)} bytes")
            results.append(f"Has 'bot': {'bot' in html.lower()}")
            results.append(f"Has 'ai': {'ai' in html.lower()}")
            
        except Exception as e:
            import traceback
            results.append(f"ERROR: {str(e)}")
            results.append(traceback.format_exc())
            try:
                page.screenshot(path=str(REPORT_DIR/'error.png'), full_page=True)
            except:
                pass
        finally:
            browser.close()
    
    # Save report
    with open(REPORT_DIR/'report.json', 'w') as f:
        json.dump({'results': results, 'ts': datetime.now().isoformat()}, f, indent=2)
    
    for r in results:
        print(r)
    
    return results

if __name__ == '__main__':
    run()
