diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/WeatherApiClient.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/WeatherApiClient.kt index 1b078fa..c180c4e 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/WeatherApiClient.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/WeatherApiClient.kt @@ -72,7 +72,7 @@ class WeatherApiClient( fun fetchLandForecast( regionId: String, baseTime: String, - ): PrecipitationData? { + ): LandForecastData? { val url = "$apiUrl/getMidLandFcst?serviceKey=$serviceKey&numOfRows=10&pageNo=1®Id=$regionId&tmFc=$baseTime&dataType=JSON" println("๐ŸŒง๏ธ ์ค‘๊ธฐ์œก์ƒ์˜ˆ๋ณด์กฐํšŒ API ํ˜ธ์ถœ: $url") @@ -82,10 +82,10 @@ class WeatherApiClient( val jsonResponse = restTemplate.getForObject(url, Map::class.java) as? Map println("๐Ÿ“ก ์ค‘๊ธฐ์œก์ƒ์˜ˆ๋ณด JSON ์‘๋‹ต ์ˆ˜์‹ ") - jsonResponse?.let { dataParser.parsePrecipitationDataFromJson(it) } ?: PrecipitationData() + jsonResponse?.let { dataParser.parsePrecipitationDataFromJson(it) } ?: LandForecastData() } catch (e: Exception) { println("โŒ ์ค‘๊ธฐ์œก์ƒ์˜ˆ๋ณด์กฐํšŒ JSON API ์˜ค๋ฅ˜: ${e.message}") - PrecipitationData() + LandForecastData() } } } diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/parser/DataParser.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/parser/DataParser.kt index 7ca68fe..cc61599 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/parser/DataParser.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/parser/DataParser.kt @@ -1,5 +1,7 @@ package com.back.koreaTravelGuide.domain.ai.weather.client.parser +import com.back.koreaTravelGuide.domain.ai.weather.dto.LandForecastData +import com.back.koreaTravelGuide.domain.ai.weather.dto.LandForecastInfo import com.back.koreaTravelGuide.domain.ai.weather.dto.TemperatureData import com.back.koreaTravelGuide.domain.ai.weather.dto.TemperatureInfo import org.springframework.stereotype.Component @@ -36,7 +38,7 @@ class DataParser { // ๊ธฐ์˜จ ๋ฐ์ดํ„ฐ JSON ํŒŒ์‹ฑ fun parseTemperatureDataFromJson(jsonResponse: Map): TemperatureData { - val TemperatureData = TemperatureData() + val temperatureData = TemperatureData() for (day in 4..10) { val minTemp = (extractJsonValue(jsonResponse, "response.body.items.item[0].taMin$day") as? Number)?.toInt() @@ -55,16 +57,16 @@ class DataParser { maxTempRange = if (maxTempLow != null && maxTempHigh != null) "$maxTempLow~$maxTempHighโ„ƒ" else null, ) - TemperatureData.setDay(day, tempInfo) + temperatureData.setDay(day, tempInfo) } } - return TemperatureData + return temperatureData } // ๊ฐ•์ˆ˜ ํ™•๋ฅ  ๋ฐ์ดํ„ฐ JSON ํŒŒ์‹ฑ - fun parsePrecipitationDataFromJson(jsonResponse: Map): PrecipitationData { - val precipitationData = PrecipitationData() + fun parsePrecipitationDataFromJson(jsonResponse: Map): LandForecastData { + val landForecastData = LandForecastData() for (day in 4..10) { if (day <= 7) { @@ -76,14 +78,14 @@ class DataParser { if (amRain != null || pmRain != null || !amWeather.isNullOrBlank() || !pmWeather.isNullOrBlank()) { val precipInfo = - PrecipitationInfo( + LandForecastInfo( amRainPercent = amRain, pmRainPercent = pmRain, amWeather = amWeather, pmWeather = pmWeather, ) - precipitationData.setDay(day, precipInfo) + landForecastData.setDay(day, precipInfo) } } else { // 8~10์ผ: ํ†ตํ•ฉ (์˜ค์ „/์˜คํ›„ ๊ตฌ๋ถ„ ์—†์Œ) @@ -92,18 +94,18 @@ class DataParser { if (rainPercent != null || !weather.isNullOrBlank()) { val precipInfo = - PrecipitationInfo( + LandForecastInfo( amRainPercent = rainPercent, pmRainPercent = null, amWeather = weather, pmWeather = null, ) - precipitationData.setDay(day, precipInfo) + landForecastData.setDay(day, precipInfo) } } } - return precipitationData + return landForecastData } } diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/LandForecastData.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/LandForecastData.kt index fc2bb78..c445dd0 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/LandForecastData.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/LandForecastData.kt @@ -1,3 +1,51 @@ package com.back.koreaTravelGuide.domain.ai.weather.dto -data class LandForecastData() +@Suppress("unused") // JSON ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•ด ํ•„์š” +class LandForecastData( + private val days: MutableMap = mutableMapOf(), +) { + fun setDay( + day: Int, + info: LandForecastInfo?, + ) { + days[day] = info + } + + fun getDay(day: Int): LandForecastInfo? = days[day] + + var day4: LandForecastInfo? get() = days[4] + set(value) { + days[4] = value + } + var day5: LandForecastInfo? get() = days[5] + set(value) { + days[5] = value + } + var day6: LandForecastInfo? get() = days[6] + set(value) { + days[6] = value + } + var day7: LandForecastInfo? get() = days[7] + set(value) { + days[7] = value + } + var day8: LandForecastInfo? get() = days[8] + set(value) { + days[8] = value + } + var day9: LandForecastInfo? get() = days[9] + set(value) { + days[9] = value + } + var day10: LandForecastInfo? get() = days[10] + set(value) { + days[10] = value + } +} + +data class LandForecastInfo( + val amRainPercent: Int?, + val pmRainPercent: Int?, + val amWeather: String?, + val pmWeather: String?, +) diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/TemperatureData.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/TemperatureData.kt index 56a96c9..3b1531b 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/TemperatureData.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/TemperatureData.kt @@ -1,48 +1,48 @@ package com.back.koreaTravelGuide.domain.ai.weather.dto -import kotlin.text.set - // TODO: ๋‚ ์”จ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ - ๊ธฐ์ƒ์ฒญ API ์‘๋‹ต ๋ฐ์ดํ„ฐ ๋งคํ•‘์šฉ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋“ค @Suppress("unused") // JSON ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•ด ํ•„์š” -data class TemperatureData( +class TemperatureData( private val days: MutableMap = mutableMapOf(), ) { fun setDay( day: Int, info: TemperatureInfo?, ) { - days[day] set info + days[day] = info } fun getDay(day: Int): TemperatureInfo? = days[day] - var day4: TemperatureInfo? get() = days[4] + var day4: TemperatureInfo? + get() = days[4] set(value) { - days[4] set value + days[4] = value } + var day5: TemperatureInfo? get() = days[5] set(value) { - days[5] set value + days[5] = value } var day6: TemperatureInfo? get() = days[6] set(value) { - days[6] set value + days[6] = value } var day7: TemperatureInfo? get() = days[7] set(value) { - days[7] set value + days[7] = value } var day8: TemperatureInfo? get() = days[8] set(value) { - days[8] set value + days[8] = value } var day9: TemperatureInfo? get() = days[9] set(value) { - days[9] set value + days[9] = value } var day10: TemperatureInfo? get() = days[10] set(value) { - days[10] set value + days[10] = value } }