feat: establish Orbit models, migrations and development baseline

This commit is contained in:
2026-09-17 07:04:21 +08:00
commit 4f2935e36f
84 changed files with 4915 additions and 0 deletions

38
pulse/model/attempt.go Normal file
View File

@@ -0,0 +1,38 @@
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" }