using System.Text.Json.Serialization;
namespace AxCopilot.Models;
///
/// 하루치 사용 통계. %APPDATA%\AxCopilot\stats\YYYY-MM-DD.json 에 저장됩니다.
///
public class DailyUsageStats
{
[JsonPropertyName("date")]
public string Date { get; set; } = "";
/// 런처가 호출된 횟수 (단축키 누름 횟수)
[JsonPropertyName("launcherOpens")]
public int LauncherOpens { get; set; }
/// 명령어별 실행 횟수. key = 프리픽스 포함 명령 문자열 (예: "/lock", "calc")
[JsonPropertyName("commandUsage")]
public Dictionary CommandUsage { get; set; } = new();
/// PC 잠금 해제 후 활성 상태였던 누적 시간 (초)
[JsonPropertyName("activeSeconds")]
public int ActiveSeconds { get; set; }
// ─── AX Agent 통계 ──────────────────────────────────────────────────
/// 탭별 대화 횟수. key = "Chat" | "Cowork" | "Code"
[JsonPropertyName("chatCounts")]
public Dictionary ChatCounts { get; set; } = new();
/// 일별 총 사용 토큰 수 (Prompt + Completion).
[JsonPropertyName("totalTokens")]
public long TotalTokens { get; set; }
/// 일별 프롬프트 토큰 수.
[JsonPropertyName("promptTokens")]
public long PromptTokens { get; set; }
/// 일별 완료 토큰 수.
[JsonPropertyName("completionTokens")]
public long CompletionTokens { get; set; }
/// 모델별 프롬프트 토큰 수. key = service:model
[JsonPropertyName("modelPromptTokens")]
public Dictionary ModelPromptTokens { get; set; } = new();
/// 모델별 완료 토큰 수. key = service:model
[JsonPropertyName("modelCompletionTokens")]
public Dictionary ModelCompletionTokens { get; set; } = new();
/// 모델별 compact 이후 프롬프트 토큰 수. key = service:model
[JsonPropertyName("postCompactionPromptTokens")]
public Dictionary PostCompactionPromptTokens { get; set; } = new();
/// 모델별 compact 이후 완료 토큰 수. key = service:model
[JsonPropertyName("postCompactionCompletionTokens")]
public Dictionary PostCompactionCompletionTokens { get; set; } = new();
}