package com.njcn.rdms.module.project.dal.dataobject.project.execution;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.rdms.framework.mybatis.core.dataobject.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 执行协办人变更历史日志（B 模型 - 全量事件记录）。
 * 每次 join / inactive / owner_transfer_in / owner_transfer_out 独立成一条记录，昵称展示由查询阶段按用户编号回填。
 */
@TableName("rdms_execution_assignee_log")
@Data
@EqualsAndHashCode(callSuper = true)
public class ExecutionAssigneeLogDO extends BaseDO {

    /**
     * 主键 ID
     */
    @TableId
    private Long id;
    /**
     * 所属执行编号
     */
    private Long executionId;
    /**
     * 被操作的协办人用户编号
     */
    private Long userId;
    /**
     * 被操作人昵称冗余字段。当前业务写入不再落昵称，返回时按 userId 实时回填。
     */
    private String userNicknameSnapshot;
    /**
     * 事件类型：join / inactive / owner_transfer_in / owner_transfer_out
     */
    private String actionType;
    /**
     * 事件原因，inactive 必填，其余可空
     */
    private String reason;
    /**
     * 操作人用户编号
     */
    private Long operatorUserId;
    /**
     * 操作人昵称冗余字段。当前业务写入不再落昵称，返回时按 operatorUserId 实时回填。
     */
    private String operatorNicknameSnapshot;
    /**
     * 事件时间
     */
    private LocalDateTime actionTime;

}
