package outbox import "time" // Record 是业务数据库中的待发命令;只确认平台受理,不能表示业务执行成功。 type Record struct { NamespaceID string // NamespaceID 固定目标命名空间,换凭据不能改变归属。 QueueID string // QueueID 固定目标队列,发送前通过当前凭据核对归属。 OperationID string // OperationID 调用方持久化的业务操作ID,同命名空间内唯一。 IdempotencyKey string // IdempotencyKey 由操作ID派生的固定提交键,重报禁止换键。 RequestJSON []byte // RequestJSON 冻结的任务提交正文,保留数字精度,不含凭据。 RequestDigest []byte // RequestDigest 冻结正文的SHA256,发送前重新校验,非平台语义摘要。 State string // State PENDING待发、SENDING领取中、ACCEPTED已受理、REVIEW需核查。 SendCount uint32 // SendCount 持久化领取次数,包含领取后未发HTTP即退出的次数,上限100。 LeaseEpoch uint64 // LeaseEpoch 每次领取递增;旧代次不能更新新代次的本地结果。 WakeAt *time.Time // WakeAt PENDING的下次领取时间或SENDING的租约期限;终结状态为空,UTC微秒。 SendDeadlineAt time.Time // SendDeadlineAt 首次入库后24小时停止新发送,短于平台90天幂等窗口。 LastCode string // LastCode 最近一次稳定分类,不保存HTTP错误正文、凭据或业务秘密。 TaskID *string // TaskID 仅ACCEPTED记录平台任务ID,其余状态为空。 ReceiptJSON []byte // ReceiptJSON 仅ACCEPTED保存原受理回执;不是当前执行状态。 CreatedAt time.Time // CreatedAt 业务事务首次提交命令的UTC时间,微秒精度。 UpdatedAt time.Time // UpdatedAt 最近状态变化的UTC时间,不能替代租约代次。 }