using TakeoutSaaS.Domain.Dictionary.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Dictionary.Entities;

/// <summary>
/// 字典导入审计日志。
/// </summary>
public sealed class DictionaryImportLog : MultiTenantEntityBase
{
    /// <summary>
    /// 操作人用户标识。
    /// </summary>
    public long OperatorId { get; set; }

    /// <summary>
    /// 字典分组编码。
    /// </summary>
    public string DictionaryGroupCode { get; set; } = string.Empty;

    /// <summary>
    /// 导入文件名。
    /// </summary>
    public string FileName { get; set; } = string.Empty;

    /// <summary>
    /// 文件大小（字节）。
    /// </summary>
    public long FileSize { get; set; }

    /// <summary>
    /// 文件格式（CSV/JSON）。
    /// </summary>
    public string Format { get; set; } = string.Empty;

    /// <summary>
    /// 冲突处理模式。
    /// </summary>
    public ConflictResolutionMode ConflictMode { get; set; } = ConflictResolutionMode.Skip;

    /// <summary>
    /// 成功导入数量。
    /// </summary>
    public int SuccessCount { get; set; }

    /// <summary>
    /// 跳过数量。
    /// </summary>
    public int SkipCount { get; set; }

    /// <summary>
    /// 错误明细（JSON）。
    /// </summary>
    public string? ErrorDetails { get; set; }

    /// <summary>
    /// 处理时间（UTC）。
    /// </summary>
    public DateTime ProcessedAt { get; set; }

    /// <summary>
    /// 处理耗时。
    /// </summary>
    public TimeSpan Duration { get; set; }
}
