using System.Text.Json.Serialization;

namespace AxCopilot.Models;

/// <summary>
/// 하루치 사용 통계. %APPDATA%\AxCopilot\stats\YYYY-MM-DD.json 에 저장됩니다.
/// </summary>
public class DailyUsageStats
{
    [JsonPropertyName("date")]
    public string Date { get; set; } = "";

    /// <summary>런처가 호출된 횟수 (단축키 누름 횟수)</summary>
    [JsonPropertyName("launcherOpens")]
    public int LauncherOpens { get; set; }

    /// <summary>명령어별 실행 횟수. key = 프리픽스 포함 명령 문자열 (예: "/lock", "calc")</summary>
    [JsonPropertyName("commandUsage")]
    public Dictionary<string, int> CommandUsage { get; set; } = new();

    /// <summary>PC 잠금 해제 후 활성 상태였던 누적 시간 (초)</summary>
    [JsonPropertyName("activeSeconds")]
    public int ActiveSeconds { get; set; }

    // ─── AX Agent 통계 ──────────────────────────────────────────────────

    /// <summary>탭별 대화 횟수. key = "Chat" | "Cowork" | "Code"</summary>
    [JsonPropertyName("chatCounts")]
    public Dictionary<string, int> ChatCounts { get; set; } = new();

    /// <summary>일별 총 사용 토큰 수 (Prompt + Completion).</summary>
    [JsonPropertyName("totalTokens")]
    public long TotalTokens { get; set; }

    /// <summary>일별 프롬프트 토큰 수.</summary>
    [JsonPropertyName("promptTokens")]
    public long PromptTokens { get; set; }

    /// <summary>일별 완료 토큰 수.</summary>
    [JsonPropertyName("completionTokens")]
    public long CompletionTokens { get; set; }
}
