Files
orbit/pulse/model/attempt.go

39 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package model
import (
"time"
core "git.yuntuo.hk/k2safe/orbit/model"
)
// Attempt 表示一次任务执行尝试,保存租约、授权代次与独立结果。
// 对应表 pulse_attempts;这是服务端持久化模型,不直接作为 API 响应。
type Attempt struct {
// Record 包含命名空间、记录标识、并发版本和 UTC 时间。
core.Record
// TaskID 关联的 Pulse 任务标识。
TaskID core.ID `db:"task_id"`
// Epoch 该任务的授权代次,同一任务内唯一且递增。
Epoch uint64 `db:"epoch"`
// SessionID 当前执行归属的 Worker 会话标识。
SessionID core.ID `db:"session_id"`
// TokenDigest 执行秘密令牌的 SHA-256 摘要,不输出原令牌。
TokenDigest core.Digest `db:"token_digest"`
// State 当前执行尝试的状态,不能代替整个任务的状态。
State AttemptState `db:"state"`
// LeaseUntil 已确认的租约截止时间,必须用数据库时间核验。
LeaseUntil time.Time `db:"lease_until"`
// AuthorizedAt 平台允许处理器开始的时间;不能证明业务副作用已经发生;可为空,表示尚未设置该关联或值。
AuthorizedAt *time.Time `db:"authorized_at"`
// EndedAt 本次尝试结束时间;尚未结束时为空。
EndedAt *time.Time `db:"ended_at"`
// ErrorCode 稳定错误分类,供恢复策略判断;不得写入敏感原始错误;可为空,表示尚未设置该关联或值。
ErrorCode *string `db:"error_code"`
// Result 已保存的结果或结果引用 JSON;未取得结果时为空。
Result core.JSON `db:"result"`
// ResultDigest 结果语义摘要,用于识别确认重报与冲突结果;可为空,表示尚未设置该关联或值。
ResultDigest *core.Digest `db:"result_digest"`
}
func (Attempt) TableName() string { return "pulse_attempts" }