package com.aegis.emergency.plan.domain;

import com.aegis.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 预案执行对象模板实体类 plan_participant
 *
 * @author
 */
@Getter
@Setter
@ToString(callSuper = true)
@TableName("plan_participant")
public class PlanParticipant extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 模板ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 预案ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long planId;

    /** 执行对象类型：TEAM_MEMBER / EXPERT（与调度工作台保持一致） */
    private String participantType;

    /** 队伍ID（当类型为 TEAM_MEMBER 时必填，对应 resource_team.id） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long referenceTeamId;

    /** 队伍成员ID（resource_team_member.id，团队成员场景使用） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long referenceMemberId;

    /** 专家ID（expert/单兵资源 ID，类型为 EXPERT 时使用） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long referenceExpertId;

    /** 展示名称（如：现场抢险一组 / 某某专家） */
    private String displayName;

    /** 角色/职责描述 */
    private String role;

    /** 联系方式 / 职务快照（JSON，与 DispatchTaskParticipant.personSnapshot 对齐） */
    private String contactSnapshot;

    /** 排序 */
    private Integer sortOrder;

    /** 删除标志 */
    private String delFlag;
}