package com.aegis.resource.team.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 队伍操作日志实体类 resource_team_log
 * 
 * @author aegis
 */
@Data
@TableName("resource_team_log")
public class TeamLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 日志ID */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /** 队伍ID */
    @NotNull(message = "队伍ID不能为空")
    private Long teamId;

    /** 操作类型 */
    @NotNull(message = "操作类型不能为空")
    @Size(max = 32, message = "操作类型长度不能超过32个字符")
    private String action;

    /** 原状态 */
    @Size(max = 16, message = "原状态长度不能超过16个字符")
    private String fromStatus;

    /** 新状态 */
    @Size(max = 16, message = "新状态长度不能超过16个字符")
    private String toStatus;

    /** 成员ID（操作成员时） */
    private Long memberId;

    /** 征用ID（操作征用时） */
    private Long requisitionId;

    /** 调度ID（操作调度时） */
    private Long dispatchId;

    /** 事件ID（操作事件时） */
    private Long eventId;

    /** 变更内容（JSON格式） */
    private String diff;

    /** 备注 */
    private String remark;

    /** 操作人ID */
    private Long operatorId;

    /** 操作人姓名 */
    @Size(max = 64, message = "操作人姓名长度不能超过64个字符")
    private String operatorName;

    /** 请求ID（用于追踪） */
    @Size(max = 64, message = "请求ID长度不能超过64个字符")
    private String requestId;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;
}