.
This commit is contained in:
@@ -34,8 +34,8 @@ public class ReportSynthesisService {
|
|||||||
buildTextPrompt(originalQuery, aggregatedLearnings, lang)));
|
buildTextPrompt(originalQuery, aggregatedLearnings, lang)));
|
||||||
|
|
||||||
Mono<List<byte[]>> chartsMono = Mono.fromCallable(() -> {
|
Mono<List<byte[]>> chartsMono = Mono.fromCallable(() -> {
|
||||||
String json = ollamaAnalyticsService.generateWithInstruction(aggregatedLearnings,
|
String json = extractSvgCode(ollamaAnalyticsService.generateWithInstruction(aggregatedLearnings,
|
||||||
buildChartDataPrompt(aggregatedLearnings));
|
buildChartDataPrompt(aggregatedLearnings)));
|
||||||
if (json == null || json.trim().isEmpty() || json.trim().equals("{}")) {
|
if (json == null || json.trim().isEmpty() || json.trim().equals("{}")) {
|
||||||
return new ArrayList<byte[]>();
|
return new ArrayList<byte[]>();
|
||||||
}
|
}
|
||||||
@@ -52,6 +52,32 @@ public class ReportSynthesisService {
|
|||||||
.map(tuple -> new FinalReportPayload(tuple.getT1(), tuple.getT2()));
|
.map(tuple -> new FinalReportPayload(tuple.getT1(), tuple.getT2()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String extractSvgCode(String ollamaResponse) {
|
||||||
|
if (ollamaResponse == null || ollamaResponse.isBlank()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to find content within XML markdown block first
|
||||||
|
int startXml = ollamaResponse.indexOf("```xml");
|
||||||
|
if (startXml != -1) {
|
||||||
|
int startSvg = ollamaResponse.indexOf("<svg", startXml);
|
||||||
|
int endSvg = ollamaResponse.lastIndexOf("</svg>");
|
||||||
|
if (startSvg != -1 && endSvg != -1 && endSvg > startSvg) {
|
||||||
|
return ollamaResponse.substring(startSvg, endSvg + 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback: find the first <svg> and last </svg> tags in the whole string
|
||||||
|
int startSvg = ollamaResponse.indexOf("<svg");
|
||||||
|
int endSvg = ollamaResponse.lastIndexOf("</svg>");
|
||||||
|
|
||||||
|
if (startSvg != -1 && endSvg != -1 && endSvg > startSvg) {
|
||||||
|
return ollamaResponse.substring(startSvg, endSvg + 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null; // Return null if no SVG found
|
||||||
|
}
|
||||||
|
|
||||||
private String formatLearnings(List<String> learnings) {
|
private String formatLearnings(List<String> learnings) {
|
||||||
if (learnings == null || learnings.isEmpty()) {
|
if (learnings == null || learnings.isEmpty()) {
|
||||||
return "- (данные не были предоставлены)";
|
return "- (данные не были предоставлены)";
|
||||||
|
|||||||
Reference in New Issue
Block a user