namespace TakeoutSaaS.Shared.Abstractions.Entities;

/// <summary>
/// 审计字段接口：提供创建、更新、删除时间与操作者标识。
/// </summary>
public interface IAuditableEntity : ISoftDeleteEntity
{
    /// <summary>
    /// 创建时间（UTC）。
    /// </summary>
    DateTime CreatedAt { get; set; }

    /// <summary>
    /// 更新时间（UTC），未更新时为 null。
    /// </summary>
    DateTime? UpdatedAt { get; set; }

    /// <summary>
    /// 删除时间（UTC），未删除时为 null。
    /// </summary>
    new DateTime? DeletedAt { get; set; }

    /// <summary>
    /// 创建人用户标识，匿名或系统操作时为 null。
    /// </summary>
    long? CreatedBy { get; set; }

    /// <summary>
    /// 最后更新人用户标识，匿名或系统操作时为 null。
    /// </summary>
    long? UpdatedBy { get; set; }

    /// <summary>
    /// 删除人用户标识（软删除），未删除时为 null。
    /// </summary>
    long? DeletedBy { get; set; }
}
