package com.yn.bftl.thirdparty.modules.baiduai.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

import java.util.Map;

/**
 * @Author：Vance
 * @Description：身份证识别响应vo
 * @Date：2022/12/20 13:42
 */
@ApiModel(value = "IdcardResponseVO", description = "身份证识别响应vo")
@Data
@Builder
@AllArgsConstructor
public class IdcardResponseVO {

    @ApiModelProperty("唯一的log id，用于问题定位")
    private Long log_id;

    @ApiModelProperty("响应编码")
    private Integer error_code;

    @ApiModelProperty("错误信息")
    private String error_msg;

    @ApiModelProperty("定位和识别结果")
    private Map<String, Map<String, Object>> words_result;

    @ApiModelProperty("识别结果数，表示words_result的元素个数")
    private Integer words_result_num;

    @ApiModelProperty("图像方向。\n" +
            "-1：未定义，\n" +
            "0：正向，\n" +
            "1：逆时针90度，\n" +
            "2：逆时针180度，\n" +
            "3：逆时针270度")
    private Integer direction;

    @ApiModelProperty("normal-识别正常\n" +
            "reversed_side-身份证正反面颠倒\n" +
            "non_idcard-上传的图片中不包含身份证\n" +
            "blurred-身份证模糊\n" +
            "other_type_card-其他类型证照\n" +
            "over_exposure-身份证关键字段反光或过曝\n" +
            "over_dark-身份证欠曝（亮度过低）\n" +
            "unknown-未知状态")
    private String image_status;

    @ApiModelProperty("输入参数 detect_risk = true 时，则返回该字段识别身份证风险类型:\n" +
            "normal-正常身份证；\n" +
            "copy-复印件；\n" +
            "temporary-临时身份证；\n" +
            "screen-翻拍；\n" +
            "unknown-其他未知情况")
    private String risk_type;

    @ApiModelProperty("如果参数 detect_risk = true 时，则返回此字段。" +
            "如果检测身份证被编辑过，该字段指定编辑软件名称，如:Adobe Photoshop CC 2014 (Macintosh),如果没有被编辑过则返回值无此参数")
    private String edit_tool;

    @ApiModelProperty("输入参数 detect_quality = true 时，则返回该字段识别身份证质量类型:\n" +
            "IsClear - 是否清晰；\n" +
            "IsComplete - 是否边框/四角完整；\n" +
            "IsNoCover - 是否头像、关键字段无遮挡/马赛克。\n" +
            "及对应的概率：IsComplete_propobility、IsNoCover_propobility、IsClear_propobility，值在0-1之间，值越大表示图像质量越好。\n" +
            "默认阈值：当 IsComplete_propobility 超过0.5时，IsComplete返回1，低于0.5，则返回0。IsNoCover_propobility、IsClear_propobility 同上")
    private Object card_quality;

    @ApiModelProperty("当请求参数 detect_photo = true时返回，头像切图的 base64 编码（无编码头，需自行处理）")
    private String photo;

    @ApiModelProperty("当请求参数 detect_photo = true时返回，头像的位置信息（坐标0点为左上角）")
    private Object photo_location;

    @ApiModelProperty("当请求参数 detect_card = true时返回，身份证裁剪切图的 base64 编码（无编码头，需自行处理）")
    private String card_image;

    @ApiModelProperty("当请求参数 detect_card = true时返回，身份证裁剪切图的位置信息（坐标0点为左上角）")
    private Object card_location;

    @ApiModelProperty("用于校验身份证号码、性别、出生是否一致，输出结果及其对应关系如下：\n" +
            "-1： 身份证正面所有字段全为空\n" +
            "0： 身份证证号不合法，此情况下不返回身份证证号\n" +
            "1： 身份证证号和性别、出生信息一致\n" +
            "2： 身份证证号和性别、出生信息都不一致\n" +
            "3： 身份证证号和出生信息不一致\n" +
            "4： 身份证证号和性别信息不一致")
    private Integer idcard_number_type;
}
