package com.heyu.api.baidu.response.doc;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.heyu.api.baidu.response.BBaseResp;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 图片篡改检测 - 百度API响应
 *
 * 百度文档：https://cloud.baidu.com/doc/OCR/s/kmfdnccok
 */
@NoArgsConstructor
@Data
public class BForgeryDetectionResp extends BBaseResp {

    @JsonProperty("log_id")
    private Long logId;

    @JsonProperty("result")
    private ResultDTO result;

    @JsonProperty("error_code")
    private Integer errorCode;

    @JsonProperty("error_msg")
    private String errorMsg;

    @NoArgsConstructor
    @Data
    public static class ResultDTO {

        /**
         * 篡改检测结果
         * - fake：有篡改
         * - real：无篡改
         */
        @JsonProperty("detection_result")
        private String detectionResult;

        /**
         * 图片篡改置信度（当请求参数 detect_proportion = true 时返回）
         */
        @JsonProperty("tampered_proportion")
        private Double tamperedProportion;

        /**
         * 篡改区域热力图base64编码（当请求参数 return_heatmap = true 时返回）
         */
        @JsonProperty("heatmap")
        private String heatmap;

        /**
         * 伪造区域的坐标信息
         */
        @JsonProperty("tampered_location")
        private List<TamperedLocationDTO> tamperedLocation;
    }

    @NoArgsConstructor
    @Data
    public static class TamperedLocationDTO {

        /**
         * 伪造区域的左上顶点的水平坐标
         */
        @JsonProperty("left")
        private Integer left;

        /**
         * 伪造区域的左上顶点的垂直坐标
         */
        @JsonProperty("top")
        private Integer top;

        /**
         * 伪造区域的宽度
         */
        @JsonProperty("width")
        private Integer width;

        /**
         * 伪造区域的高度
         */
        @JsonProperty("height")
        private Integer height;

        /**
         * 该区域伪造置信度分数
         */
        @JsonProperty("probability")
        private Double probability;
    }
}
