41 lines
1.9 KiB
Go
41 lines
1.9 KiB
Go
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"`
|
||
// Retryable Worker 对明确失败声明可安全重试;只用于 FAILED,不证明未知效果安全。
|
||
Retryable bool `db:"retryable"`
|
||
// Result 已保存的结果或结果引用 JSON;未取得结果时为空。
|
||
Result core.JSON `db:"result"`
|
||
// ResultDigest 结果语义摘要,用于识别确认重报与冲突结果;可为空,表示尚未设置该关联或值。
|
||
ResultDigest *core.Digest `db:"result_digest"`
|
||
}
|
||
|
||
func (Attempt) TableName() string { return "pulse_attempts" }
|