from __future__ import annotations

from pydantic import BaseModel, Field


class AgentPeriodUsage(BaseModel):
    """Chi tiết tiêu thụ ngân sách và token trong một chu kỳ (Ngày/Tuần/Tháng/Năm)."""

    spent_vnd: float = Field(..., description="Số tiền VNĐ đã sử dụng")
    budget_vnd: float = Field(..., description="Hạn mức ngân sách được cấp (VNĐ)")
    percentage: float = Field(..., description="Tỷ lệ % ngân sách đã sử dụng")
    tokens: int = Field(0, description="Tổng số token đã tiêu thụ")
    requests_count: int = Field(0, description="Số lượng request/truy vấn")


class AgentBudgetSummary(BaseModel):
    """Thông tin tổng hợp ngân sách 4 chu kỳ của một nhân viên AI."""

    agent_code: str = Field(..., description="Mã định danh nhân viên AI")
    display_name: str = Field(..., description="Tên hiển thị")
    role_title: str = Field(..., description="Chức danh nghiệp vụ")
    avatar_icon: str = Field("🤖", description="Icon/Avatar đại diện")
    provider: str | None = Field(None, description="Nhà cung cấp LLM")
    model_name: str | None = Field(None, description="Tên mô hình ngôn ngữ")
    cost_per_1k_tokens_vnd: float = Field(
        50.0, description="Đơn giá VNĐ trên 1.000 tokens"
    )
    day: AgentPeriodUsage
    week: AgentPeriodUsage
    month: AgentPeriodUsage
    year: AgentPeriodUsage


class AIBudgetSummaryResponse(BaseModel):
    """Phản hồi tổng quan ngân sách toàn bộ nhân viên AI."""

    agents: list[AgentBudgetSummary]
    total_spent_today_vnd: float = 0.0
    total_spent_week_vnd: float = 0.0
    total_spent_month_vnd: float = 0.0
    total_spent_year_vnd: float = 0.0
