package com.gzzn.omms.msgexchange.domain /** MSG_EVENT 事件形态(§7.3)。 */ enum class EventType { UPSERT, TOMBSTONE } /** MSG_EVENT 投递状态(outbox 状态机)。 */ enum class EventStatus { PENDING, SENT, DEAD } /** * MSG_EVENT(outbox,§3.2):状态、变更、删除通知。 * KAFKA_SCHD 整态 + KAFKA_MSG 变化通知;TOMBSTONE 仅在 ACTIVE→DELETED 时 * 与删除同事务登记(§7.3),投递失败持续重试。 */ data class MsgEvent( val eventId: Long? = null, val target: String, val partitionKey: String, // 恒为 FLID val eventType: EventType = EventType.UPSERT, val stateVersion: Long = 0, // 发布时航班版本;Dispatcher 合并同 FLID 未发事件取最新(§7.3) val payloadJson: String, val state: EventStatus = EventStatus.PENDING, val attempts: Int = 0, val nextAttemptAt: java.time.Instant? = null, val errorClass: ErrorClass? = null, val lastError: String? = null, val createdAt: java.time.Instant = java.time.Instant.now(), )