package com.cmvr.inspection.domain.dto.alert;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.Map;

/**
 * 边缘 AI 推送消息的统一信封。
 */
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AlertEnvelope
{
    /** 消息结构版本，当前固定为 DetectionAlert/v1。 */
    @JsonProperty("schema")
    private String schema;

    /** 产生消息的视频源标识。 */
    @JsonProperty("source_id")
    private String sourceId;

    /** 边缘端 gRPC 服务 IP，用于前端展示和问题定位。 */
    @JsonProperty("grpc_ip")
    private String grpcIp;

    /** 视频源内递增序号。 */
    @JsonProperty("sequence")
    private Long sequence;

    /** 图像采集时间，Unix 纳秒时间戳。 */
    @JsonProperty("captured_at_ns")
    private Long capturedAtNs;

    /** 边缘端接收时间，Unix 纳秒时间戳。 */
    @JsonProperty("received_at_ns")
    private Long receivedAtNs;

    /** 全链路追踪标识。 */
    @JsonProperty("trace_id")
    private String traceId;

    /** 边缘推理会话标识。 */
    @JsonProperty("session_id")
    private String sessionId;

    /** 产生消息的输入端口。 */
    @JsonProperty("input_port")
    private String inputPort;

    /** 扩展属性。 */
    @JsonProperty("attributes")
    private Map<String, Object> attributes;

    /** PPE 违规报警内容。 */
    @JsonProperty("payload")
    private DetectionAlert payload;
}
