package model import ( "time" core "git.yuntuo.hk/k2safe/orbit/model" ) // Signal 表示已可靠受理的外部信号,受理与消费是两个阶段。 // 对应表 weave_signals;这是服务端持久化模型,不直接作为 API 响应。 type Signal struct { // Record 包含命名空间、记录标识、并发版本和 UTC 时间。 core.Record // WorkflowID 所属流程实例标识。 WorkflowID core.ID `db:"workflow_id"` // KeyDigest 稳定幂等键或资源键的 SHA-256 摘要。 KeyDigest core.Digest `db:"key_digest"` // RequestDigest 规范化请求语义的 SHA-256 摘要,用于识别同键不同内容。 RequestDigest core.Digest `db:"request_digest"` // Type 事件或信号的稳定类型标识。 Type string `db:"type"` // TargetStepKey 信号目标步骤键,用于早到信号的后续匹配。 TargetStepKey string `db:"target_step_key"` // CorrelationKey 外部业务操作关联键,防止旧信号误用于新工作。 CorrelationKey string `db:"correlation_key"` // Payload 版本化输入或事件内容;仅承载通用 JSON,不解释行业规则。 Payload core.JSON `db:"payload"` // ActorID 经认证的操作主体标识,不能直接信任请求自报值。 ActorID string `db:"actor_id"` // State 当前状态;只允许定义的状态转换并配合事务校验。 State SignalState `db:"state"` // AcceptedAt 信号可靠受理时间,不能用稍后的消费时间替代。 AcceptedAt time.Time `db:"accepted_at"` // ExpiresAt 过期时间,统一 UTC;到期后的行为由对应资源策略决定。 ExpiresAt time.Time `db:"expires_at"` // ConsumedWaitID 消费该信号的等待记录;尚未消费时为空。 ConsumedWaitID *core.ID `db:"consumed_wait_id"` } func (Signal) TableName() string { return "weave_signals" }