Files
Dokumenten-Check/dc-backend/target/classes/de/frigosped/dc/service/EvaluationService.class

170 lines
16 KiB
Plaintext
Raw Normal View History

2026-06-10 14:21:59 +02:00
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A1
2026-04-27 14:57:33 +02:00
 java/lang/Object<init>()V
 
java/lang/StringisBlank()Z  )de/frigosped/dc/service/EvaluationServiceLOGLorg/jboss/logging/Logger;#Starte Übersetzung (%d Zeichen)...
 length()I
  org/jboss/logging/Loggerdebugf(Ljava/lang/String;I)V"eDu bist ein professioneller Übersetzer für rechtliche und logistische Dokumente.
Übersetze den folgenden Text ins Deutsche.
Regeln:
- Behalte die Markdown-Formatierung exakt bei
- Fachbegriffe korrekt übersetzen
- Wenn der Text bereits auf Deutsch ist, gib ihn unverändert zurück
- Antworte NUR mit dem übersetzten Text, ohne Kommentar oder Präambel
$%& '(*dev/langchain4j/data/message/SystemMessagefrom@(Ljava/lang/String;)Ldev/langchain4j/data/message/SystemMessage;
2026-06-01 14:21:42 +02:00
*+, '-(dev/langchain4j/data/message/UserMessage>(Ljava/lang/String;)Ldev/langchain4j/data/message/UserMessage; /01 23java/util/Listof6(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; 5 67 mainModel.Ldev/langchain4j/model/chat/ChatLanguageModel; 9:; <=,dev/langchain4j/model/chat/ChatLanguageModelgenerate9(Ljava/util/List;)Ldev/langchain4j/model/output/Response; ? @A costTracker.Lde/frigosped/dc/service/AiCostTrackerService;CmainE TRANSLATE
GHI JKjava/lang/LongvalueOf(J)Ljava/lang/Long;
MNO PQ%dev/langchain4j/model/output/Response
tokenUsage+()Ldev/langchain4j/model/output/TokenUsage;
STU VW,de/frigosped/dc/service/AiCostTrackerServicetrackp(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ldev/langchain4j/model/output/TokenUsage;)V
MY Z[content()Ljava/lang/Object;]&dev/langchain4j/data/message/AiMessage
\_ `atext()Ljava/lang/String;
c datrimfWerte Frage %d aus: %s
hij kl"de/frigosped/dc/model/OrdsQuestion getQuestionId()Ljava/lang/Long;
hn oagetQuestionText
q rs
2026-04-27 14:57:33 +02:00
abbreviate'(Ljava/lang/String;I)Ljava/lang/String;
2026-06-01 14:21:42 +02:00
u v9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
x yabuildEvaluationSystem
{ |}buildEvaluationUserJ(Lde/frigosped/dc/model/OrdsQuestion;Ljava/lang/String;)Ljava/lang/String;EVALUATE
2026-06-10 14:21:59 +02:00
<00> <00><00>parseEvaluationResult`(Ljava/lang/String;Lde/frigosped/dc/model/OrdsQuestion;)Lde/frigosped/dc/model/EvaluationResult; /<00> <00> isEmpty <00><00><00> 2<00> java/util/Map()Ljava/util/Map;<00>Batch-Auswertung: %d Frage(n) /<00> <00>size
<00> <00><00>buildBatchSystem(I)Ljava/lang/String;
<00> <00><00>buildBatchUser6(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;
<00> <00><00>parseBatchResult4(Ljava/lang/String;Ljava/util/List;)Ljava/util/List;<00>java/util/HashMap
<00> /<00> <00><00>iterator()Ljava/util/Iterator; <00><00><00> <00> java/util/IteratorhasNext <00><00> <00>[next<00>&de/frigosped/dc/model/EvaluationResult
<00>i <00><00> <00><00>put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;<00> <00><00>applyJ(Lde/frigosped/dc/service/EvaluationService;)Ljava/util/function/Function; <00><00> <00><00>computeIfAbsentC(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;<00>XDu bist ein Experte für Transportrecht, AGB-Recht und Vertragsanalyse.
2026-04-27 14:57:33 +02:00
Du prüfst Transport- und Speditionsdokumente gegen einen Fragenkatalog.
2026-06-10 14:21:59 +02:00
Antworte AUSSCHLIESSLICH mit einem gültigen JSON-Array kein Text davor oder danach.
Das Array enthält für JEDE Frage genau ein Objekt:
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
[
{
"question_id": <ID der Frage exakt wie angegeben>,
"answer": "<Antwort auf Deutsch; Zitate aus dem Dokument in Originalsprache mit Übersetzung in Klammern>",
"score": <Erfüllungsgrad 0 bis 100>,
"result_type": "<OK wenn score >= Schwellwert, NOK wenn klar nicht erfüllt, UNKLAR wenn grenzwertig>",
"the_comment": "<Kurzer fachlicher Kommentar auf Deutsch, max. 3 Sätze>"
}
]
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
Pflicht: Das Array muss GENAU %d Einträge enthalten (einen pro Frage).
Die question_id jedes Eintrags muss exakt der ID der gestellten Frage entsprechen.
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
<00><00><00> J<00>java/lang/Integer(I)Ljava/lang/Integer;
<00> <00><00> formatted'([Ljava/lang/Object;)Ljava/lang/String;<00>java/lang/StringBuilder
<00><00>## Zu prüfendes Dokument
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
<00><00> <00><00>append-(Ljava/lang/String;)Ljava/lang/StringBuilder;<00>
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
---
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
<00>## Prüffragen (
<00><00> <00><00>(I)Ljava/lang/StringBuilder;<00>
Fragen)
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
/<00> <00><00>get(I)Ljava/lang/Object;<00>
### Frage <00> (ID:
<00><00> <00><00>-(Ljava/lang/Object;)Ljava/lang/StringBuilder;<00> , Kategorie:
h<00> <00>agetCategoryName<00>)
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
<00>
2026-04-27 14:57:33 +02:00
2026-06-10 14:21:59 +02:00
h<00> <00><00> getThreshold()Ljava/lang/Integer;<00>**Schwellwert:** <00>9% unterhalb gilt die Anforderung als nicht erfüllt
h<00> <00>agetExample0Percent<00>**Beispiel 0%:**
h<00> <00>agetExample100Percent<00>**Beispiel 100%:** <00>(---
Antworte jetzt mit dem JSON-Array ( Einträge):
<00> atoString
 extractJsonArray&(Ljava/lang/String;)Ljava/lang/String; 
   objectMapper-Lcom/fasterxml/jackson/databind/ObjectMapper;
 +com/fasterxml/jackson/databind/ObjectMappergetTypeFactory3()Lcom/fasterxml/jackson/databind/type/TypeFactory;
 /com/fasterxml/jackson/databind/type/TypeFactoryconstructCollectionTypeX(Ljava/lang/Class;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/type/CollectionType;
  readValueO(Ljava/lang/String;Lcom/fasterxml/jackson/databind/JavaType;)Ljava/lang/Object;
<00> <00>getScore
<00>! "#setScore(Ljava/lang/Integer;)V
<00>% &a getAnswer(Keine Antwort erhalten.
<00>* +, setAnswer(Ljava/lang/String;)V
<00>. /0 setQuestionId(Ljava/lang/Long;)V
<00>2 3a getResultType
5 67isValidResultType(Ljava/lang/String;)Z
<00>9 :intValue
< =>deriveResultType((ILjava/lang/Integer;)Ljava/lang/String;
<00>@ A, setResultTypeCjava/lang/ExceptionE%Batch-JSON-Parsing fehlgeschlagen: %s
BG Ha
2026-04-27 14:57:33 +02:00
getMessage
2026-06-10 14:21:59 +02:00
J KLwarnf'(Ljava/lang/String;Ljava/lang/Object;)VNRohe KI-Antwort: %s
P LRjava/lang/RuntimeExceptionT UmakeConcatWithConstants
QW X*(Ljava/lang/String;Ljava/lang/Throwable;)VZ"java/lang/IllegalArgumentException\Leere KI-Antwort
Y^ , ` ab JSON_PATTERNLjava/util/regex/Pattern;
def ghjava/util/regex/Patternmatcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
jkl m java/util/regex/Matcherfind
jo p<00>group
r sa stripLeadingu[
w x7
startsWith
z {|indexOf(I)I
~ | lastIndexOf
<01> <01><01> substring(II)Ljava/lang/String;<01>&Kein JSON-Array in KI-Antwort gefunden
<00><01>UNKLAR<01>7Automatische Auswertung konnte nicht zugeordnet werden.
<00><01> <01>, setTheComment<01><02>Du bist ein Experte für Transportrecht, AGB-Recht und Vertragsanalyse.
Du prüfst Transport- und Speditionsdokumente gegen einen Fragenkatalog.
Antworte AUSSCHLIESSLICH mit einem gültigen JSON-Objekt kein Text davor oder danach.
Das JSON-Objekt muss folgende Felder enthalten:
{
"answer": "<Deine Antwort auf Deutsch. Zitate aus dem Dokument in Originalsprache angeben und danach in Klammern übersetzen>",
"score": <Zahl 0 bis 100, wie gut das Dokument die Anforderung erfüllt>,
"result_type": "<OK wenn score >= Schwellwert, UNKLAR wenn grenzwertig, NOK wenn klar nicht erfüllt>",
"the_comment": "<Kurzer fachlicher Kommentar auf Deutsch, max. 3 Sätze>"
}
<01>---
<01>## Prüffrage (Kategorie: <01>(**Beispiel: 0% Erfüllung (nicht ok):**
<01>1**Beispiel: 100% Erfüllung (vollständig ok):**
<01>(---
Antworte jetzt mit dem JSON-Objekt:
<01> <01> extractJson
<01> <01>7(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;<01>HJSON-Parsing fehlgeschlagen für Frage %d, verwende Fallback. Fehler: %s
<01> Kv<01>Parsing-Fehler<01>9Automatische Auswertung konnte nicht strukturiert werden.<01>'Kein JSON-Objekt in KI-Antwort gefunden<01>OK
<01> <01><01>equals(Ljava/lang/Object;)Z<01>NOKT<01>>Keine Batch-Antwort für Frage %d verwende UNKLAR-Fallback<01>'Frage wurde im Batch nicht beantwortet.
<01> <01><01> buildFallback<(Ljava/lang/String;)Lde/frigosped/dc/model/EvaluationResult;
<01> <01><01> getLogger-(Ljava/lang/Class;)Lorg/jboss/logging/Logger;<01>,```(?:json)?\s*([\s\S]*?)```|([{][\s\S]*[}])
d<01> <01><01>compile.(Ljava/lang/String;I)Ljava/util/regex/Pattern;RuntimeVisibleAnnotationsLjakarta/inject/Inject;Ljakarta/inject/Named;valueCodeLineNumberTableLocalVariableTablethis+Lde/frigosped/dc/service/EvaluationService; translate'(Ljava/lang/String;J)Ljava/lang/String; originalTextLjava/lang/String; projectIdJmessagesLjava/util/List;response'Ldev/langchain4j/model/output/Response;LocalVariableTypeTable<Ljava/util/List<Ldev/langchain4j/data/message/ChatMessage;>;QLdev/langchain4j/model/output/Response<Ldev/langchain4j/data/message/AiMessage;>; StackMapTableMethodParametersevaluatea(Lde/frigosped/dc/model/OrdsQuestion;Ljava/lang/String;J)Lde/frigosped/dc/model/EvaluationResult;question$Lde/frigosped/dc/model/OrdsQuestion; documentText systemPrompt
userPromptrawText evaluateBatch4(Ljava/util/List;Ljava/lang/String;J)Ljava/util/Map;r(Lde/frigosped/dc/model/EvaluationResult;q questionsresultsmapLjava/util/Map;6Ljava/util/List<Lde/frigosped/dc/model/OrdsQuestion;>;:Ljava/util/List<Lde/frigosped/dc/model/EvaluationResult;>;ILjava/util/Map<Ljava/lang/Long;Lde/frigosped/dc/model/EvaluationResult;>; Signature<00>(Ljava/util/List<Lde/frigosped/dc/model/OrdsQuestion;>;Ljava/lang/String;J)Ljava/util/Map<Ljava/lang/Long;Lde/frigosped/dc/model/EvaluationResult;>; questionCountIisbLjava/lang/StringBuilder;\(Ljava/util/List<Lde/frigosped/dc/model/OrdsQuestion;>;Ljava/lang/String;)Ljava/lang/String; thresholdLjava/lang/Integer;jsoneLjava/lang/Exception;<00>(Ljava/lang/String;Ljava/util/List<Lde/frigosped/dc/model/OrdsQuestion;>;)Ljava/util/List<Lde/frigosped/dc/model/EvaluationResult;>; candidatemLjava/util/regex/Matcher;startendmessageresultfallbacktypescoresmaxLenlambda$evaluateBatch$0:(Ljava/lang/Long;)Lde/frigosped/dc/model/EvaluationResult;idLjava/lang/Long;<clinit>
SourceFileEvaluationService.java.Ljakarta/enterprise/context/ApplicationScoped;BootstrapMethods&(Ljava/lang/Object;)Ljava/lang/Object;
    Batch-Parsing fehlgeschlagen: 
 !" #$"java/lang/invoke/LambdaMetafactory metafactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;&
'() U*$java/lang/invoke/StringConcatFactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; InnerClasses-%java/lang/invoke/MethodHandles$Lookup/java/lang/invoke/MethodHandlesLookup!ab67<01><01><01><01>sC@A<01><01>  <01><01><01>/*<2A><01><01><01> <01><01><01><01><01><00>Y+<2B>
+<2B><07> <0A><>+<2B><17>!<21>#+<2B>)<29>.:*<2A>4<04>8:*<2A>>BD <20>F<05>L<>R<05>X<>\<5C>^<5E>b<><01>& ?@BC L#B(O5PJQ<01>4Y<01><01>Y<01><01>Y<01><01>(1<01><01>5$<01><01><01>(1<01><01>5$<01><01><01> <01> <01><01><01><01><01>4
j<>e+<2B>g*+<2B>mP<>p<>t*<2A>w:*+,<2C>z:<05>#<06>)<29>.:*<2A>4<07>8:*<2A>>B~!<21>F<08>L<>R<08>X<>\<5C>^: * +<2B><00><><01>:cd ecgh$j&k+l.j3o@pUqbs<01>\ j<01><01>j<01><01>j<01><01>j<01><01>N<01><01>$F<01><01>37<01><01>@*<01><01>b<01><01> <01>37<01><01>@*<01><01><01> <01><01><01><01><01><01> <00>+<2B><00><00><07><00><><EFBFBD><12>+<2B><00><00>*+<2B><00><00><00><>#*+,<2C><00><>)<29>.:*<2A>4<05>8:*<2A>>B~!<21>F<06>L<>R*<06>X<>\<5C>^+<2B><00>:<07><00>Y<EFBFBD><00>:<07><00>:  <09><00><00>) <09><00><00><00>:

<EFBFBD><00><>
<EFBFBD><00>
<EFBFBD><00>W<><57><EFBFBD>+<2B><00>:  <09><00><00>% <09><00><00>h:

<EFBFBD>g*<2A><00><00><00>W<><57><EFBFBD><08><01>J<00> <00><00><00>+<00>1<00>6<00>C<00>X<00>j<00>s<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><01>f
<00><01><01>
<00><01><01>
<00><01><01><00><01><01><00><01><01><00><01><01>6<00><01><01>C<00><01><01>jy<01><01>sp<01><01><01>4<00><01><01>6<00><01><01>C<00><01><01>jy<01><01>sp<01><01><01>0 <0A>n //M/<00><00>,<2C><02><00><>+<01> <01><01><01><01><01><00><00><01>M<12><04>Y<1B><00>S<EFBFBD>°<01><00> <00><00><01><01><01><01><01><01><01><00><00><01><01><11><00>Y<EFBFBD><00>N-ɶ<00>W-,<2C><00>϶<00>W-Ѷ<00>+<2B><00><00><00>ֶ<00>W6+<2B><00><00><00>+<04><00><00>h:-ܶ<00>`<60><00>޶<00><05>g<><00><12><><00><05><00><><00><12><><00>W-<05>m<><00><12><><00>W<05><00><>-<12><><00><05><00><><00><12><><00>W<05><00><>"<05><00><><07>-<12><><00><05><00><><00><12><><00>W<05><00><>"<05><00><><07>-<12><><00><05><00><><00><12><><00>W<EFBFBD><01><>?-<12><><00>+<2B><00><00><00><00><00>W-<2D><02><01>V<00><00><00><00>/<00>=<00>J<00>Y<00>f<00>w<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00> <00><01>>J<00><01><01>2<00><01><01><01><01><01><01><01><01> <01><01><01> <01><01><01><05>2<00><01>oh&<26>&<26><01> <01><01><01><01><00><00><01><00>*+<2B>N*<2A> -*<2A> <09> /<12><><13><19>/:6<04><00><00><00><05><00><00><00>:<06><1D> <03><00><> <06>$<24> '<27>)<06><00><>!,<2C><00><00>,<05><00><00>h<>g<>-<06>1<>*<06>1<>4<>5,<2C><00><00>,<05><00><00>h<><00><>:*<06><1D>8<07>;<3B>?<3F><01><>V<04>N<EFBFBD>D-<2D>F<>I<>M+<2B>O<>QY-<2D>F<>S-<2D>V<><00><00>B<01>N<00><00><00><00>!<00>0<00>><00>O<00>_<00>r<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><01>\ <00><01><01>><00><01><01>$<00><01><01><00><01><01>!<00><01><01><00>)<01><01><00><01><01><00><01><01><00><01><01><01>!<00><01><01><00><01><01><01>3
<EFBFBD>$/<01>*<00>%@<00><><14><05>/B<01> <01><01><01><01><01>+<2B>
+<2B><07><0E>YY[<5B>]<5D><>_+<2B>cM,<2C>i<>/,<04>n<> ,<04>n<>,<05>nN-<2D>-<2D>qt<>v<>-<2D>b<>+[<5B>y>+]<5D>}6<1D><1D> +`<60><01><><EFBFBD>YY<01><>]<5D><01>& <00><00><00>%<00>;<00>Q<00>X<00>`<00>t<01>>;<01><01><01><01>`<01>aX'<01>`<01><01>
<EFBFBD>jD<16>"<01>`<01><01><01>w%<25><00>Y<EFBFBD><01>M,+<2B>),<03><00><> ,<01><>?,<01><><01>,<2C><01>  #
<01> %<01><01>%<01><01><01><01>ya<01>.<01><><01><01> <01><01>|}<01>M<00><><00>Y<EFBFBD><00>N-ɶ<00>W-,<2C><00><12><><00>W-<01><><00>W-<01><><00>+<2B><00><><00><12><><00>W-+<2B>m<><00><12><><00>W+<2B><00><>-<12><><00>+<2B><00><><00><12><><00>W+<2B><00><>!+<2B><00><><07>-<01><><00>+<2B><00><><00><12><><00>W+<2B><00><>!+<2B><00><><07>-<01><><00>+<2B><00><><00><12><><00>W-<01><><00>W-<2D><02><01>F#%&(")6*D,K-Z.^1o2w3<00>6<00>7<00>8<00>;<00><<01>*<00><01><01><00><01><01><00><01><01><00><01><01><01>
<03>^<00>$$<01> <01><01><00><00><01><01><00>*+<2B><01>N*<2A> -<12><><01><><00>:<04><1D> <03><00><> <04>1<>*<04>1<>4<>*<04><1D>8,<2C><00><>;<3B>?<04>$<24> '<27>)<04>N<EFBFBD><01>,<2C>g-<2D>F<><01><>M+<2B>O<><00>Y<EFBFBD><01>:+<2B>
+<2B>b<><01><>)<03><00><> <01><>?<01><><01><04>abB<01>JIKN&O:POR_TbVcWjXqWtY~\<00>]<00>^<00>_<00>`<00>a<01>H\<01><01>M<01><00>/<01>cS<01><01><00><01><01><00><01><01><00><01><01><01>V<07>&<00><0F>hB<>1hB<00><00><>hB<00><00><01> <01><01><01><01>y+<2B>
+<2B><07><0E>YY[<5B>]<5D><>_+<2B>cM,<2C>i<>),<04>n<> ,<04>n<>,<05>nN-<2D>-<2D><07>-<2D>b<>+{<7B>y>+}<7D>}6<1D><1D> +`<60><01><><EFBFBD>YY<01><>]<5D><01>2 j kop%q;rFsKxRyZzd{n~<01>>;<01><01>y<01><01>y`<01>[R'<01>Z<01><01>
<EFBFBD>jD<10>"<01>`67<01>d$<01>+<2B><01><><01>+<2B><01><> <01>+<2B><01><><04><03><01><01><01>$<01><01>$<01><01>@<01>=><01>}(,<2C> F<><00>M,<2C>8<><01><>,<2C>8l<><01><><01><><01><01>
<01><01>$<01><01> (<01><01>(<01>(<01><01><01>
<01> <01>rs<01>o+<2B> <0A>+<2B><1C>+<2B>+<1C><01><><01><00><01>
<01><01><01> <01><01> <01>
<01><01> J<01>  
  <01>J<12><01>+<2B>I*<01><><01><><01>
<00>
<00><01><01><01> <01>8<10><01><><01> <20><01><>_<><01>!$ %$<01>%%+
,.0