package com.heyu.api.resp.face;


import com.heyu.api.data.dto.BaseResp;
import lombok.Data;

/***
 * https://next.api.aliyun.com/api/facebody/2019-12-30/MonitorExamination?tab=DOC&params={%22ImageURL%22:%22http%3A%2F%2Fworkbench-file-transfer.oss-cn-shanghai.aliyuncs.com%2Fuser-files%2F84753ea9-9809-4348-ac27-71437b89fee9-WechatIMG29.jpg%3FOSSAccessKeyId%3DLTAI5tRvL6vYdjKSfTFZ156m%26Expires%3D1742056256%26Signature%3Dl%252B1vglgYe%252BIN3wHE4Eror6e5tj4%253D%26response-content-disposition%3Dattachment%22,%22Type%22:1}&lang=JAVA
 *
 *线上监考
 *
 * MonitorExamination
 *
 *
 */
@Data
public class MonitorExaminationFaceResp extends BaseResp {

    private PersonInfoDTO personInfo;

    private FaceInfoDTO faceInfo;

    /***
     * 中心人物的属性行为信息。当请求参数 Type 取值为 1 时显示该参数。
     *
     */
    @Data
    public static class PersonInfoDTO {
        /***
         * 检测到的总人数，0 代表未检测到考生。
         *
         * 注意 请注意，该值为 Long 类型，在某些语言中可能存在精度丢失的风险，请小心使用。
         * 示例值:
         * 1
         */
        private Long personNumber;
        /***
         * 戴耳机。
         *
         */
        private EarPhoneDTO earPhone;
        /***
         * 打电话。
         */
        private CellPhoneDTO cellPhone;


        @Data
        public static class EarPhoneDTO {
            /***
             * 戴耳机的概率分数，取值范围(0,1)。
             *
             * 示例值:
             * 0.7980290651321411
             */
            private Float score;
            /***
             * 建议阈值。
             *
             * 说明 仅作为参考，实际应用中根据测试情况选取合适的 Score 阈值即可。
             * 示例值:
             * 0.6
             */
            private Float threshold;
        }

        /***
         *
         */
        @Data
        public static class CellPhoneDTO {
            /***
             * 打电话的概率分数，取值范围(0,1)。
             *
             * 示例值:
             * 0.39076218008995056
             *
             */
            private Float score;
            /***
             * 建议阈值。
             *
             * 说明 仅作为参考，实际应用中根据测试情况选取合适的 Score 阈值即可。
             * 示例值:
             * 0.6
             */
            private Float threshold;
        }
    }



    @Data
    public static class FaceInfoDTO {
        /***
         * 人脸完整度分数，取值范围(0,1)。
         *
         * 示例值:
         * 1
         *
         */
        private Float completeness;
        /***
         * 正对摄像机时 3 个角度都为 0， 取值范围正负 90 度之间。
         */
        private PoseDTO pose;
        /***
         * 检测到的人脸人数，0 代表未检测到考生人脸。
         *
         * 注意 请注意，该值为 Long 类型，在某些语言中可能存在精度丢失的风险，请小心使用。
         * 示例值:
         * 1
         *
         */
        private Long faceNumber;

        /***
         * 正对摄像机时 3 个角度都为 0， 取值范围正负 90 度之间。
         *
         */
        @Data
        public static class PoseDTO {
            /***
             * 上下俯仰角角度，抬头为正值，低头为负值。
             *
             * 示例值:
             * -0.9185499548912048
             */
            private Float pitch;
            /**
             * 人脸在画面中顺时针转动为正值，逆时针转动为负值。
             *
             * 示例值:
             * -0.18541647493839264
             */
            private Float roll;
            /***
             * 向左看为正值，向右看为负值。
             *
             * 示例值:
             * 8.095342636108398
             */
            private Float yaw;
        }
    }
}
