Skip to content

Commit 7a10278

Browse files
authored
feat(webhook): Optimize the event structure (#45)
* feat(webhook): Optimize the event structure * feat(webhook): Optimize the event structure * feat(webhook): Optimize the event structure * feat(webhook): Optimize the event structure
1 parent a83f8cb commit 7a10278

11 files changed

+1337
-780
lines changed

features.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -275,20 +275,20 @@ API 文档:https://open.tapd.cn/document/api-doc/API%E6%96%87%E6%A1%A3/
275275

276276
### webhook
277277

278-
- [ ] 需求/任务/缺陷类
279-
- [ ] `story::create`
280-
- [ ] `story::update`
281-
- [ ] `story::delete`
278+
- [x] 需求/任务/缺陷类
279+
- [x] `story::create`
280+
- [x] `story::update`
281+
- [x] `story::delete`
282282
- [x] `task::create`
283283
- [x] `task::update`
284284
- [x] `task::delete`
285285
- [x] `bug::create`
286286
- [x] `bug::update`
287287
- [x] `bug::delete`
288288
- [ ] 评论类:需求/任务/缺陷
289-
- [ ] `story_comment::add`
290-
- [ ] `story_comment::update`
291-
- [ ] `story_comment::delete`
289+
- [x] `story_comment::add`
290+
- [x] `story_comment::update`
291+
- [x] `story_comment::delete`
292292
- [ ] `task_comment::add`
293293
- [ ] `task_comment::update`
294294
- [ ] `task_comment::delete`

webhook/event_bug.go

+291-291
Large diffs are not rendered by default.

webhook/event_bug_test.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,19 @@ func TestBugEvent_BugUpdateEvent(t *testing.T) {
143143
assert.Equal(t, "", event.OldFixer)
144144
assert.Equal(t, "", event.OldCustomField199)
145145
assert.Equal(t, "", event.OldCustomField200)
146-
assert.Nil(t, event.NewID)
147-
assert.Nil(t, event.NewSecretRootID)
148-
assert.Nil(t, event.NewSid)
149-
assert.Nil(t, event.NewProjectID)
150-
assert.Nil(t, event.NewParentID)
151-
assert.Equal(t, "123222", *event.NewTitle)
152-
assert.Nil(t, event.NewDescription)
153-
assert.Nil(t, event.NewClosed)
154-
assert.Equal(t, "2024-12-30 18:25:09", *event.NewModified)
155-
assert.Nil(t, event.NewLastModify)
156-
assert.Nil(t, event.NewAuditer)
157-
assert.Nil(t, event.NewDe)
158-
assert.Nil(t, event.NewCustomFieldFive)
146+
assert.Empty(t, event.NewID)
147+
assert.Empty(t, event.NewSecretRootID)
148+
assert.Empty(t, event.NewSid)
149+
assert.Empty(t, event.NewProjectID)
150+
assert.Empty(t, event.NewParentID)
151+
assert.Equal(t, "123222", event.NewTitle)
152+
assert.Empty(t, event.NewDescription)
153+
assert.Empty(t, event.NewClosed)
154+
assert.Equal(t, "2024-12-30 18:25:09", event.NewModified)
155+
assert.Empty(t, event.NewLastModify)
156+
assert.Empty(t, event.NewAuditer)
157+
assert.Empty(t, event.NewDe)
158+
assert.Empty(t, event.NewCustomFieldFive)
159159
assert.Equal(t, "title,modified", event.ChangeFields)
160160
}
161161

webhook/event_iteration.go

+96-96
Original file line numberDiff line numberDiff line change
@@ -130,102 +130,102 @@ type IterationUpdateEvent struct {
130130
OldCustomField48 string `json:"old_custom_field_48,omitempty"`
131131
OldCustomField49 string `json:"old_custom_field_49,omitempty"`
132132
OldCustomField50 string `json:"old_custom_field_50,omitempty"`
133-
NewID *string `json:"new_id,omitempty"`
134-
NewSort *string `json:"new_sort,omitempty"`
135-
NewWorkitemTypeID *string `json:"new_workitem_type_id,omitempty"`
136-
NewEntityType *string `json:"new_entity_type,omitempty"`
137-
NewReleaseID *string `json:"new_release_id,omitempty"`
138-
NewWorkspaceID *string `json:"new_workspace_id,omitempty"`
139-
NewPlanAppID *string `json:"new_plan_app_id,omitempty"`
140-
NewName *string `json:"new_name,omitempty"`
141-
NewDescription *string `json:"new_description,omitempty"`
142-
NewMarkdownDescription *string `json:"new_markdown_description,omitempty"`
143-
NewDescriptionType *string `json:"new_description_type,omitempty"`
144-
NewStartDate *string `json:"new_startdate,omitempty"`
145-
NewStories *string `json:"new_stories,omitempty"`
146-
NewEndDate *string `json:"new_enddate,omitempty"`
147-
NewBugs *string `json:"new_bugs,omitempty"`
148-
NewEffortTotalCompleted *string `json:"new_effort_total_completed,omitempty"`
149-
NewEffortTotal *string `json:"new_effort_total,omitempty"`
150-
NewDuration *string `json:"new_duration,omitempty"`
151-
NewVelocity *string `json:"new_velocity,omitempty"`
152-
NewCreator *string `json:"new_creator,omitempty"`
153-
NewModifier *string `json:"new_modifier,omitempty"`
154-
NewColor *string `json:"new_color,omitempty"`
155-
NewIcon *string `json:"new_icon,omitempty"`
156-
NewLine *string `json:"new_line,omitempty"`
157-
NewCreated *string `json:"new_created,omitempty"`
158-
NewModified *string `json:"new_modified,omitempty"`
159-
NewParentID *string `json:"new_parent_id,omitempty"`
160-
NewAncestorID *string `json:"new_ancestor_id,omitempty"`
161-
NewPath *string `json:"new_path,omitempty"`
162-
NewCompleted *string `json:"new_completed,omitempty"`
163-
NewReleaseOwner *string `json:"new_releaseowner,omitempty"`
164-
NewLaunchDate *string `json:"new_launchdate,omitempty"`
165-
NewNotice *string `json:"new_notice,omitempty"`
166-
NewStatus *string `json:"new_status,omitempty"`
167-
NewIsDelay *string `json:"new_isdelay,omitempty"`
168-
NewReleaseName *string `json:"new_releasename,omitempty"`
169-
NewEstimatedPoints *string `json:"new_estimated_points,omitempty"`
170-
NewTemplatedID *string `json:"new_templated_id,omitempty"`
171-
NewIsTop *string `json:"new_is_top,omitempty"`
172-
NewTopTime *string `json:"new_top_time,omitempty"`
173-
NewDashboardSetting *string `json:"new_dashboard_setting,omitempty"`
174-
NewCreatedFrom *string `json:"new_created_from,omitempty"`
175-
NewLockInfo *string `json:"new_lock_info,omitempty"`
176-
NewLocker *string `json:"new_locker,omitempty"`
177-
NewCrucialMoment *string `json:"new_crucial_moment,omitempty"`
178-
NewLabel *string `json:"new_label,omitempty"`
179-
NewCustomField1 *string `json:"new_custom_field_1,omitempty"`
180-
NewCustomField2 *string `json:"new_custom_field_2,omitempty"`
181-
NewCustomField3 *string `json:"new_custom_field_3,omitempty"`
182-
NewCustomField4 *string `json:"new_custom_field_4,omitempty"`
183-
NewCustomField5 *string `json:"new_custom_field_5,omitempty"`
184-
NewCustomField6 *string `json:"new_custom_field_6,omitempty"`
185-
NewCustomField7 *string `json:"new_custom_field_7,omitempty"`
186-
NewCustomField8 *string `json:"new_custom_field_8,omitempty"`
187-
NewCustomField9 *string `json:"new_custom_field_9,omitempty"`
188-
NewCustomField10 *string `json:"new_custom_field_10,omitempty"`
189-
NewCustomField11 *string `json:"new_custom_field_11,omitempty"`
190-
NewCustomField12 *string `json:"new_custom_field_12,omitempty"`
191-
NewCustomField13 *string `json:"new_custom_field_13,omitempty"`
192-
NewCustomField14 *string `json:"new_custom_field_14,omitempty"`
193-
NewCustomField15 *string `json:"new_custom_field_15,omitempty"`
194-
NewCustomField16 *string `json:"new_custom_field_16,omitempty"`
195-
NewCustomField17 *string `json:"new_custom_field_17,omitempty"`
196-
NewCustomField18 *string `json:"new_custom_field_18,omitempty"`
197-
NewCustomField19 *string `json:"new_custom_field_19,omitempty"`
198-
NewCustomField20 *string `json:"new_custom_field_20,omitempty"`
199-
NewCustomField21 *string `json:"new_custom_field_21,omitempty"`
200-
NewCustomField22 *string `json:"new_custom_field_22,omitempty"`
201-
NewCustomField23 *string `json:"new_custom_field_23,omitempty"`
202-
NewCustomField24 *string `json:"new_custom_field_24,omitempty"`
203-
NewCustomField25 *string `json:"new_custom_field_25,omitempty"`
204-
NewCustomField26 *string `json:"new_custom_field_26,omitempty"`
205-
NewCustomField27 *string `json:"new_custom_field_27,omitempty"`
206-
NewCustomField28 *string `json:"new_custom_field_28,omitempty"`
207-
NewCustomField29 *string `json:"new_custom_field_29,omitempty"`
208-
NewCustomField30 *string `json:"new_custom_field_30,omitempty"`
209-
NewCustomField31 *string `json:"new_custom_field_31,omitempty"`
210-
NewCustomField32 *string `json:"new_custom_field_32,omitempty"`
211-
NewCustomField33 *string `json:"new_custom_field_33,omitempty"`
212-
NewCustomField34 *string `json:"new_custom_field_34,omitempty"`
213-
NewCustomField35 *string `json:"new_custom_field_35,omitempty"`
214-
NewCustomField36 *string `json:"new_custom_field_36,omitempty"`
215-
NewCustomField37 *string `json:"new_custom_field_37,omitempty"`
216-
NewCustomField38 *string `json:"new_custom_field_38,omitempty"`
217-
NewCustomField39 *string `json:"new_custom_field_39,omitempty"`
218-
NewCustomField40 *string `json:"new_custom_field_40,omitempty"`
219-
NewCustomField41 *string `json:"new_custom_field_41,omitempty"`
220-
NewCustomField42 *string `json:"new_custom_field_42,omitempty"`
221-
NewCustomField43 *string `json:"new_custom_field_43,omitempty"`
222-
NewCustomField44 *string `json:"new_custom_field_44,omitempty"`
223-
NewCustomField45 *string `json:"new_custom_field_45,omitempty"`
224-
NewCustomField46 *string `json:"new_custom_field_46,omitempty"`
225-
NewCustomField47 *string `json:"new_custom_field_47,omitempty"`
226-
NewCustomField48 *string `json:"new_custom_field_48,omitempty"`
227-
NewCustomField49 *string `json:"new_custom_field_49,omitempty"`
228-
NewCustomField50 *string `json:"new_custom_field_50,omitempty"`
133+
NewID string `json:"new_id,omitempty"`
134+
NewSort string `json:"new_sort,omitempty"`
135+
NewWorkitemTypeID string `json:"new_workitem_type_id,omitempty"`
136+
NewEntityType string `json:"new_entity_type,omitempty"`
137+
NewReleaseID string `json:"new_release_id,omitempty"`
138+
NewWorkspaceID string `json:"new_workspace_id,omitempty"`
139+
NewPlanAppID string `json:"new_plan_app_id,omitempty"`
140+
NewName string `json:"new_name,omitempty"`
141+
NewDescription string `json:"new_description,omitempty"`
142+
NewMarkdownDescription string `json:"new_markdown_description,omitempty"`
143+
NewDescriptionType string `json:"new_description_type,omitempty"`
144+
NewStartDate string `json:"new_startdate,omitempty"`
145+
NewStories string `json:"new_stories,omitempty"`
146+
NewEndDate string `json:"new_enddate,omitempty"`
147+
NewBugs string `json:"new_bugs,omitempty"`
148+
NewEffortTotalCompleted string `json:"new_effort_total_completed,omitempty"`
149+
NewEffortTotal string `json:"new_effort_total,omitempty"`
150+
NewDuration string `json:"new_duration,omitempty"`
151+
NewVelocity string `json:"new_velocity,omitempty"`
152+
NewCreator string `json:"new_creator,omitempty"`
153+
NewModifier string `json:"new_modifier,omitempty"`
154+
NewColor string `json:"new_color,omitempty"`
155+
NewIcon string `json:"new_icon,omitempty"`
156+
NewLine string `json:"new_line,omitempty"`
157+
NewCreated string `json:"new_created,omitempty"`
158+
NewModified string `json:"new_modified,omitempty"`
159+
NewParentID string `json:"new_parent_id,omitempty"`
160+
NewAncestorID string `json:"new_ancestor_id,omitempty"`
161+
NewPath string `json:"new_path,omitempty"`
162+
NewCompleted string `json:"new_completed,omitempty"`
163+
NewReleaseOwner string `json:"new_releaseowner,omitempty"`
164+
NewLaunchDate string `json:"new_launchdate,omitempty"`
165+
NewNotice string `json:"new_notice,omitempty"`
166+
NewStatus string `json:"new_status,omitempty"`
167+
NewIsDelay string `json:"new_isdelay,omitempty"`
168+
NewReleaseName string `json:"new_releasename,omitempty"`
169+
NewEstimatedPoints string `json:"new_estimated_points,omitempty"`
170+
NewTemplatedID string `json:"new_templated_id,omitempty"`
171+
NewIsTop string `json:"new_is_top,omitempty"`
172+
NewTopTime string `json:"new_top_time,omitempty"`
173+
NewDashboardSetting string `json:"new_dashboard_setting,omitempty"`
174+
NewCreatedFrom string `json:"new_created_from,omitempty"`
175+
NewLockInfo string `json:"new_lock_info,omitempty"`
176+
NewLocker string `json:"new_locker,omitempty"`
177+
NewCrucialMoment string `json:"new_crucial_moment,omitempty"`
178+
NewLabel string `json:"new_label,omitempty"`
179+
NewCustomField1 string `json:"new_custom_field_1,omitempty"`
180+
NewCustomField2 string `json:"new_custom_field_2,omitempty"`
181+
NewCustomField3 string `json:"new_custom_field_3,omitempty"`
182+
NewCustomField4 string `json:"new_custom_field_4,omitempty"`
183+
NewCustomField5 string `json:"new_custom_field_5,omitempty"`
184+
NewCustomField6 string `json:"new_custom_field_6,omitempty"`
185+
NewCustomField7 string `json:"new_custom_field_7,omitempty"`
186+
NewCustomField8 string `json:"new_custom_field_8,omitempty"`
187+
NewCustomField9 string `json:"new_custom_field_9,omitempty"`
188+
NewCustomField10 string `json:"new_custom_field_10,omitempty"`
189+
NewCustomField11 string `json:"new_custom_field_11,omitempty"`
190+
NewCustomField12 string `json:"new_custom_field_12,omitempty"`
191+
NewCustomField13 string `json:"new_custom_field_13,omitempty"`
192+
NewCustomField14 string `json:"new_custom_field_14,omitempty"`
193+
NewCustomField15 string `json:"new_custom_field_15,omitempty"`
194+
NewCustomField16 string `json:"new_custom_field_16,omitempty"`
195+
NewCustomField17 string `json:"new_custom_field_17,omitempty"`
196+
NewCustomField18 string `json:"new_custom_field_18,omitempty"`
197+
NewCustomField19 string `json:"new_custom_field_19,omitempty"`
198+
NewCustomField20 string `json:"new_custom_field_20,omitempty"`
199+
NewCustomField21 string `json:"new_custom_field_21,omitempty"`
200+
NewCustomField22 string `json:"new_custom_field_22,omitempty"`
201+
NewCustomField23 string `json:"new_custom_field_23,omitempty"`
202+
NewCustomField24 string `json:"new_custom_field_24,omitempty"`
203+
NewCustomField25 string `json:"new_custom_field_25,omitempty"`
204+
NewCustomField26 string `json:"new_custom_field_26,omitempty"`
205+
NewCustomField27 string `json:"new_custom_field_27,omitempty"`
206+
NewCustomField28 string `json:"new_custom_field_28,omitempty"`
207+
NewCustomField29 string `json:"new_custom_field_29,omitempty"`
208+
NewCustomField30 string `json:"new_custom_field_30,omitempty"`
209+
NewCustomField31 string `json:"new_custom_field_31,omitempty"`
210+
NewCustomField32 string `json:"new_custom_field_32,omitempty"`
211+
NewCustomField33 string `json:"new_custom_field_33,omitempty"`
212+
NewCustomField34 string `json:"new_custom_field_34,omitempty"`
213+
NewCustomField35 string `json:"new_custom_field_35,omitempty"`
214+
NewCustomField36 string `json:"new_custom_field_36,omitempty"`
215+
NewCustomField37 string `json:"new_custom_field_37,omitempty"`
216+
NewCustomField38 string `json:"new_custom_field_38,omitempty"`
217+
NewCustomField39 string `json:"new_custom_field_39,omitempty"`
218+
NewCustomField40 string `json:"new_custom_field_40,omitempty"`
219+
NewCustomField41 string `json:"new_custom_field_41,omitempty"`
220+
NewCustomField42 string `json:"new_custom_field_42,omitempty"`
221+
NewCustomField43 string `json:"new_custom_field_43,omitempty"`
222+
NewCustomField44 string `json:"new_custom_field_44,omitempty"`
223+
NewCustomField45 string `json:"new_custom_field_45,omitempty"`
224+
NewCustomField46 string `json:"new_custom_field_46,omitempty"`
225+
NewCustomField47 string `json:"new_custom_field_47,omitempty"`
226+
NewCustomField48 string `json:"new_custom_field_48,omitempty"`
227+
NewCustomField49 string `json:"new_custom_field_49,omitempty"`
228+
NewCustomField50 string `json:"new_custom_field_50,omitempty"`
229229
ChangeFields string `json:"change_fields,omitempty"`
230230
Secret string `json:"secret,omitempty"`
231231
RioToken string `json:"rio_token,omitempty"`

webhook/event_iteration_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func TestIterationEvent_IterationUpdateEvent(t *testing.T) {
4949
assert.Equal(t, "0", event.OldSort)
5050
assert.Equal(t, "111112223001000128", event.OldWorkitemTypeID)
5151
assert.Equal(t, "iteration", event.OldEntityType)
52-
assert.Nil(t, event.NewCustomField47)
52+
assert.Empty(t, event.NewCustomField47)
5353
assert.Equal(t, "sort,ancestor_id,path,modified", event.ChangeFields)
5454
assert.Equal(t, "318950437", event.QueueID)
5555
}

0 commit comments

Comments
 (0)