"""
Self-Evaluation System - Judge decision quality
"""
from typing import Dict, Any, List

class SelfEvaluator:
    def __init__(self):
        self.decisions = []
        self.quality_scores = []
        
    def evaluate_decision(self, decision: str, outcome: Any, expected: Any) -> float:
        """Evaluate quality of a decision"""
        # Simple evaluation: compare outcome to expectation
        if outcome == expected:
            score = 1.0
        elif isinstance(outcome, (int, float)) and isinstance(expected, (int, float)):
            score = 1.0 - abs(outcome - expected) / max(abs(expected), 1)
        else:
            score = 0.5  # Partial credit if can't compare
        
        self.decisions.append({
            'decision': decision,
            'outcome': outcome,
            'expected': expected,
            'score': score
        })
        self.quality_scores.append(score)
        
        return score
    
    def get_average_quality(self) -> float:
        """Get average decision quality"""
        if not self.quality_scores:
            return 0.0
        return sum(self.quality_scores) / len(self.quality_scores)
    
    def identify_improvements(self) -> List[str]:
        """Identify areas needing improvement"""
        improvements = []
        
        avg = self.get_average_quality()
        if avg < 0.7:
            improvements.append("Decision quality below target")
        
        if len(self.decisions) < 10:
            improvements.append("Need more decision data")
        
        return improvements
