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"` // PayloadVersion 固定信号契约版本;为空仅表示不能参与新等待匹配的历史记录。 PayloadVersion *string `db:"payload_version"` // TargetStepKey 信号目标步骤键,用于早到信号的后续匹配。 TargetStepKey string `db:"target_step_key"` // TargetActivationSequence 目标激活序号,早到首轮为1;为空仅表示身份未核实的历史信号。 TargetActivationSequence *uint32 `db:"target_activation_sequence"` // CorrelationKey 精确UTF8操作关联,新信号最多512字节,历史兼容764字节,保留尾部空格。 CorrelationKey string `db:"correlation_key"` // Payload 版本化输入或事件内容;仅承载通用 JSON,不解释行业规则。 Payload core.JSON `db:"payload"` // ActorID 经认证的操作主体标识,不能直接信任请求自报值。 ActorID string `db:"actor_id"` // EvidenceRef 可选受控证据引用,最多512个无空白字符;平台不请求该地址。 EvidenceRef *string `db:"evidence_ref"` // State 当前状态;只允许定义的状态转换并配合事务校验。 State SignalState `db:"state"` // Disposition 稳定消费/拒绝分类;PENDING时为空,不记录原始错误或业务参数。 Disposition *string `db:"disposition"` // AcceptedAt 信号可靠受理时间,不能用稍后的消费时间替代。 AcceptedAt time.Time `db:"accepted_at"` // ExpiresAt 过期时间,统一 UTC;到期后的行为由对应资源策略决定。 ExpiresAt time.Time `db:"expires_at"` // AvailableAt 未匹配信号下次到期检查时间;数据库故障只推迟检查,不延长原受理截止。 AvailableAt time.Time `db:"available_at"` // ConsumedWaitID 消费该信号的等待记录;尚未消费时为空。 ConsumedWaitID *core.ID `db:"consumed_wait_id"` } func (Signal) TableName() string { return "weave_signals" }