atsachlaris преди 23 часа
родител
ревизия
b6a92aebd0

+ 1 - 2
requests/service.http

@@ -43,8 +43,7 @@ Content-Type: text/html
 < ./files/E.OE4.2-with-critical.html
 --WebAppBoundary--
 
-###
-
+### HTML body
 POST http://127.0.0.1:8080/enhancements/chat
 Content-Type: application/json
 

+ 1 - 1
src/main/java/es/uv/saic/extractor/docling/DoclingTableExtractor.java

@@ -21,7 +21,7 @@ public class DoclingTableExtractor implements TableExtractor {
 
     @Override
     public boolean supports(ExtractionRequest request) {
-        return doclingProperties.isEnabled() && request.hasRawHtml();
+        return doclingProperties.isEnabled();
     }
 
     @Override

+ 12 - 17
src/main/java/es/uv/saic/service/EnhancementService.java

@@ -4,7 +4,7 @@ import es.uv.saic.extractor.ExtractionRequest;
 import es.uv.saic.extractor.docling.DoclingTableExtractor;
 import es.uv.saic.extractor.HtmlToCsvExtractor;
 import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import java.nio.charset.StandardCharsets;
@@ -16,29 +16,24 @@ public class EnhancementService {
     private final DoclingTableExtractor doclingTableExtractor;
     private final LlmProxy llmProxy;
 
-    @SneakyThrows
-    public String askHtml(String html) {
-        String asCsv = extractForChatEndpoint(ExtractionRequest.fromHtml(html));
+    public String calculateScoreAndProduceCommentsWithSingleCall(ExtractionRequest extractionRequest) {
+        String asCsv = extractCsv(extractionRequest);
 
-        return llmProxy.askLlm(asCsv);
+        return llmProxy.calculateScoreAndProduceComments(asCsv);
     }
 
-    public String askFile(byte[] fileBytes, String fileName, String contentType) {
-        String asCsv = extractForFileEndpoint(ExtractionRequest.fromFile(fileBytes, fileName, contentType));
+    private String extractCsv(ExtractionRequest request) {
+        String html = request.hasFile() ? new String(request.fileBytes(), StandardCharsets.UTF_8) : request.rawHtml();
 
-        return llmProxy.askLlm(asCsv);
-    }
+        if (StringUtils.isEmpty(html)) {
+            throw new RuntimeException("No HTML found!");
+        }
 
-    private String extractForChatEndpoint(ExtractionRequest request) {
+        ExtractionRequest htmlRequest = ExtractionRequest.fromHtml(html);
         if (doclingTableExtractor.supports(request)) {
-            return doclingTableExtractor.extractTablesToCsv(request);
+            return doclingTableExtractor.extractTablesToCsv(htmlRequest);
         }
-        return htmlToCsvExtractor.extractTablesToCsv(request);
-    }
-
-    private String extractForFileEndpoint(ExtractionRequest request) {
-        String htmlFallback = request.hasFile() ? new String(request.fileBytes(), StandardCharsets.UTF_8) : "";
-        return extractForChatEndpoint(ExtractionRequest.fromHtml(htmlFallback));
+        return htmlToCsvExtractor.extractTablesToCsv(htmlRequest);
     }
 
 }

+ 1 - 1
src/main/java/es/uv/saic/service/LlmProxy.java

@@ -20,7 +20,7 @@ public class LlmProxy {
     }
 
     @SneakyThrows
-    public String askLlm(String asCsv) {
+    public String calculateScoreAndProduceComments(String asCsv) {
 
         return chatClient.prompt()
                 .system(SCORE_AND_COMMENT_ANALYSIS_PROMPT)

+ 3 - 3
src/main/java/es/uv/saic/web/EnhancementController.java

@@ -1,9 +1,9 @@
 package es.uv.saic.web;
 
+import es.uv.saic.extractor.ExtractionRequest;
 import es.uv.saic.service.EnhancementService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestPart;
@@ -23,7 +23,7 @@ public class EnhancementController {
 
     @PostMapping("chat")
     public String chat(@RequestBody String html) {
-        return enhancementService.askHtml(html);
+        return enhancementService.calculateScoreAndProduceCommentsWithSingleCall(ExtractionRequest.fromHtml(html));
     }
 
     @PostMapping(value = "chat/file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@@ -33,7 +33,7 @@ public class EnhancementController {
         }
 
         try {
-            return enhancementService.askFile(file.getBytes(), file.getOriginalFilename(), file.getContentType());
+            return enhancementService.calculateScoreAndProduceCommentsWithSingleCall(ExtractionRequest.fromFile(file.getBytes(), file.getOriginalFilename(), file.getContentType()));
         } catch (Exception e) {
             throw new ResponseStatusException(BAD_REQUEST, "Unable to read uploaded file", e);
         }