atrade/src/main/kotlin/model/AppConfig.kt
2026-02-04 15:32:05 +09:00

59 lines
1.7 KiB
Kotlin

package model
import java.time.LocalDateTime
const val feesAndTaxRate = 0.33
const val minimumNetProfit = 0.4
const val buyWeight = 2.0
data class AppConfig(
// [DB 저장 데이터]
// 실전 3종
val realAppKey: String = "",
val realSecretKey: String = "",
val realAccountNo: String = "",
// 모의 3종
val vtsAppKey: String = "",
val vtsSecretKey: String = "",
val vtsAccountNo: String = "",
// [세션 데이터 - 메모리에서만 관리]
var marketToken: String = "",
var marketTokenExpiredAt: LocalDateTime? = null, // 만료 시간 추가
var tradeToken: String = "",
var tradeTokenExpiredAt: LocalDateTime? = null,
val htsId: String = "",
var websocketToken: String = "",
val isSimulation: Boolean = true,
val modelPath: String = "",
val embedModelPath: String = "") {
val accountNo : String
get() {
return if (isSimulation) vtsAccountNo else realAccountNo
}
}
// [신규] 전역에서 참조할 단일 세션 객체
object KisSession {
var config: AppConfig = AppConfig()
fun getWebSocketKey() = config.websocketToken
// 시장 데이터 토큰 유효성 검사 (만료 5분 전부터는 유효하지 않은 것으로 간주)
fun isMarketTokenValid(): Boolean {
return config.marketToken.isNotEmpty() &&
config.marketTokenExpiredAt?.isAfter(LocalDateTime.now().plusMinutes(5)) ?: false
}
// 매매용 토큰 유효성 검사
fun isTradeTokenValid(): Boolean {
return config.tradeToken.isNotEmpty() &&
config.tradeTokenExpiredAt?.isAfter(LocalDateTime.now().plusMinutes(5)) ?: false
}
}