Fix #18: Leeres Datumsfeld wird als Fehler behandelt statt als fehlendes Datum
Die KI liefert manchmal "date": "" statt das Feld wegzulassen. Laut Spezifikation ist date optional – fehlt es oder ist es leer, soll das aktuelle Datum als Fallback verwendet werden. Änderung in AiResponseValidator: - Leere Strings (nach trim) werden identisch wie fehlende date-Felder behandelt - Fallback auf aktuelles Datum über ClockPort mit DateSource.FALLBACK_CURRENT - Validierungsfehler "date could not be parsed" wird nicht mehr geworfen Neuer Test: - validate_aiProvidesEmptyDateString_usesFallbackCurrentDate überprüft, dass "date": "" zum Fallback-Datum führt Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
+15
-9
@@ -119,17 +119,23 @@ public final class AiResponseValidator {
|
||||
DateSource dateSource;
|
||||
|
||||
if (parsed.dateString().isPresent()) {
|
||||
String dateStr = parsed.dateString().get();
|
||||
try {
|
||||
resolvedDate = LocalDate.parse(dateStr);
|
||||
dateSource = DateSource.AI_PROVIDED;
|
||||
} catch (DateTimeParseException e) {
|
||||
return AiValidationResult.invalid(
|
||||
"AI-provided date '" + dateStr + "' is not a valid YYYY-MM-DD date: " + e.getMessage(),
|
||||
AiErrorClassification.FUNCTIONAL);
|
||||
String dateStr = parsed.dateString().get().trim();
|
||||
// Leere Strings werden wie fehlende Daten behandelt – Fallback auf aktuelles Datum
|
||||
if (dateStr.isEmpty()) {
|
||||
resolvedDate = clockPort.now().atZone(java.time.ZoneOffset.UTC).toLocalDate();
|
||||
dateSource = DateSource.FALLBACK_CURRENT;
|
||||
} else {
|
||||
try {
|
||||
resolvedDate = LocalDate.parse(dateStr);
|
||||
dateSource = DateSource.AI_PROVIDED;
|
||||
} catch (DateTimeParseException e) {
|
||||
return AiValidationResult.invalid(
|
||||
"AI-provided date '" + dateStr + "' is not a valid YYYY-MM-DD date: " + e.getMessage(),
|
||||
AiErrorClassification.FUNCTIONAL);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// No date provided by the AI → fall back to current date from the clock
|
||||
// Kein Datum von der KI bereitgestellt → Fallback auf aktuelles Datum
|
||||
resolvedDate = clockPort.now().atZone(java.time.ZoneOffset.UTC).toLocalDate();
|
||||
dateSource = DateSource.FALLBACK_CURRENT;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user