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


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

import java.util.List;

/***
 * https://console.bce.baidu.com/support/?_=1740703582749&timestamp=1740703601796#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E6%99%BA%E8%83%BD%E6%96%87%E6%A1%A3%E5%88%86%E6%9E%90&api=file%2F2.0%2Fbrain%2Fonline%2Fv1%2Ftextreview%2Ftask%2Fquery&method=post
 *
 * 合同审查-获取结果
 */
@NoArgsConstructor
@Data
public class BTextreviewQueryResp {


    @JsonProperty("error_code")
    private Integer errorCode;
    @JsonProperty("error_msg")
    private String errorMsg;
    @JsonProperty("log_id")
    private String logId;
    @JsonProperty("result")
    private ResultDTO result;

    @NoArgsConstructor
    @Data
    public static class ResultDTO {
        @JsonProperty("taskId")
        private String taskId;              // 任务ID
        @JsonProperty("status")
        private String status;              // 任务状态，pending：排队中；processing：运行中；success：成功；failed：失败
        @JsonProperty("apiVersion")
        private String apiVersion;
        @JsonProperty("createdAt")
        private String createdAt;               // 任务创建时间
        @JsonProperty("startedAt")
        private String startedAt;           // 任务开始时间
        @JsonProperty("finishedAt")
        private String finishedAt;          // 任务结束时间
        @JsonProperty("duration")
        private String duration;    //任务执行时长
        @JsonProperty("reason")
        private String reason;          //任务失败描述信息
        @JsonProperty("textreviewResult")
        private List<TextreviewResultDTO> textreviewResult;

        @NoArgsConstructor
        @Data
        public static class TextreviewResultDTO {
            @JsonProperty("docId")
            private String docId;                       // 文档ID
            @JsonProperty("docName")
            private String docName;         // 文档名称
            @JsonProperty("status")
            private String status;          // 文件状态，success：成功；failed：失败
            @JsonProperty("reason")
            private String reason;          // 文件失败描述信息
            @JsonProperty("chatContents")
            private List<ChatContentsDTO> chatContents;         // 条款审查结果列表
            @JsonProperty("fileURL")
            private String fileURL;         // 解析后的含位置信息的PDF文件地址，地址有效期30天
            @JsonProperty("reportURL")
            private String reportURL;           // 包含重大风险条款批注的Word文档地址，地址有效期30天。若上传的源文件为PDF格式，则无法支持批注下载
            @JsonProperty("reportStatus")
            private String reportStatus;            // 包含批注的Word文档状态，success：成功；failed：失败

            @NoArgsConstructor
            @Data
            public static class ChatContentsDTO {
                @JsonProperty("ruleId")
                private String ruleId;      // 	条款ID
                @JsonProperty("ruleName")
                private String ruleName;            // 条款名称
                @JsonProperty("tags")
                private List<TagsDTO> tags;             // 条款的原文和位置信息列表
                @JsonProperty("riskReviewResults")
                private List<RiskReviewResultsDTO> riskReviewResults;
                @JsonProperty("predictResult")
                private String predictResult;           // 条款的原始审查结果
                @JsonProperty("isShow")
                private Boolean isShow;
                @JsonProperty("riskName")
                private String riskName;            // 条款的风险等级

                @NoArgsConstructor
                @Data
                public static class TagsDTO {
                    @JsonProperty("value")
                    private String value;           // 条款的原文
                    @JsonProperty("positions")
                    private List<PositionsDTO> positions;       //	条款的位置信息列表

                    @NoArgsConstructor
                    @Data
                    public static class PositionsDTO {
                        @JsonProperty("pageNum")
                        private Integer pageNum;                // 	条款的原文位置页码
                        @JsonProperty("box")
                        private List<Integer> box;          // 条款的原文四角点坐标，每个框选范围包含左上角x坐标、左上角y坐标、矩形框宽度、矩形框高度，共四个数值，如[89,74,61,12]
                    }
                }

                @NoArgsConstructor
                @Data
                public static class RiskReviewResultsDTO {
                    @JsonProperty("originalContract")
                    private String originalContract;                    // 合同原文
                    @JsonProperty("riskPoint")
                    private String riskPoint;               // 	风险点名称
                    @JsonProperty("riskAnalysis")
                    private String riskAnalysis;                // 风险分析
                    @JsonProperty("modifyExample")
                    private String modifyExample;           // 修改示例
                    @JsonProperty("positions")
                    private List<PositionsDTO> positions;           // 	条款的位置信息列表

                    @NoArgsConstructor
                    @Data
                    public static class PositionsDTO {
                        @JsonProperty("pageNum")
                        private Integer pageNum;                    // 	条款的原文位置页码
                        @JsonProperty("box")
                        private List<Integer> box;      // 条款的原文四角点坐标，每个框选范围包含左上角x坐标、左上角y坐标、矩形框宽度、矩形框高度，共四个数值，如[89,74,61,12]
                    }
                }
            }
        }
    }
}



