using TakeoutSaaS.Domain.Tenants.Enums;

namespace TakeoutSaaS.Application.App.Tenants.Dto;

/// <summary>
/// 租户配额使用历史 DTO。
/// </summary>
public sealed record QuotaUsageHistoryDto
{
    /// <summary>
    /// 配额类型。
    /// </summary>
    public TenantQuotaType QuotaType { get; init; }

    /// <summary>
    /// 已使用值。
    /// </summary>
    public decimal UsedValue { get; init; }

    /// <summary>
    /// 限额值。
    /// </summary>
    public decimal LimitValue { get; init; }

    /// <summary>
    /// 记录时间（UTC）。
    /// </summary>
    public DateTime RecordedAt { get; init; }

    /// <summary>
    /// 变更类型：increase | decrease | init | snapshot。
    /// </summary>
    public string ChangeType { get; init; } = "snapshot";

    /// <summary>
    /// 变更量（可选）。
    /// </summary>
    public decimal? ChangeAmount { get; init; }

    /// <summary>
    /// 变更原因（可选）。
    /// </summary>
    public string? ChangeReason { get; init; }
}

