using System.ComponentModel.DataAnnotations;

namespace TakeoutSaaS.Application.Sms.Options;

/// <summary>
/// 验证码发送配置。
/// </summary>
public sealed class VerificationCodeOptions
{
    /// <summary>
    /// 验证码位数，默认 6。
    /// </summary>
    [Range(4, 10)]
    public int CodeLength { get; set; } = 6;

    /// <summary>
    /// 过期时间（分钟）。
    /// </summary>
    [Range(1, 60)]
    public int ExpireMinutes { get; set; } = 5;

    /// <summary>
    /// 发送冷却时间（秒），用于防止频繁请求。
    /// </summary>
    [Range(10, 300)]
    public int CooldownSeconds { get; set; } = 60;

    /// <summary>
    /// 缓存前缀。
    /// </summary>
    [Required]
    public string CachePrefix { get; set; } = "sms:code";
}
