Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.back.koreaTravelGuide.application
package com.back.koreaTravelGuide

// TODO: 메인 애플리케이션 클래스 - 스프링 부트 시작점 및 환경변수 로딩
import io.github.cdimascio.dotenv.dotenv
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ class ChatController(
return emitter
}

// 날씨 API 직접 테스트용 엔드포인트
// 날씨 API 직접 테스트용 엔드포인트
@GetMapping("/weather/test")
fun testWeather(
@RequestParam(required = false) baseTime: String?,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.back.koreaTravelGuide.domain.ai.weather.dto

@Suppress("unused") // JSON 직렬화를 위해 필요
class LandForecastData(
data class LandForecastData(
private val days: MutableMap<Int, LandForecastInfo?> = mutableMapOf(),
) {
fun setDay(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.back.koreaTravelGuide.domain.ai.weather.dto

data class MidForecastDto(
val regionCode: String,
val baseTime: String,
val precipitation: String,
val temperature: String,
val maritime: String,
val variability: String,
val regionCode: String?,
val baseTime: String?,
val precipitation: String?,
val temperature: String?,
val maritime: String?,
val variability: String?,
)
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
package com.back.koreaTravelGuide.domain.ai.weather.dto

data class TemperatureAndLandForecastDto(
val a: String,
val regionCode: String?,
val baseTime: String?,
val minTemp: Int?,
val maxTemp: Int?,
val minTempRange: String?,
val maxTempRange: String?,
val amRainPercent: Int?,
val pmRainPercent: Int?,
val amWeather: String?,
val pmWeather: String?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.back.koreaTravelGuide.domain.ai.weather.dto

// TODO: 날씨 내부 데이터 구조 - 기상청 API 응답 데이터 매핑용 내부 클래스들
@Suppress("unused") // JSON 직렬화를 위해 필요
class TemperatureData(
data class TemperatureData(
private val days: MutableMap<Int, TemperatureInfo?> = mutableMapOf(),
) {
fun setDay(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,49 @@ class DtoParser {
}

fun parseTemperatureAndLandForecast(
regionCode: String,
baseTime: String,
temperatureData: TemperatureData,
landForecastData: LandForecastData,
): TemperatureAndLandForecastDto {
return TemperatureAndLandForecastDto(
"a",
)
): List<TemperatureAndLandForecastDto> {
val resultList = mutableListOf<TemperatureAndLandForecastDto>()

for (i in 4..10) {
val tempInfo = temperatureData.getDay(i)
val landInfo = landForecastData.getDay(i)

if (tempInfo == null || landInfo == null) {
continue
}

val minTemp = tempInfo.minTemp
val maxTemp = tempInfo.maxTemp
val minTempRange = tempInfo.minTempRange
val maxTempRange = tempInfo.maxTempRange

val amRainPercent = landInfo.amRainPercent
val pmRainPercent = landInfo.pmRainPercent
val amWeather = landInfo.amWeather
val pmWeather = landInfo.pmWeather

// 각 날짜별로 필요한 처리를 수행합니다.
val dto =
TemperatureAndLandForecastDto(
regionCode = regionCode,
baseTime = baseTime,
minTemp = minTemp,
maxTemp = maxTemp,
minTempRange = minTempRange,
maxTempRange = maxTempRange,
amRainPercent = amRainPercent,
pmRainPercent = pmRainPercent,
amWeather = amWeather,
pmWeather = pmWeather,
)

resultList.add(dto)
}

return resultList
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ class WeatherService(
fun fetchTemperatureAndLandForecast(
actualRegionCode: String,
actualBaseTime: String,
): TemperatureAndLandForecastDto? {
): List<TemperatureAndLandForecastDto>? {
val tempInfo = weatherApiClient.fetchTemperature(actualRegionCode, actualBaseTime)
val landInfo = weatherApiClient.fetchLandForecast(actualRegionCode, actualBaseTime)

if (tempInfo == null || landInfo == null) return null

return parser.parseTemperatureAndLandForecast(tempInfo, landInfo)
return parser.parseTemperatureAndLandForecast(actualRegionCode, actualBaseTime, tempInfo, landInfo)
}

@CacheEvict(cacheNames = ["weatherMidFore", "weatherTempAndLandFore"], allEntries = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class WeatherServiceCore(
location: String?,
regionCode: String?,
baseTime: String?,
): TemperatureAndLandForecastDto? {
): List<TemperatureAndLandForecastDto>? {
val actualLocation = location ?: "서울"
val actualRegionCode = regionCode ?: tools.getRegionCodeFromLocation(actualLocation)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
package com.back.koreaTravelGuide.application

import com.fasterxml.jackson.databind.ObjectMapper
import io.github.cdimascio.dotenv.dotenv
import org.junit.jupiter.api.BeforeAll
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.back.koreaTravelGuide.domain.ai.tour.client

import com.back.koreaTravelGuide.application.KoreaTravelGuideApplication
import com.back.koreaTravelGuide.KoreaTravelGuideApplication
import com.back.koreaTravelGuide.domain.ai.tour.dto.InternalData
import com.back.koreaTravelGuide.domain.ai.tour.dto.TourResponse
import com.fasterxml.jackson.databind.ObjectMapper
Expand Down