From b7b1975c5c784807c184930e4af05812b0177bc1 Mon Sep 17 00:00:00 2001 From: androidlover5842 Date: Sat, 31 Jan 2026 11:07:15 +0530 Subject: [PATCH] Log geocode response in extracted data --- .../component/DocumentExtractionService.kt | 10 ++++++++-- .../component/GoogleGeocodingClient.kt | 19 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/android/trisolarisserver/component/DocumentExtractionService.kt b/src/main/kotlin/com/android/trisolarisserver/component/DocumentExtractionService.kt index 3048a28..d3035e8 100644 --- a/src/main/kotlin/com/android/trisolarisserver/component/DocumentExtractionService.kt +++ b/src/main/kotlin/com/android/trisolarisserver/component/DocumentExtractionService.kt @@ -426,13 +426,19 @@ class DocumentExtractionService( } } - private fun applyBookingCityUpdates(document: GuestDocument, results: Map) { + private fun applyBookingCityUpdates(document: GuestDocument, results: MutableMap) { val bookingId = document.booking?.id ?: return val booking = bookingRepo.findById(bookingId).orElse(null) ?: return if (booking.fromCity?.isNotBlank() == true && booking.toCity?.isNotBlank() == true) return val pin = cleanedValue(results[DocumentPrompts.PIN_CODE.first]) ?: return if (!isValidPin(pin)) return - val resolved = googleGeocodingClient.resolveCityState(pin) ?: return + val geocode = googleGeocodingClient.resolveCityState(pin) + geocode.status?.let { results["geoStatus"] = it } + if (geocode.rawResponse != null) { + results["geoResponse"] = geocode.rawResponse.take(4000) + } + val resolved = geocode.resolvedCityState ?: return + results["geoResolved"] = resolved var updated = false if (booking.fromCity.isNullOrBlank()) { booking.fromCity = resolved diff --git a/src/main/kotlin/com/android/trisolarisserver/component/GoogleGeocodingClient.kt b/src/main/kotlin/com/android/trisolarisserver/component/GoogleGeocodingClient.kt index 34805d5..dd88945 100644 --- a/src/main/kotlin/com/android/trisolarisserver/component/GoogleGeocodingClient.kt +++ b/src/main/kotlin/com/android/trisolarisserver/component/GoogleGeocodingClient.kt @@ -18,8 +18,10 @@ class GoogleGeocodingClient( ) { private val logger = LoggerFactory.getLogger(GoogleGeocodingClient::class.java) - fun resolveCityState(pinCode: String): String? { - if (apiKey.isBlank()) return null + fun resolveCityState(pinCode: String): GeocodeResult { + if (apiKey.isBlank()) { + return GeocodeResult(null, null, "NO_API_KEY") + } return try { val url = UriComponentsBuilder.fromUriString(baseUrl) .queryParam("components", "postal_code:$pinCode|country:IN") @@ -27,11 +29,12 @@ class GoogleGeocodingClient( .queryParam("key", apiKey) .toUriString() val response = restTemplate.getForEntity(url, String::class.java) - val body = response.body ?: return null - parseCityState(body) + val body = response.body ?: return GeocodeResult(null, null, "EMPTY_BODY") + val parsed = parseCityState(body) + GeocodeResult(parsed, body, "OK") } catch (ex: Exception) { logger.warn("Geocoding failed: {}", ex.message) - null + GeocodeResult(null, null, "ERROR") } } @@ -67,3 +70,9 @@ class GoogleGeocodingClient( return listOfNotNull(preferredCity, state?.trim()?.ifBlank { null }).joinToString(", ") } } + +data class GeocodeResult( + val resolvedCityState: String?, + val rawResponse: String?, + val status: String? +)