package com.aegis.emergency.dispatch.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;

/**
 * 调度任务处置记录实体类 dispatch_task_disposal
 * 
 * 处置记录由处置工作台（执行端）录入，记录现场执行过程。
 * 调度工作台通过任务详情和事件聚合接口只读展示，必要时可在复核环节附加备注。
 * 
 * @author aegis
 */
@Getter
@Setter
@ToString(callSuper = true)
@TableName("dispatch_task_disposal")
public class DispatchTaskDisposal extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 处置记录ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 任务ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long taskId;

    /** 关联行动项ID（可选） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long stepId;

    /** 参与方ID，引用 dispatch_task_participant.id */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long participantId;

    /** 处置描述（执行过程与采取措施） */
    private String description;

    /** 处置结果（枚举：{@link com.aegis.emergency.dispatch.constant.DisposalOutcome}）：success-完成，partial-部分完成，failed-未完成 */
    private String outcome;

    /** 附件ID列表（JSON格式，照片/视频/文档等） */
    private String attachmentIds;

    /** 位置快照（JSON格式，如需记录经纬度/地址等） */
    private String locationSnapshot;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;
}