package com.cmvr.aima.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import com.cmvr.common.annotation.Excel;
import com.cmvr.common.core.domain.BaseEntity;

import java.util.Date;

/**
 * 爱玛告警实体。
 * <p>
 * 用于描述任务执行过程中产生的告警信息，包含任务、设备、车辆、用例、
 * 告警详情以及处理结果等数据。
 *
 * @author cmvr-iot
 * @since 2026-06-22
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel("爱玛告警管理")
public class AimaAlarm extends BaseEntity
{
    /** 序列化版本号。 */
    private static final long serialVersionUID = 1L;

    /** 主键ID。 */
    @ApiModelProperty("主键ID")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /** 告警编码。 */
    @Excel(name = "告警编码")
    @ApiModelProperty("告警编码")
    private String alarmCode;

    /** 任务执行实例ID。 */
    @Excel(name = "任务执行实例ID")
    @ApiModelProperty("任务执行实例ID")
    private String taskInstanceId;

    /** 任务ID。 */
    @Excel(name = "任务ID")
    @ApiModelProperty("任务ID")
    private String taskId;

    /** 任务名称。 */
    @Excel(name = "任务名称")
    @ApiModelProperty("任务名称")
    private String taskName;

    /** 手机ID。 */
    @Excel(name = "手机ID")
    @ApiModelProperty("手机ID")
    private String phoneId;

    /** 手机名称。 */
    @Excel(name = "手机名称")
    @ApiModelProperty("手机名称")
    private String phoneName;

    /** 车辆ID。 */
    @Excel(name = "车辆ID")
    @ApiModelProperty("车辆ID")
    private String vehicleId;

    /** 车辆车架号。 */
    @Excel(name = "车架号")
    @ApiModelProperty("车架号")
    private String vin;

    /** 测试用例ID。 */
    @Excel(name = "测试用例ID")
    @ApiModelProperty("测试用例ID")
    private String testCaseId;

    /** 测试用例名称。 */
    @Excel(name = "用例名称")
    @ApiModelProperty("用例名称")
    private String caseName;

    /** 告警级别：1提示，2警告，3严重。 */
    @Excel(name = "告警级别")
    @ApiModelProperty("告警级别(1提示 2警告 3严重)")
    private String alarmLevel;

    /** 告警类型：1设备异常，2测试异常，3通信异常，4性能异常。 */
    @Excel(name = "告警类型")
    @ApiModelProperty("告警类型(1设备异常 2测试异常 3通信异常 4性能异常)")
    private String alarmType;

    /** 告警标题。 */
    @Excel(name = "告警标题")
    @ApiModelProperty("告警标题")
    private String alarmTitle;

    /** 告警内容详情。 */
    @Excel(name = "告警内容")
    @ApiModelProperty("告警内容")
    private String alarmContent;

    /** 告警发生位置或执行步骤。 */
    @Excel(name = "告警位置")
    @ApiModelProperty("告警位置/步骤")
    private String alarmLocation;

    /** 告警发生时间。 */
    @Excel(name = "告警时间")
    @ApiModelProperty("告警时间")
    private Date alarmTime;

    /** 处理状态：0未处理，1处理中，2已处理，3已忽略。 */
    @Excel(name = "处理状态")
    @ApiModelProperty("处理状态(0未处理 1处理中 2已处理 3已忽略)")
    private String handleStatus;

    /** 告警处理人。 */
    @Excel(name = "处理人")
    @ApiModelProperty("处理人")
    private String handler;

    /** 告警处理时间。 */
    @Excel(name = "处理时间")
    @ApiModelProperty("处理时间")
    private Date handleTime;

    /** 处理说明或备注。 */
    @Excel(name = "处理说明")
    @ApiModelProperty("处理说明")
    private String handleRemark;

    /** 告警相关图片证据。 */
    @ApiModelProperty("图片证据")
    private String evidenceImage;

}
