package cn.iocoder.yudao.module.ocr.api;

import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.ocr.api.dto.VehicleLicenseReqDTO;
import cn.iocoder.yudao.module.ocr.api.dto.VehicleLicenseRespDTO;
import cn.iocoder.yudao.module.ocr.convert.ocr.OcrConvert;
import cn.iocoder.yudao.module.ocr.framework.ocr.core.result.VehicleLicenseResult;
import cn.iocoder.yudao.module.ocr.service.ocr.OcrService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;

import jakarta.annotation.Resource;
import java.util.Base64;

import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;

/**
 * OCR 识别 API 实现类
 */
@RestController
@Validated
@Slf4j
public class OcrApiImpl implements OcrApi {

    @Resource
    private OcrService ocrService;

    @Override
    public CommonResult<VehicleLicenseRespDTO> recognizeVehicleLicense(VehicleLicenseReqDTO reqDTO) {
        try {
            // Base64 解码图片数据
            byte[] imageBytes = Base64.getDecoder().decode(reqDTO.getImageData());

            // 调用识别服务
            VehicleLicenseResult result = ocrService.recognizeVehicleLicense(imageBytes, reqDTO.getProvider());

            // 转换并返回
            return success(OcrConvert.INSTANCE.convertDto(result));
        } catch (Exception e) {
            log.error("[recognizeVehicleLicense][识别行驶证失败]", e);
            throw new RuntimeException("识别行驶证失败: " + e.getMessage());
        }
    }

}
