#!/usr/bin/env python3
"""
Analyze Q4 2025 growth trajectory to establish baseline growth rates.
Calculates Sep→Oct→Nov growth rates and identifies acceleration patterns.
"""

import json
from pathlib import Path
from datetime import datetime

def analyze_q4_trajectory():
    """Analyze Q4 growth trajectory from conversion analysis data."""
    
    # Load conversion analysis data
    script_dir = Path(__file__).parent.absolute()
    data_file = script_dir.parent / "06-DATA-ANALYSIS" / "conversion_analysis.json"
    if not data_file.exists():
        print(f"Error: {data_file} not found. Run calculate_conversions.py first.")
        return None
    
    with open(data_file, 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    monthly = data.get('monthly', {})
    growth = data.get('growth', {})
    
    # Q4 months
    q4_months = {
        '2025-09': monthly.get('2025-09', {}),
        '2025-10': monthly.get('2025-10', {}),
        '2025-11': monthly.get('2025-11', {})
    }
    
    # Growth rates
    oct_growth = growth.get('2025-10', {})
    nov_growth = growth.get('2025-11', {})
    
    # Calculate Q4 averages
    q4_analysis = {
        'sessions': {
            'sep': q4_months['2025-09'].get('sessions', 0),
            'oct': q4_months['2025-10'].get('sessions', 0),
            'nov': q4_months['2025-11'].get('sessions', 0),
            'sep_to_oct_growth': oct_growth.get('sessions_growth', 0),
            'oct_to_nov_growth': nov_growth.get('sessions_growth', 0),
            'average_mom_growth': (oct_growth.get('sessions_growth', 0) + nov_growth.get('sessions_growth', 0)) / 2
        },
        'leads': {
            'sep': q4_months['2025-09'].get('leads', 0),
            'oct': q4_months['2025-10'].get('leads', 0),
            'nov': q4_months['2025-11'].get('leads', 0),
            'sep_to_oct_growth': oct_growth.get('leads_growth', 0),
            'oct_to_nov_growth': nov_growth.get('leads_growth', 0),
            'average_mom_growth': (oct_growth.get('leads_growth', 0) + nov_growth.get('leads_growth', 0)) / 2
        },
        'mqls': {
            'sep': q4_months['2025-09'].get('mqls', 0),
            'oct': q4_months['2025-10'].get('mqls', 0),
            'nov': q4_months['2025-11'].get('mqls', 0),
            'sep_to_oct_growth': oct_growth.get('mqls_growth', 0),
            'oct_to_nov_growth': nov_growth.get('mqls_growth', 0),
            'average_mom_growth': (oct_growth.get('mqls_growth', 0) + nov_growth.get('mqls_growth', 0)) / 2
        },
        'customers': {
            'sep': q4_months['2025-09'].get('customers', 0),
            'oct': q4_months['2025-10'].get('customers', 0),
            'nov': q4_months['2025-11'].get('customers', 0),
            'sep_to_oct_growth': oct_growth.get('customers_growth', 0),
            'oct_to_nov_growth': nov_growth.get('customers_growth', 0),
            'average_mom_growth': (oct_growth.get('customers_growth', 0) + nov_growth.get('customers_growth', 0)) / 2
        },
        'conversion_rates': {
            'sep': {
                'traffic_to_lead': q4_months['2025-09'].get('conversion_rates', {}).get('traffic_to_lead', 0),
                'lead_to_mql': q4_months['2025-09'].get('conversion_rates', {}).get('lead_to_mql', 0),
                'mql_to_customer': q4_months['2025-09'].get('conversion_rates', {}).get('mql_to_customer', 0)
            },
            'oct': {
                'traffic_to_lead': q4_months['2025-10'].get('conversion_rates', {}).get('traffic_to_lead', 0),
                'lead_to_mql': q4_months['2025-10'].get('conversion_rates', {}).get('lead_to_mql', 0),
                'mql_to_customer': q4_months['2025-10'].get('conversion_rates', {}).get('mql_to_customer', 0)
            },
            'nov': {
                'traffic_to_lead': q4_months['2025-11'].get('conversion_rates', {}).get('traffic_to_lead', 0),
                'lead_to_mql': q4_months['2025-11'].get('conversion_rates', {}).get('lead_to_mql', 0),
                'mql_to_customer': q4_months['2025-11'].get('conversion_rates', {}).get('mql_to_customer', 0)
            }
        }
    }
    
    # Key insights
    insights = {
        'sessions_acceleration': 'Accelerating' if nov_growth.get('sessions_growth', 0) > oct_growth.get('sessions_growth', 0) else 'Stable',
        'leads_acceleration': 'Explosive' if nov_growth.get('leads_growth', 0) > 50 else 'Strong',
        'conversion_improvement': q4_months['2025-11'].get('conversion_rates', {}).get('traffic_to_lead', 0) > q4_months['2025-09'].get('conversion_rates', {}).get('traffic_to_lead', 0),
        'momentum_sustained': nov_growth.get('sessions_growth', 0) > 10 and nov_growth.get('leads_growth', 0) > 50
    }
    
    result = {
        'q4_analysis': q4_analysis,
        'insights': insights,
        'baseline_growth_rates': {
            'sessions_mom': q4_analysis['sessions']['average_mom_growth'],
            'leads_mom': q4_analysis['leads']['average_mom_growth'],
            'mqls_mom': q4_analysis['mqls']['average_mom_growth'],
            'customers_mom': q4_analysis['customers']['average_mom_growth']
        }
    }
    
    # Save results
    script_dir = Path(__file__).parent.absolute()
    output_file = script_dir.parent / "06-DATA-ANALYSIS" / "q4_trajectory_analysis.json"
    with open(output_file, 'w', encoding='utf-8') as f:
        json.dump(result, f, indent=2, ensure_ascii=False)
    
    print("Q4 Growth Trajectory Analysis:")
    print(f"  Sessions MoM Growth: {q4_analysis['sessions']['average_mom_growth']:.2f}%")
    print(f"  Leads MoM Growth: {q4_analysis['leads']['average_mom_growth']:.2f}%")
    print(f"  MQLs MoM Growth: {q4_analysis['mqls']['average_mom_growth']:.2f}%")
    print(f"\nInsights:")
    print(f"  Sessions Acceleration: {insights['sessions_acceleration']}")
    print(f"  Leads Growth: {insights['leads_acceleration']}")
    print(f"  Momentum Sustained: {insights['momentum_sustained']}")
    
    return result

if __name__ == "__main__":
    analyze_q4_trajectory()

