package kr.or.bok.rtgs.common

/**
 * 저널 엔트리 — 순번기(Sequencer)가 전역순번을 부여해 발행하는 명단의 한 줄.
 * 3개 센터가 이 저널을 같은 순서(globalSeq)로 결정론적으로 재생한다.
 *
 * 결정론적 재생의 함정 대응(복원력방안 2.3-부속 전제③): 처리 로직에 필요한
 * "센터마다 달라질 수 있는 값"(수신시각 등)은 순번기가 여기에 미리 박아 배포한다.
 * 따라서 각 센터는 seqEpochMillis 등 저널에 실린 값만 사용하고, 자체 시각/난수를 쓰지 않는다.
 */
data class JournalEntry(
    val globalSeq: Long,        // 전역순번 (처리 순서의 권위)
    val seqEpochMillis: Long,   // 순번기가 확정한 결정론적 수신시각(epoch ms)
    val originCenter: String,   // 최초 접수 센터 (결과통보 책임 센터)
    val core: CoreMessage,
)
