Skip to content

Commit fa0f67d

Browse files
JIWONKIMSclaude
andcommitted
feat(be): weather 로직 분리 중간 커밋
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 249bba9 commit fa0f67d

File tree

14 files changed

+354
-547
lines changed

14 files changed

+354
-547
lines changed

gradlew

100644100755
File mode changed.

src/main/kotlin/com/back/koreaTravelGuide/domain/ai/aiChat/controller/ChatController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.back.koreaTravelGuide.domain.ai.aiChat.controller
22

33
// TODO: 채팅 컨트롤러 - AI 채팅 API 및 SSE 스트리밍 엔드포인트 제공
44
import com.back.koreaTravelGuide.domain.ai.aiChat.tool.WeatherTool
5-
import com.back.koreaTravelGuide.domain.ai.weather.dto.WeatherResponse
5+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.WeatherResponse
66
import org.springframework.ai.chat.client.ChatClient
77
import org.springframework.http.MediaType
88
import org.springframework.web.bind.annotation.GetMapping

src/main/kotlin/com/back/koreaTravelGuide/domain/ai/aiChat/tool/WeatherTool.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.back.koreaTravelGuide.domain.ai.aiChat.tool
22

33
// TODO: AI 날씨 도구 - Spring AI @Tool 어노테이션으로 AI가 호출할 수 있는 날씨 기능
4-
import com.back.koreaTravelGuide.domain.ai.weather.dto.MidTermMetricsResult
5-
import com.back.koreaTravelGuide.domain.ai.weather.dto.MidTermNarrativeResult
6-
import com.back.koreaTravelGuide.domain.ai.weather.dto.WeatherResponse
4+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.MidTermMetricsResult
5+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.MidTermNarrativeResult
6+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.WeatherResponse
77
import com.back.koreaTravelGuide.domain.ai.weather.service.WeatherService
88
import org.springframework.ai.tool.annotation.Tool
99
import org.springframework.ai.tool.annotation.ToolParam

src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/client/WeatherApiClient.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.back.koreaTravelGuide.domain.ai.weather.client
22

33
// TODO: 기상청 API 클라이언트 - HTTP 요청으로 날씨 데이터 조회 및 JSON 파싱
4-
import com.back.koreaTravelGuide.domain.ai.weather.dto.PrecipitationData
5-
import com.back.koreaTravelGuide.domain.ai.weather.dto.PrecipitationInfo
6-
import com.back.koreaTravelGuide.domain.ai.weather.dto.TemperatureData
7-
import com.back.koreaTravelGuide.domain.ai.weather.dto.TemperatureInfo
4+
import com.back.koreaTravelGuide.domain.ai.weather.dto.TemperatureDto
5+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.PrecipitationData
6+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.PrecipitationInfo
7+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.TemperatureData
8+
import com.back.koreaTravelGuide.domain.ai.weather.dto.remove.TemperatureInfo
89
import org.springframework.beans.factory.annotation.Value
910
import org.springframework.stereotype.Component
1011
import org.springframework.web.client.RestTemplate
@@ -50,7 +51,7 @@ class WeatherApiClient(
5051
fun fetchTemperature(
5152
regionId: String,
5253
baseTime: String,
53-
): TemperatureData? {
54+
): TemperatureDto? {
5455
val url = "$apiUrl/getMidTa?serviceKey=$serviceKey&numOfRows=10&pageNo=1&regId=$regionId&tmFc=$baseTime&dataType=JSON"
5556

5657
println("🌡️ 중기기온조회 API 호출: $url")
@@ -60,10 +61,10 @@ class WeatherApiClient(
6061
val jsonResponse = restTemplate.getForObject(url, Map::class.java) as? Map<String, Any>
6162
println("📡 중기기온 JSON 응답 수신")
6263

63-
jsonResponse?.let { parseTemperatureDataFromJson(it) } ?: TemperatureData()
64+
jsonResponse?.let { parseTemperatureDataFromJson(it) } ?: TemperatureDto()
6465
} catch (e: Exception) {
6566
println("❌ 중기기온조회 JSON API 오류: ${e.message}")
66-
TemperatureData()
67+
TemperatureDto()
6768
}
6869
}
6970

src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/InternalData.kt

Lines changed: 0 additions & 93 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.back.koreaTravelGuide.domain.ai.weather.dto
2+
3+
data class MidForecastDto(
4+
val regionCode: String,
5+
val baseTime: String,
6+
val precipitation: String,
7+
val temperature: String,
8+
val maritime: String,
9+
val variability: String,
10+
)

src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/MidTermForecastDtos.kt

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.back.koreaTravelGuide.domain.ai.weather.dto
2+
3+
data class TemperatureAndLandForecastDto()
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.back.koreaTravelGuide.domain.ai.weather.dto
2+
3+
import kotlin.text.set
4+
5+
// TODO: 날씨 내부 데이터 구조 - 기상청 API 응답 데이터 매핑용 내부 클래스들
6+
@Suppress("unused") // JSON 직렬화를 위해 필요
7+
data class TemperatureDto(
8+
private val days: MutableMap<Int, TemperatureInfo?> = mutableMapOf(),
9+
) {
10+
fun setDay(
11+
day: Int,
12+
info: TemperatureInfo?,
13+
) {
14+
days[day] set info
15+
}
16+
17+
fun getDay(day: Int): TemperatureInfo? = days[day]
18+
19+
var day4: TemperatureInfo? get() = days[4]
20+
set(value) {
21+
days[4] set value
22+
}
23+
var day5: TemperatureInfo? get() = days[5]
24+
set(value) {
25+
days[5] set value
26+
}
27+
var day6: TemperatureInfo? get() = days[6]
28+
set(value) {
29+
days[6] set value
30+
}
31+
var day7: TemperatureInfo? get() = days[7]
32+
set(value) {
33+
days[7] set value
34+
}
35+
var day8: TemperatureInfo? get() = days[8]
36+
set(value) {
37+
days[8] set value
38+
}
39+
var day9: TemperatureInfo? get() = days[9]
40+
set(value) {
41+
days[9] set value
42+
}
43+
var day10: TemperatureInfo? get() = days[10]
44+
set(value) {
45+
days[10] set value
46+
}
47+
}
48+
49+
data class TemperatureInfo(
50+
val minTemp: Int?,
51+
val maxTemp: Int?,
52+
val minTempRange: String?,
53+
val maxTempRange: String?,
54+
)

src/main/kotlin/com/back/koreaTravelGuide/domain/ai/weather/dto/WeatherResponse.kt

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)