package es.uv.saic.service; import es.uv.saic.extractor.ExtractionRequest; import es.uv.saic.extractor.docling.DoclingTableExtractor; import es.uv.saic.extractor.HtmlToCsvExtractor; import es.uv.saic.llm.LocalLlmProxy; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.nio.charset.StandardCharsets; @Service @RequiredArgsConstructor public class EnhancementService { private final HtmlToCsvExtractor htmlToCsvExtractor; private final DoclingTableExtractor doclingTableExtractor; private final LocalLlmProxy localLlmProxy; public String calculateScoreAndProduceCommentsWithSingleCall(ExtractionRequest extractionRequest) { String asCsv = extractCsv(extractionRequest); return localLlmProxy.calculateScoreAndProduceComments(asCsv); } private String extractCsv(ExtractionRequest request) { String html = request.hasFile() ? new String(request.fileBytes(), StandardCharsets.UTF_8) : request.rawHtml(); if (StringUtils.isEmpty(html)) { throw new RuntimeException("No HTML found!"); } ExtractionRequest htmlRequest = ExtractionRequest.fromHtml(html); if (doclingTableExtractor.supports(request)) { return doclingTableExtractor.extractTablesToCsv(htmlRequest); } return htmlToCsvExtractor.extractTablesToCsv(htmlRequest); } }