import uuid
from typing import Optional

from pydantic import BaseModel


class DashboardStats(BaseModel):
    total_employees: int
    active_employees: int
    total_activities: int
    total_completions: int
    total_xp_earned: int
    total_verified_xp: int
    avg_xp_per_employee: float
    department_count: int
    pending_verifications: int
    unresolved_anomalies: int


class LeaderboardEntry(BaseModel):
    rank: int
    user_id: uuid.UUID
    full_name: str
    email: str
    department_name: Optional[str] = None
    total_xp: int
    verified_xp: int
    current_level: str
    completions_count: int
    badges_count: int


class DepartmentSummary(BaseModel):
    department_id: uuid.UUID
    department_name: str
    total_members: int
    total_xp: int
    avg_xp: float
    total_completions: int
    top_performer_name: Optional[str] = None
    top_performer_xp: int = 0


class TrustBreakdown(BaseModel):
    tier: int
    tier_name: str
    completions_count: int
    total_xp: int
