...
This commit is contained in:
@@ -1,9 +1,42 @@
|
||||
package util
|
||||
|
||||
import network.KisTradeService
|
||||
import java.time.LocalTime
|
||||
import java.time.ZoneId
|
||||
|
||||
object MarketUtil {
|
||||
private var isHolidayCached: Boolean? = null // 하루 한 번만 체크하기 위한 캐시
|
||||
|
||||
suspend fun canTradeToday(): Boolean {
|
||||
val seoulZone = java.time.ZoneId.of("Asia/Seoul")
|
||||
val now = java.time.ZonedDateTime.now(seoulZone)
|
||||
val todayStr = now.format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"))
|
||||
|
||||
// 1. 주말 체크
|
||||
val dayOfWeek = now.dayOfWeek.value
|
||||
if (dayOfWeek >= 6) return false
|
||||
// 1. 주말 체크 (토, 일)
|
||||
val cachedHoliday = DatabaseFactory.getHoliday(todayStr)
|
||||
if (cachedHoliday != null) {
|
||||
println("📂 [DB Cache] 오늘($todayStr)의 휴장 여부를 DB에서 로드했습니다: ${if(cachedHoliday) "휴장" else "영업일"}")
|
||||
return !cachedHoliday
|
||||
}
|
||||
|
||||
// 3. DB에 없으면 API 호출
|
||||
return try {
|
||||
val result = KisTradeService.fetchIsHoliday(todayStr)
|
||||
val isHoliday = result.getOrDefault(true)
|
||||
|
||||
// 결과를 DB에 저장하여 다음 실행 시 재사용
|
||||
DatabaseFactory.saveHoliday(todayStr, isHoliday)
|
||||
|
||||
println("🌐 [API Call] 오늘($todayStr)의 휴장 여부를 새로 조회하여 DB에 저장했습니다.")
|
||||
!isHoliday
|
||||
} catch (e: Exception) {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
fun isKoreanMarketOpen(): Boolean {
|
||||
// 한국 시간대 기준 현재 시간 가져오기
|
||||
val now = LocalTime.now(ZoneId.of("Asia/Seoul"))
|
||||
|
||||
Reference in New Issue
Block a user