import numpy as np
import pandas as pd

def simulate_environment_noise_detailed(num_sessions=60):
    """
    More detailed Environment Noise test with improved classification logic.
    """
    np.random.seed(42)
    
    results = []
    false_positives_old = 0
    false_positives_new = 0
    
    for session in range(num_sessions):
        # Simulate network conditions
        latency = np.random.normal(450, 280)
        packet_loss = np.random.uniform(0, 0.35)
        has_issue = (latency > 900) or (packet_loss > 0.18)
        
        # Old classification logic (current system)
        old_classified_as_c = (latency > 1200) or (packet_loss > 0.25)
        if has_issue and old_classified_as_c:
            false_positives_old += 1
        
        # New improved classification (adds explicit network quality signal)
        network_quality_score = (latency < 800) and (packet_loss < 0.15)
        new_classified_as_c = (latency > 1400) or (packet_loss > 0.30) or (not network_quality_score and latency > 1000)
        
        if has_issue and new_classified_as_c:
            false_positives_new += 1
        
        results.append({
            'session': session + 1,
            'latency_ms': round(latency),
            'packet_loss': round(packet_loss, 3),
            'has_network_issue': has_issue,
            'old_classified_as_C': old_classified_as_c,
            'new_classified_as_C': new_classified_as_c
        })
    
    df = pd.DataFrame(results)
    
    print("=== Environment Noise + Circuit Breaker (Detailed) ===")
    print(f"Total sessions with network issues: {df['has_network_issue'].sum()}")
    print(f"False positives with OLD logic: {false_positives_old}")
    print(f"False positives with NEW logic: {false_positives_new}")
    print(f"Improvement: {false_positives_old - false_positives_new} fewer false triggers")
    
    improvement_pct = ((false_positives_old - false_positives_new) / max(1, false_positives_old)) * 100
    print(f"Reduction in false positives: {improvement_pct:.1f}%")
    
    return df

if __name__ == "__main__":
    results = simulate_environment_noise_detailed()
    results.to_csv('/home/workdir/artifacts/environment_noise_detailed_results.csv', index=False)
    print("\nResults saved.")