atrade/src/main/kotlin/model/StockModels.kt
2026-01-10 18:16:50 +09:00

73 lines
2.3 KiB
Kotlin

package model
import kotlinx.serialization.Serializable
@Serializable
data class StockBalanceResponse(
val rt_cd: String = "",
val msg1: String = "",
val output1: List<StockHolding> = emptyList(),
val output2: List<BalanceSummary> = emptyList()
)
@Serializable
data class StockHolding(
val pdno: String = "", // 상품번호
val prdt_name: String = "", // 상품명
val hldg_qty: String = "0", // 보유수량
val pchs_avg_pric: String = "0", // 매입평균가
val prpr: String = "0", // 현재가
val evlu_pfls_rt: String = "0.0", // 평가손익률
val evlu_amt: String = "0" // 평가금액
)
@Serializable
data class BalanceSummary(
val tot_evlu_amt: String = "0", // 총 평가금액
val evlu_pfls_rt: String = "0.0", // 총 수익률 (에러 발생 지점: 기본값 추가로 해결)
val asst_icrt: String = "0.0", // 일부 환경에서 수익률 필드명
val nass_amt: String = "0" // 순자산 금액
)
@Serializable
data class RankingResponse(
val output: List<RankingStock> = emptyList()
)
enum class RankingType(val code: String, val title: String) {
RISE("0", "상승"),
FALL("1", "하락"),
VOLUME("2", "거래량"),
AMOUNT("3", "금액"),
OVERTIME("4", "시간외"), // 웹 소스의 시간외 상승 TR 연동
SHORT_HOT("5", "단기추천") // 단기 과열 및 추천 종목
}
@Serializable
data class RankingStock(
val hts_kor_alph_nm: String = "", // 종목명
val mkrtc_objt_iscd: String = "", // 종목코드
val stck_prpr: String = "0", // 현재가
val prdy_ctrt: String = "0.0" // 등락률
)
@Serializable
data class OverseasRankingResponse(
val output: List<OverseasRankingStock> = emptyList()
)
@Serializable
data class OverseasRankingStock(
val hts_kor_alph_nm: String, // 종목명
val mkrtc_objt_iscd: String, // 종목코드 (Ticker)
val last: String, // 현재가
val diff: String, // 전일대비
val rate: String // 등락률
) {
// 국내용 RankingStock과 호환되도록 변환 함수 추가
fun toRankingStock() = RankingStock(
hts_kor_alph_nm = hts_kor_alph_nm,
mkrtc_objt_iscd = mkrtc_objt_iscd,
stck_prpr = last,
prdy_ctrt = rate
)
}