package com.gzzn.omms.msgexchange.domain /** * ACMA-8 MSG_EVENT(统一投递事件 / outbox)。 * TARGET 阶段化:KAFKA:msg、KAFKA:schd 自阶段 A;ES:flight_hts、REDIS:flightInfo 仅阶段 B 投影期。 */ object Targets { const val KAFKA_MSG = "KAFKA:msg" const val KAFKA_SCHD = "KAFKA:schd" const val ES_FLIGHT_HTS = "ES:flight_hts" const val REDIS_FLIGHT_INFO = "REDIS:flightInfo" /** 阶段 A 投递目标(仅 Kafka)——I5:Delivery 阶段 A 不写 Redis。 */ val phaseA: List = listOf(KAFKA_MSG, KAFKA_SCHD) /** 阶段 B 追加投影目标。 */ val phaseB: List = phaseA + listOf(ES_FLIGHT_HTS, REDIS_FLIGHT_INFO) } enum class EventStatus { PENDING, SENT, DEAD } data class MsgEvent( val eventId: Long? = null, val target: String, val partitionKey: String? = null, // schd 事件恒为 FLID(v4 显式声明) 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(), )