#88: Fehlerursache bei FAILED_FINAL im Verlauf-Tab anzeigen (Fall A)

Schema-Analyse ergab Fall A: failure_message ist bereits in V1 vorhanden
und wird persistiert. Keine Flyway-Migration notwendig.

- GuiHistoryTab: TextArea 'Fehlerursache' ergaenzt; zeigt failure_message
  des letzten Fehler-Attempts bei FAILED_FINAL, FAILED_RETRYABLE,
  SKIPPED_FINAL_FAILURE; promptText-Platzhalter bei NULL/leer
- SqliteProcessingAttemptRepositoryAdapter: 1000-Zeichen-Limit fuer
  failure_message vor Persistierung erzwungen (mit Kuerzungsmarkierung)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-05 11:46:37 +02:00
parent 38b2d8c3b2
commit cec3b4fb84
2 changed files with 68 additions and 1 deletions
@@ -159,7 +159,8 @@ public class SqliteProcessingAttemptRepositoryAdapter implements ProcessingAttem
statement.setString(5, attempt.endedAt().toString());
statement.setString(6, attempt.status().name());
setNullableString(statement, 7, attempt.failureClass());
setNullableString(statement, 8, attempt.failureMessage());
// 1000-Zeichen-Grenze erzwingen; längere Meldungen werden mit „…" markiert
setNullableString(statement, 8, truncateFailureMessage(attempt.failureMessage()));
statement.setBoolean(9, attempt.retryable());
// AI provider identifier and AI traceability fields
setNullableString(statement, 10, attempt.aiProvider());
@@ -360,6 +361,27 @@ public class SqliteProcessingAttemptRepositoryAdapter implements ProcessingAttem
}
}
// -------------------------------------------------------------------------
// Hilfsmethoden
// -------------------------------------------------------------------------
/**
* Kürzt eine Fehlermeldung auf maximal 1000 Zeichen vor der Persistierung.
* Längere Meldungen werden mit „…" markiert.
*
* @param message die ursprüngliche Fehlermeldung; kann {@code null} sein
* @return die (ggf. gekürzte) Meldung oder {@code null}
*/
private static String truncateFailureMessage(String message) {
if (message == null) {
return null;
}
if (message.length() <= 1000) {
return message;
}
return message.substring(0, 997) + "";
}
// -------------------------------------------------------------------------
// JDBC nullable helpers
// -------------------------------------------------------------------------