package kr.or.bok.rtgs.common

/** Kafka 토픽 이름 — 입구/저널/결과. 전 센터 공유 단일 클러스터(순서 공유). */
object Topics {
    const val INBOUND = "rtgs.inbound"   // Chanel -> Sequencer (접수 원시 요청)
    const val JOURNAL = "rtgs.journal"   // Sequencer -> 전 센터 (전역순번 저널, pacs.008 계열)
    const val RESULT = "rtgs.result"     // Hermes -> Prada (결제결과, pacs.002 계열)
    const val NOTIFY = "rtgs.notify"     // Prada(완결) -> Chanel (결과통보 트리거, 접수센터가 신청/수취기관 앞 송부)
}

/** Hazelcast IMap 이름 — 인메모리 코어 연산(센터별 클러스터). */
object Maps {
    const val ACCOUNTS = "accounts"      // 참가기관 당좌계좌 잔액(코어 연산 캐시)
    const val TRANSFERS = "transfers"    // 거래 상태(BMI -> 상태/금액), 멱등 중복체크
}

/** PostgreSQL 원장 테이블 — 권위 저장소(강한 일관성). */
object Tables {
    const val ACCOUNT = "account"        // 참가기관 당좌계좌 권위 잔액
    const val TRANSFER = "transfer"      // 거래 원장(상태/금액/순번)
    const val JOURNAL = "journal_log"    // 선저널(write-ahead) 기록
}

object Msg {
    // 정식 ISO20022 공식 XSD 버전과 일치(2026-07-10 전환).
    const val PACS008 = "pacs.008.001.08"
    const val PACS002 = "pacs.002.001.10"
    const val BAH = "head.001.001.03"
}
