using System.ComponentModel.DataAnnotations; using Domain.Entities.Members.ValueObject; using Domain.Entities.Store.ValueObject; namespace Domain.Entities.Members.Logs; /// /// 소모품 아이템 사용/회수 감사 로그. /// public class MemberItemUsageLog { [Key] public int ID { get; private set; } public int MemberID { get; private set; } /// 대상 MemberItem ID (스냅샷). public int MemberItemID { get; private set; } public int ProductID { get; private set; } public ItemKind Kind { get; private set; } public MemberItemUsageAction Action { get; private set; } /// 사용 결과 요약 (예: "밴 2건 해제", "글 34건 초기화"). public string? Detail { get; private set; } public DateTime CreatedAt { get; private set; } = DateTime.UtcNow; private MemberItemUsageLog() { } public static MemberItemUsageLog Create(int memberID, int memberItemID, int productID, ItemKind kind, MemberItemUsageAction action, string? detail = null) { if (detail is not null && detail.Length > 300) { detail = detail[..300]; } return new MemberItemUsageLog { MemberID = memberID, MemberItemID = memberItemID, ProductID = productID, Kind = kind, Action = action, Detail = detail }; } }