From fbe9e922f8241c13add24ed8551d08bd449726e8 Mon Sep 17 00:00:00 2001 From: hy001 Date: Sat, 9 May 2026 16:02:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=BA=A6=E4=BD=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/service/taskcenter/event.go | 14 +++++++++----- internal/service/taskcenter/types.go | 5 +++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/internal/service/taskcenter/event.go b/internal/service/taskcenter/event.go index e2a9ff9..c734fb3 100644 --- a/internal/service/taskcenter/event.go +++ b/internal/service/taskcenter/event.go @@ -50,7 +50,7 @@ func (s *Service) ReceiveEvent(ctx context.Context, req EventRequest) (*EventRes return nil, NewAppError(http.StatusBadRequest, "invalid_event_type", "eventType is required") } if !isAllowedConditionType(eventType) { - return &EventResponse{Processed: false, Updated: 0}, nil + return &EventResponse{Processed: false, Updated: 0, Reason: "unsupported_condition_type"}, nil } userID := req.UserID.Int64() if userID <= 0 { @@ -67,7 +67,7 @@ func (s *Service) ReceiveEvent(ctx context.Context, req EventRequest) (*EventRes return nil, err } if existingCount > 0 { - return &EventResponse{Processed: false, Updated: 0}, nil + return &EventResponse{Processed: false, Updated: 0, Reason: "duplicate_event"}, nil } bundle, err := s.loadEnabledBundle(ctx, sysOrigin) @@ -75,7 +75,7 @@ func (s *Service) ReceiveEvent(ctx context.Context, req EventRequest) (*EventRes return nil, err } if bundle == nil { - return &EventResponse{Processed: false, Updated: 0}, nil + return &EventResponse{Processed: false, Updated: 0, Reason: "task_center_disabled"}, nil } matchedTasks := make([]model.TaskCenterTaskConfig, 0) @@ -85,7 +85,7 @@ func (s *Service) ReceiveEvent(ctx context.Context, req EventRequest) (*EventRes } } if len(matchedTasks) == 0 { - return &EventResponse{Processed: false, Updated: 0}, nil + return &EventResponse{Processed: false, Updated: 0, Reason: "no_matched_task"}, nil } occurredAt := parseOccurredAt(req.OccurredAt, time.Now()) @@ -160,7 +160,11 @@ func (s *Service) ReceiveEvent(ctx context.Context, req EventRequest) (*EventRes return nil, err } - return &EventResponse{Processed: updated > 0, Updated: updated}, nil + reason := "" + if updated == 0 { + reason = "no_updated_task" + } + return &EventResponse{Processed: updated > 0, Updated: updated, Reason: reason}, nil } func (s *Service) loadOrCreateProgressTx(tx *gorm.DB, sysOrigin string, userID int64, task model.TaskCenterTaskConfig, cycleKey string) (model.TaskCenterUserProgress, error) { diff --git a/internal/service/taskcenter/types.go b/internal/service/taskcenter/types.go index 32ebd9d..5ef9f8b 100644 --- a/internal/service/taskcenter/types.go +++ b/internal/service/taskcenter/types.go @@ -193,8 +193,9 @@ type EventRequest struct { } type EventResponse struct { - Processed bool `json:"processed"` - Updated int `json:"updated"` + Processed bool `json:"processed"` + Updated int `json:"updated"` + Reason string `json:"reason,omitempty"` } type PageResponse[T any] struct {