From 66ab36c88c4b4fef76d4b417e86222f2f0a107f0 Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Mon, 14 Sep 2026 16:49:35 +0800 Subject: [PATCH] feat: expose image search snapshot in task payload (#278) --- server/app/goauto/models/schema.go | 1 + server/app/goauto/task/service.go | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/server/app/goauto/models/schema.go b/server/app/goauto/models/schema.go index 28bbbc8..67f8f26 100644 --- a/server/app/goauto/models/schema.go +++ b/server/app/goauto/models/schema.go @@ -189,6 +189,7 @@ type CollectionTask struct { URLSnapshot string `json:"urlSnapshot" gorm:"type:text;not null"` GoodsIDSnapshot string `json:"goodsIdSnapshot" gorm:"size:32;not null;index"` RuleSnapshot string `json:"ruleSnapshot" gorm:"type:text;not null"` + ImageSearchSnapshot *string `json:"imageSearch,omitempty" gorm:"type:text"` AttemptNumber int `json:"attemptNumber" gorm:"not null;default:1;check:ck_collection_task_attempt_number,attempt_number >= 1"` LeaseExpiresAt *time.Time `json:"leaseExpiresAt" gorm:"index"` LeaseVersion uint64 `json:"leaseVersion" gorm:"not null;default:0"` diff --git a/server/app/goauto/task/service.go b/server/app/goauto/task/service.go index 7b26a8c..358388e 100644 --- a/server/app/goauto/task/service.go +++ b/server/app/goauto/task/service.go @@ -60,6 +60,7 @@ type TaskPayload struct { ReplacementOriginType string `json:"replacementOriginType,omitempty"` RuleID uint64 `json:"ruleId"` RuleSnapshot json.RawMessage `json:"ruleSnapshot"` + ImageSearch json.RawMessage `json:"imageSearch,omitempty"` TimeoutSeconds int `json:"timeoutSeconds"` LeaseExpiresAt *time.Time `json:"leaseExpiresAt,omitempty"` LeaseVersion uint64 `json:"leaseVersion"` @@ -286,6 +287,13 @@ func (service *Service) payload(record models.CollectionTask, replayed bool) (Ta if !json.Valid(rule) { return TaskPayload{}, internalError(errors.New("stored rule snapshot is invalid JSON")) } + var imageSearch json.RawMessage + if record.ImageSearchSnapshot != nil && *record.ImageSearchSnapshot != "" { + imageSearch = json.RawMessage(*record.ImageSearchSnapshot) + if !json.Valid(imageSearch) { + return TaskPayload{}, internalError(errors.New("stored image search snapshot is invalid JSON")) + } + } timeout := service.TaskTimeout if timeout <= 0 { timeout = DefaultTaskTimeout @@ -295,6 +303,7 @@ func (service *Service) payload(record models.CollectionTask, replayed bool) (Ta URLSnapshot: record.URLSnapshot, GoodsIDSnapshot: record.GoodsIDSnapshot, Source: record.Source, ReplacementOriginType: pointerValue(record.ReplacementOriginType), RuleID: record.RuleID, RuleSnapshot: rule, TimeoutSeconds: timeout, + ImageSearch: imageSearch, LeaseExpiresAt: record.LeaseExpiresAt, LeaseVersion: record.LeaseVersion, Status: record.Status, Replayed: replayed, }, nil