package com.heyu.api.baidu.handle.common;


import com.heyu.api.data.annotation.CustomPath;
import com.heyu.api.data.utils.StringUtils;
import com.heyu.api.baidu.BaiduBaseHandle;
import com.heyu.api.baidu.request.common.BPaddleOcrRequest;
import com.heyu.api.baidu.response.common.BPaddleOcrResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * PaddleOCR-VL 文档解析提交 Handle
 *
 * 基于百度自研OCR大模型PaddleOCR-VL的文档解析能力，
 * 支持将PDF/图片中的文字、表格、公式等结构化输出。
 * 异步任务：提交后返回 taskId，需通过 BPaddleOcrQueryHandle 查询结果。
 */
@Component
@Slf4j
@CustomPath("paddleOcr")
public class BPaddleOcrHandle extends BaiduBaseHandle<BPaddleOcrRequest, BPaddleOcrResp> {

    @Override
    public String getUri() {
        return "/rest/2.0/brain/online/v2/paddle-vl-parser/task";
    }

    @Override
    public String check(BPaddleOcrRequest bPaddleOcrRequest) {
        if (StringUtils.isBlank(bPaddleOcrRequest.getFileData())
                && StringUtils.isBlank(bPaddleOcrRequest.getFileUrl())) {
            return "fileData和fileUrl不能同时为空";
        }
        if (StringUtils.isBlank(bPaddleOcrRequest.getFileName())) {
            return "fileName不能为空";
        }
        return null;
    }

    @Override
    public String getContent(BPaddleOcrRequest bPaddleOcrRequest) {
        StringBuffer sb = new StringBuffer();
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getFileName())) {
            sb.append("file_name=").append(bPaddleOcrRequest.getFileName());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getFileUrl())) {
            sb.append("&file_url=").append(bPaddleOcrRequest.getFileUrl());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getFileData())) {
            sb.append("&file_data=").append(bPaddleOcrRequest.getFileData());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getLayoutAnalysis())) {
            sb.append("&layout_analysis=").append(bPaddleOcrRequest.getLayoutAnalysis());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getRecgTables())) {
            sb.append("&recg_tables=").append(bPaddleOcrRequest.getRecgTables());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getRecgFormula())) {
            sb.append("&recg_formula=").append(bPaddleOcrRequest.getRecgFormula());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getRecogSeal())) {
            sb.append("&recog_seal=").append(bPaddleOcrRequest.getRecogSeal());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getLineProbability())) {
            sb.append("&line_probability=").append(bPaddleOcrRequest.getLineProbability());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getPageAnalysis())) {
            sb.append("&page_analysis=").append(bPaddleOcrRequest.getPageAnalysis());
        }
        if (StringUtils.isNotBlank(bPaddleOcrRequest.getAttributeAnalysis())) {
            sb.append("&attribute_analysis=").append(bPaddleOcrRequest.getAttributeAnalysis());
        }
        return sb.toString();
    }
}
