Create & Init Project...
This commit is contained in:
33
app/service/ep/footman/model/BUILD
Normal file
33
app/service/ep/footman/model/BUILD
Normal file
@ -0,0 +1,33 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"bugly.go",
|
||||
"constants.go",
|
||||
"model.go",
|
||||
"tapd.go",
|
||||
],
|
||||
importpath = "go-common/app/service/ep/footman/model",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
87
app/service/ep/footman/model/bugly.go
Normal file
87
app/service/ep/footman/model/bugly.go
Normal file
@ -0,0 +1,87 @@
|
||||
package model
|
||||
|
||||
// BugIssueRequest Bug Issue Request.
|
||||
type BugIssueRequest struct {
|
||||
StartNum int
|
||||
Version string
|
||||
Rows int
|
||||
PlatformID string
|
||||
ProjectID string
|
||||
ExceptionType string
|
||||
}
|
||||
|
||||
// BugIssueResponse Bug Issue Response.
|
||||
type BugIssueResponse struct {
|
||||
Status int `json:"status"`
|
||||
Ret *BugRet `json:"ret"`
|
||||
}
|
||||
|
||||
// BugRet Bug Ret.
|
||||
type BugRet struct {
|
||||
NumFound int `json:"numFound"`
|
||||
BugIssues []*BugIssues `json:"issueList"`
|
||||
}
|
||||
|
||||
// BugIssues Bug Issues.
|
||||
type BugIssues struct {
|
||||
IssueID string `json:"issueId"`
|
||||
Title string `json:"exceptionName"`
|
||||
ExceptionMsg string `json:"exceptionMessage"`
|
||||
KeyStack string `json:"keyStack"`
|
||||
LastTime string `json:"lastestUploadTime"`
|
||||
Count int64 `json:"count"`
|
||||
Tags []*BugTag `json:"tagInfoList"`
|
||||
UserCount int64 `json:"imeiCount"`
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
// BugTag Bug Tag.
|
||||
type BugTag struct {
|
||||
TagName string `json:"tagName"`
|
||||
}
|
||||
|
||||
// BugIssueDetailResponse Bug Issue Detail Response.
|
||||
type BugIssueDetailResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data *BugIssueDetail `json:"data"`
|
||||
}
|
||||
|
||||
// BugIssueDetail Bug Issue Detail.
|
||||
type BugIssueDetail struct {
|
||||
CallStack string `json:"callStack"`
|
||||
}
|
||||
|
||||
// BugVersionResponse Bug Version Response.
|
||||
type BugVersionResponse struct {
|
||||
Status int `json:"status"`
|
||||
Ret *SelectorPropertyList `json:"ret"`
|
||||
}
|
||||
|
||||
// SelectorPropertyList SelectorPropertyList.
|
||||
type SelectorPropertyList struct {
|
||||
BugVersionList []*BugVersion `json:"versionList"`
|
||||
}
|
||||
|
||||
// BugVersion BugVersion.
|
||||
type BugVersion struct {
|
||||
Name string `json:"name"`
|
||||
Enable int `json:"enable"`
|
||||
SDKVersion string `json:"sdkVersion"`
|
||||
}
|
||||
|
||||
// BugIssueExceptionListResponse Bug Issue Exception List Response.
|
||||
type BugIssueExceptionListResponse struct {
|
||||
Status int `json:"status"`
|
||||
Ret *IssueExceptionList `json:"ret"`
|
||||
}
|
||||
|
||||
// IssueExceptionList IssueExceptionList.
|
||||
type IssueExceptionList struct {
|
||||
IssueException []*IssueException `json:"issueList"`
|
||||
}
|
||||
|
||||
// IssueException IssueException.
|
||||
type IssueException struct {
|
||||
IssueID string `json:"issueId"`
|
||||
Status int `json:"status"`
|
||||
}
|
61
app/service/ep/footman/model/constants.go
Normal file
61
app/service/ep/footman/model/constants.go
Normal file
@ -0,0 +1,61 @@
|
||||
package model
|
||||
|
||||
//tapd urls
|
||||
const (
|
||||
IterationURL = "https://api.tapd.cn/iterations?workspace_id=%s&name=%s&limit=%d&fields=id,name,startdate,enddate"
|
||||
AllIterationURL = "https://api.tapd.cn/iterations?workspace_id=%s&limit=%d"
|
||||
StoryURL = "https://api.tapd.cn/stories?workspace_id=%s&iteration_id=%s&limit=%d"
|
||||
StoryURLWithoutItera = "https://api.tapd.cn/stories?workspace_id=%s&limit=%d"
|
||||
SpecStoryURL = "https://api.tapd.cn/stories?workspace_id=%s&id=%s"
|
||||
StoryChangeURL = "https://api.tapd.cn/story_changes?workspace_id=%s&story_id=%s&limit=%d"
|
||||
NameMapURL = "https://api.tapd.cn/workflows/status_map?system=story&workspace_id=%s"
|
||||
CategoryURL = "https://api.tapd.cn/story_categories?workspace_id=%s&fields=id,name&limit=%d"
|
||||
BugURL = "https://api.tapd.cn/bugs?workspace_id=%s&limit=%d"
|
||||
ReleaseURL = "https://api.tapd.cn/releases?workspace_id=%s&id=%s"
|
||||
CategoryPreURL = "https://api.tapd.cn/story_categories?workspace_id=%s&id=%s"
|
||||
BugPreURL = "https://api.tapd.cn/bugs?workspace_id=%s&id=%s"
|
||||
CreateBugURL = "https://api.tapd.cn/bugs"
|
||||
)
|
||||
|
||||
//page size
|
||||
const (
|
||||
IPS = 30
|
||||
SPS = 30
|
||||
SCPS = 50
|
||||
CPS = 50
|
||||
)
|
||||
|
||||
//ios and and android info
|
||||
var (
|
||||
IOSRelease = map[string]string{"1120055921001001566": "粉 - 5.22", "1120055921001001673": "粉 - 5.23", "1120055921001001766": "粉 - 5.24", "1120055921001001856": "粉 - 5.25", "1120055921001001930": "粉 - 5.26", "1120055921001002000": "粉 - 5.27", "1120055921001002073": "粉 - 5.28", "1120055921001002147": "粉 - 5.29", "1120055921001002213": "粉 - 5.30", "1120055921001002234": "粉 - 5.31"}
|
||||
AndroidRelease = map[string]string{"1120060791001001567": "Android 5.22", "1120060791001001672": "Android 5.23", "1120060791001001731": "Android 5.24", "1120060791001001855": "Android 5.25", "1120060791001001931": "Android 5.26", "1120060791001001999": "Android 5.27", "1120060791001002072": "Android 5.28", "1120060791001002158": "Android 5.29", "1120060791001002212": "Android 5.30", "1120060791001002268": "Android 5.31"}
|
||||
IOSWorkflow = []string{"规划中(研发不受理此状态!)", "需求评审", "需求评审未通过", "确定发布计划", "待开发", "开发中", "产品设计验收", "验收通过待测试", "测试中", "验收通过待测试(接入需求)", "测试通过待合入", "已合入总包", "需求完成", "需求挂起", "需求取消", "免测发布"}
|
||||
AndroidWorkflow = []string{"规划中(研发不受理此状态!)", "需求评审", "需求评审未通过", "确定发布计划", "待开发", "开发中", "产品设计验收", "验收通过待测试", "测试中", "验收通过待测试(接入需求)", "测试通过", "待合入总包", "需求完成", "需求挂起", "需求取消", "免测发布"}
|
||||
BaseFields = map[string]string{"id": "ID", "status": "状态", "priority": "优先级", "size": "规模", "category_id": "需求分类", "parent_id": "父需求", "release_id": "发布计划", "owner": "处理人", "developer": "开发人员", "creator": "创建人", "begin": "预计开始", "due": "预计结束", "created": "创建时间", "completed": "完成时间", "effort": "预估工时"}
|
||||
BaseFieldsList = []string{"ID", "状态", "优先级", "规模", "需求分类", "父需求", "发布计划", "处理人", "开发人员", "创建人", "预计开始", "预计结束", "创建时间", "完成时间", "预估工时"}
|
||||
IOSFields = map[string]string{"custom_field_99": "接口上线日", "custom_field_97": "双端都提得需求", "custom_field_93": "端范围(默认仅粉iPhone)", "custom_field_92": "是否可以单端上线"}
|
||||
IOSFieldsList = []string{"接口上线日", "双端都提得需求", "端范围(默认仅粉iPhone)", "是否可以单端上线"}
|
||||
AndroidFields = map[string]string{"custom_field_99": "接口上线日", "custom_field_97": "双端都提得需求", "custom_field_93": "是否可以单端上线"}
|
||||
AndroidFieldsList = []string{"接口上线日", "双端都提得需求", "是否可以单端上线"}
|
||||
LiveWorkflow = []string{"需求规划中(未受理需求)", "需求文档评审", "待排期", "已排期", "开发中", "开发完成待体验", "验收通过待测试", "测试中", "测试通过", "产品设计验收通过", "需求挂起", "需求取消", "免测发布", "已实现"}
|
||||
BPlusWorkflow = []string{"需求中", "已评审", "开发中", "产品/设计体验", "转测试", "测试中", "测试完成", "已实现", "已拒绝"}
|
||||
|
||||
AndroidStoryWallFields = []string{"auditing", "status_2", "status_11", "developing", "product_experience", "status_5", "testing", "status_6", "status_7", "status_1"}
|
||||
AndroidStoryWallColNames = map[string]string{"auditing": "需求评审", "status_2": "确定发布计划", "status_11": "待开发", "developing": "开发中", "product_experience": "产品设计验收", "status_5": "验收通过待测试", "testing": "测试中", "status_6": "测试通过", "status_7": "待合入总包", "status_1": "需求完成"}
|
||||
IosStoryWallFields = []string{"auditing", "status_2", "status_11", "developing", "product_experience", "status_5", "testing", "status_7", "status_8", "status_1"}
|
||||
IosStoryWallColNames = map[string]string{"auditing": "需求评审", "status_2": "确定发布计划", "status_11": "待开发", "developing": "开发中", "product_experience": "产品设计验收", "status_5": "验收通过待测试", "testing": "测试中", "status_7": "测试通过待合入", "status_8": "已合入总包", "status_1": "需求完成"}
|
||||
)
|
||||
|
||||
//test and reject type
|
||||
var (
|
||||
Test = "test"
|
||||
Experience = "experience"
|
||||
)
|
||||
|
||||
//workspace type
|
||||
var (
|
||||
IOS = "ios"
|
||||
Android = "android"
|
||||
Live = "live"
|
||||
BPlus = "bplus"
|
||||
)
|
62
app/service/ep/footman/model/model.go
Normal file
62
app/service/ep/footman/model/model.go
Normal file
@ -0,0 +1,62 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
// IssueRecord Issue Record.
|
||||
type IssueRecord struct {
|
||||
ID int64 `json:"id" gorm:"column:id"`
|
||||
IssueNo string `json:"issue_no" gorm:"column:issue_no"`
|
||||
Title string `json:"title" gorm:"column:title"`
|
||||
ExceptionMsg string `json:"exception_msg" gorm:"column:exception_msg"`
|
||||
KeyStack string `json:"key_stack" gorm:"column:key_stack"`
|
||||
Detail string `json:"detail" gorm:"column:detail"`
|
||||
Tags string `json:"tags" gorm:"column:tags"`
|
||||
LastTime time.Time `json:"last_time" gorm:"column:last_time"`
|
||||
HappenTimes int64 `json:"happen_times" gorm:"column:happen_times"`
|
||||
UserTimes int64 `json:"user_times" gorm:"column:user_times"`
|
||||
Version string `json:"version" gorm:"column:version"`
|
||||
ProjectID string `json:"project_id" gorm:"column:project_id"`
|
||||
IssueLink string `json:"issue_link" gorm:"column:issue_link"`
|
||||
TapdBugID string `json:"tapd_bug_id" gorm:"column:tapd_bug_id"`
|
||||
}
|
||||
|
||||
// IssueLastTime Issue Last Time.
|
||||
type IssueLastTime struct {
|
||||
ID int64 `json:"id" gorm:"column:id"`
|
||||
LastTime time.Time `json:"last_time" gorm:"column:last_time"`
|
||||
Version string `json:"version" gorm:"column:version"`
|
||||
//1-正在执行中,0未执行或已执行完
|
||||
TaskStatus int `json:"task_status" gorm:"column:task_status"`
|
||||
LastIssue string `json:"last_issue" gorm:"column:last_issue"`
|
||||
}
|
||||
|
||||
// BugTemplate BugTemplate.
|
||||
type BugTemplate struct {
|
||||
ID int64 `json:"id" gorm:"column:id"`
|
||||
WorkspaceID string `json:"workspace_id" gorm:"column:workspace_id"`
|
||||
ProjectID string `json:"project_id" gorm:"column:project_id"`
|
||||
PlatformID string `json:"platform_id" gorm:"column:platform_id"`
|
||||
Title string `json:"title" gorm:"column:title"`
|
||||
Description string `json:"description" gorm:"column:description"`
|
||||
CurrentOwner string `json:"current_owner" gorm:"column:current_owner"`
|
||||
Platform string `json:"platform" gorm:"column:platform"`
|
||||
Module string `json:"module" gorm:"column:module"`
|
||||
ReleaseID string `json:"release_id" gorm:"column:release_id"`
|
||||
Priority string `json:"priority" gorm:"column:priority"`
|
||||
Severity string `json:"severity" gorm:"column:severity"`
|
||||
Source string `json:"source" gorm:"column:source"`
|
||||
CustomFieldFour string `json:"custom_field_four" gorm:"column:custom_field_four"`
|
||||
BugType string `json:"bugtype" gorm:"column:bugtype"`
|
||||
OriginPhase string `json:"originphase" gorm:"column:originphase"`
|
||||
CustomFieldThree string `json:"custom_field_three" gorm:"column:custom_field_three"`
|
||||
Reporter string `json:"reporter" gorm:"column:reporter"`
|
||||
Status string `json:"status" gorm:"column:status"`
|
||||
IssueFilterSQL string `json:"issue_filter_sql" gorm:"column:issue_filter_sql"`
|
||||
SeverityKey string `json:"severity_key" gorm:"column:severity_key"`
|
||||
}
|
||||
|
||||
// StoryWallTimeModel Story Wall Time Model.
|
||||
type StoryWallTimeModel struct {
|
||||
StepStartTime time.Time
|
||||
StepEndTime time.Time
|
||||
}
|
551
app/service/ep/footman/model/tapd.go
Normal file
551
app/service/ep/footman/model/tapd.go
Normal file
@ -0,0 +1,551 @@
|
||||
package model
|
||||
|
||||
//IterationResponse response for tapd iteration query
|
||||
type IterationResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data []*IterationWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
//IterationWrapper sub struct in IterationResponse
|
||||
type IterationWrapper struct {
|
||||
Iteration *Iteration `json:"iteration"`
|
||||
}
|
||||
|
||||
//Iteration tapd iteration
|
||||
//type Iteration struct {
|
||||
// ID string `json:"id"`
|
||||
// Name string `json:"name"`
|
||||
// StartDate string `json:"startdate"`
|
||||
// EndDate string `json:"enddate"`
|
||||
//}
|
||||
|
||||
//Iteration tapd iteration
|
||||
type Iteration struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
Startdate string `json:"startdate"`
|
||||
Enddate string `json:"enddate"`
|
||||
Status string `json:"status"`
|
||||
ReleaseID string `json:"release_id"`
|
||||
Description string `json:"description"`
|
||||
Creator string `json:"creator"`
|
||||
Created string `json:"created"`
|
||||
Modified string `json:"modified"`
|
||||
Completed string `json:"completed"`
|
||||
CustomField1 string `json:"custom_field_1"`
|
||||
CustomField2 string `json:"custom_field_2"`
|
||||
CustomField3 string `json:"custom_field_3"`
|
||||
CustomField4 string `json:"custom_field_4"`
|
||||
CustomField5 string `json:"custom_field_5"`
|
||||
CustomField6 string `json:"custom_field_6"`
|
||||
CustomField7 string `json:"custom_field_7"`
|
||||
CustomField8 string `json:"custom_field_8"`
|
||||
CustomField9 string `json:"custom_field_9"`
|
||||
CustomField10 string `json:"custom_field_10"`
|
||||
CustomField11 string `json:"custom_field_11"`
|
||||
CustomField12 string `json:"custom_field_12"`
|
||||
CustomField13 string `json:"custom_field_13"`
|
||||
CustomField14 string `json:"custom_field_14"`
|
||||
CustomField15 string `json:"custom_field_15"`
|
||||
CustomField16 string `json:"custom_field_16"`
|
||||
CustomField17 string `json:"custom_field_17"`
|
||||
CustomField18 string `json:"custom_field_18"`
|
||||
CustomField19 string `json:"custom_field_19"`
|
||||
CustomField20 string `json:"custom_field_20"`
|
||||
CustomField21 string `json:"custom_field_21"`
|
||||
CustomField22 string `json:"custom_field_22"`
|
||||
CustomField23 string `json:"custom_field_23"`
|
||||
CustomField24 string `json:"custom_field_24"`
|
||||
CustomField25 string `json:"custom_field_25"`
|
||||
CustomField26 string `json:"custom_field_26"`
|
||||
CustomField27 string `json:"custom_field_27"`
|
||||
CustomField28 string `json:"custom_field_28"`
|
||||
CustomField29 string `json:"custom_field_29"`
|
||||
CustomField30 string `json:"custom_field_30"`
|
||||
CustomField31 string `json:"custom_field_31"`
|
||||
CustomField32 string `json:"custom_field_32"`
|
||||
CustomField33 string `json:"custom_field_33"`
|
||||
CustomField34 string `json:"custom_field_34"`
|
||||
CustomField35 string `json:"custom_field_35"`
|
||||
CustomField36 string `json:"custom_field_36"`
|
||||
CustomField37 string `json:"custom_field_37"`
|
||||
CustomField38 string `json:"custom_field_38"`
|
||||
CustomField39 string `json:"custom_field_39"`
|
||||
CustomField40 string `json:"custom_field_40"`
|
||||
CustomField41 string `json:"custom_field_41"`
|
||||
CustomField42 string `json:"custom_field_42"`
|
||||
CustomField43 string `json:"custom_field_43"`
|
||||
CustomField44 string `json:"custom_field_44"`
|
||||
CustomField45 string `json:"custom_field_45"`
|
||||
CustomField46 string `json:"custom_field_46"`
|
||||
CustomField47 string `json:"custom_field_47"`
|
||||
CustomField48 string `json:"custom_field_48"`
|
||||
CustomField49 string `json:"custom_field_49"`
|
||||
CustomField50 string `json:"custom_field_50"`
|
||||
}
|
||||
|
||||
//StoryResponse response for tapd multiple stories query
|
||||
type StoryResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data []*StoryWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
//SpecStoryResponse response for tapd specific story query
|
||||
type SpecStoryResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data *StoryWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
//StoryWrapper sub struct in story response
|
||||
type StoryWrapper struct {
|
||||
Story *Story `json:"story"`
|
||||
}
|
||||
|
||||
//Story tapd story
|
||||
type Story struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
Creator string `json:"creator"`
|
||||
Created string `json:"created"`
|
||||
Modified string `json:"modified"`
|
||||
Status string `json:"status"`
|
||||
Owner string `json:"owner"`
|
||||
Cc string `json:"cc"`
|
||||
Begin string `json:"begin"`
|
||||
Due string `json:"due"`
|
||||
Size string `json:"size"`
|
||||
Priority string `json:"priority"`
|
||||
Developer string `json:"developer"`
|
||||
IterationID string `json:"iteration_id"`
|
||||
TestFocus string `json:"test_focus"`
|
||||
Type string `json:"type"`
|
||||
Source string `json:"source"`
|
||||
Module string `json:"module"`
|
||||
Version string `json:"version"`
|
||||
Completed string `json:"completed"`
|
||||
CategoryID string `json:"category_id"`
|
||||
ParentID string `json:"parent_id"`
|
||||
ChildrenID string `json:"children_id"`
|
||||
AncestorID string `json:"ancestor_id"`
|
||||
BusinessValue string `json:"business_value"`
|
||||
Effort string `json:"effort"`
|
||||
EffortCompleted string `json:"effort_completed"`
|
||||
Exceed string `json:"exceed"`
|
||||
Remain string `json:"remain"`
|
||||
ReleaseID string `json:"release_id"`
|
||||
CustomFieldOne string `json:"custom_field_one"`
|
||||
CustomFieldTwo string `json:"custom_field_two"`
|
||||
CustomFieldThree string `json:"custom_field_three"`
|
||||
CustomFieldFour string `json:"custom_field_four"`
|
||||
CustomFieldFive string `json:"custom_field_five"`
|
||||
CustomFieldSix string `json:"custom_field_six"`
|
||||
CustomFieldSeven string `json:"custom_field_seven"`
|
||||
CustomFieldEight string `json:"custom_field_eight"`
|
||||
CustomField9 string `json:"custom_field_9"`
|
||||
CustomField10 string `json:"custom_field_10"`
|
||||
CustomField11 string `json:"custom_field_11"`
|
||||
CustomField12 string `json:"custom_field_12"`
|
||||
CustomField13 string `json:"custom_field_13"`
|
||||
CustomField14 string `json:"custom_field_14"`
|
||||
CustomField15 string `json:"custom_field_15"`
|
||||
CustomField16 string `json:"custom_field_16"`
|
||||
CustomField17 string `json:"custom_field_17"`
|
||||
CustomField18 string `json:"custom_field_18"`
|
||||
CustomField19 string `json:"custom_field_19"`
|
||||
CustomField20 string `json:"custom_field_20"`
|
||||
CustomField21 string `json:"custom_field_21"`
|
||||
CustomField22 string `json:"custom_field_22"`
|
||||
CustomField23 string `json:"custom_field_23"`
|
||||
CustomField24 string `json:"custom_field_24"`
|
||||
CustomField25 string `json:"custom_field_25"`
|
||||
CustomField26 string `json:"custom_field_26"`
|
||||
CustomField27 string `json:"custom_field_27"`
|
||||
CustomField28 string `json:"custom_field_28"`
|
||||
CustomField29 string `json:"custom_field_29"`
|
||||
CustomField30 string `json:"custom_field_30"`
|
||||
CustomField31 string `json:"custom_field_31"`
|
||||
CustomField32 string `json:"custom_field_32"`
|
||||
CustomField33 string `json:"custom_field_33"`
|
||||
CustomField34 string `json:"custom_field_34"`
|
||||
CustomField35 string `json:"custom_field_35"`
|
||||
CustomField36 string `json:"custom_field_36"`
|
||||
CustomField37 string `json:"custom_field_37"`
|
||||
CustomField38 string `json:"custom_field_38"`
|
||||
CustomField39 string `json:"custom_field_39"`
|
||||
CustomField40 string `json:"custom_field_40"`
|
||||
CustomField41 string `json:"custom_field_41"`
|
||||
CustomField42 string `json:"custom_field_42"`
|
||||
CustomField43 string `json:"custom_field_43"`
|
||||
CustomField44 string `json:"custom_field_44"`
|
||||
CustomField45 string `json:"custom_field_45"`
|
||||
CustomField46 string `json:"custom_field_46"`
|
||||
CustomField47 string `json:"custom_field_47"`
|
||||
CustomField48 string `json:"custom_field_48"`
|
||||
CustomField49 string `json:"custom_field_49"`
|
||||
CustomField50 string `json:"custom_field_50"`
|
||||
CustomField51 string `json:"custom_field_51"`
|
||||
CustomField52 string `json:"custom_field_52"`
|
||||
CustomField53 string `json:"custom_field_53"`
|
||||
CustomField54 string `json:"custom_field_54"`
|
||||
CustomField55 string `json:"custom_field_55"`
|
||||
CustomField56 string `json:"custom_field_56"`
|
||||
CustomField57 string `json:"custom_field_57"`
|
||||
CustomField58 string `json:"custom_field_58"`
|
||||
CustomField59 string `json:"custom_field_59"`
|
||||
CustomField60 string `json:"custom_field_60"`
|
||||
CustomField61 string `json:"custom_field_61"`
|
||||
CustomField62 string `json:"custom_field_62"`
|
||||
CustomField63 string `json:"custom_field_63"`
|
||||
CustomField64 string `json:"custom_field_64"`
|
||||
CustomField65 string `json:"custom_field_65"`
|
||||
CustomField66 string `json:"custom_field_66"`
|
||||
CustomField67 string `json:"custom_field_67"`
|
||||
CustomField68 string `json:"custom_field_68"`
|
||||
CustomField69 string `json:"custom_field_69"`
|
||||
CustomField70 string `json:"custom_field_70"`
|
||||
CustomField71 string `json:"custom_field_71"`
|
||||
CustomField72 string `json:"custom_field_72"`
|
||||
CustomField73 string `json:"custom_field_73"`
|
||||
CustomField74 string `json:"custom_field_74"`
|
||||
CustomField75 string `json:"custom_field_75"`
|
||||
CustomField76 string `json:"custom_field_76"`
|
||||
CustomField77 string `json:"custom_field_77"`
|
||||
CustomField78 string `json:"custom_field_78"`
|
||||
CustomField79 string `json:"custom_field_79"`
|
||||
CustomField80 string `json:"custom_field_80"`
|
||||
CustomField81 string `json:"custom_field_81"`
|
||||
CustomField82 string `json:"custom_field_82"`
|
||||
CustomField83 string `json:"custom_field_83"`
|
||||
CustomField84 string `json:"custom_field_84"`
|
||||
CustomField85 string `json:"custom_field_85"`
|
||||
CustomField86 string `json:"custom_field_86"`
|
||||
CustomField87 string `json:"custom_field_87"`
|
||||
CustomField88 string `json:"custom_field_88"`
|
||||
CustomField89 string `json:"custom_field_89"`
|
||||
CustomField90 string `json:"custom_field_90"`
|
||||
CustomField91 string `json:"custom_field_91"`
|
||||
CustomField92 string `json:"custom_field_92"`
|
||||
CustomField93 string `json:"custom_field_93"`
|
||||
CustomField94 string `json:"custom_field_94"`
|
||||
CustomField95 string `json:"custom_field_95"`
|
||||
CustomField96 string `json:"custom_field_96"`
|
||||
CustomField97 string `json:"custom_field_97"`
|
||||
CustomField98 string `json:"custom_field_98"`
|
||||
CustomField99 string `json:"custom_field_99"`
|
||||
CustomField100 string `json:"custom_field_100"`
|
||||
}
|
||||
|
||||
//IOSStory additional fields for ios story
|
||||
type IOSStory struct {
|
||||
CustomField99 string `json:"custom_field_99"` //接口上线日
|
||||
CustomField97 string `json:"custom_field_97"` //双端都提得需求
|
||||
CustomField93 string `json:"custom_field_93"` //端范围(默认仅粉iPhone)
|
||||
CustomField92 string `json:"custom_field_92"` //是否可以单端上线
|
||||
}
|
||||
|
||||
//AndroidStory additional fields for android story
|
||||
type AndroidStory struct {
|
||||
CustomField99 string `json:"custom_field_99"` //接口上线日
|
||||
CustomField97 string `json:"custom_field_97"` //双端都提得需求
|
||||
CustomField93 string `json:"custom_field_93"` //是否可以单端上线
|
||||
}
|
||||
|
||||
// ReleaseResponse Release Response
|
||||
type ReleaseResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data *ReleaseWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
// ReleaseWrapper Release Wrapper
|
||||
type ReleaseWrapper struct {
|
||||
Release *Release `json:"Release"`
|
||||
}
|
||||
|
||||
// Release Release
|
||||
type Release struct {
|
||||
ID string `json:"id"`
|
||||
WorkSpaceID string `json:"workspace_id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
StartDate string `json:"startdate"`
|
||||
EndDate string `json:"enddate"`
|
||||
Creator string `json:"creator"`
|
||||
Created string `json:"created"`
|
||||
Modified string `json:"modified"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
// BugResponse Bug Response
|
||||
type BugResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data []*BugWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
// BugSingleResponse Bug Response
|
||||
type BugSingleResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data *BugWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
// BugWrapper Bug Wrapper
|
||||
type BugWrapper struct {
|
||||
Bug *Bug `json:"Bug"`
|
||||
}
|
||||
|
||||
// Bug Bug
|
||||
type Bug struct {
|
||||
ID string `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
Priority string `json:"priority"`
|
||||
Severity string `json:"severity"`
|
||||
Module string `json:"module"`
|
||||
Status string `json:"status"`
|
||||
Reporter string `json:"reporter"`
|
||||
Deadline string `json:"deadline"`
|
||||
Created string `json:"created"`
|
||||
BugType string `json:"bugtype"`
|
||||
Resolved string `json:"resolved"`
|
||||
Closed string `json:"closed"`
|
||||
Modified string `json:"modified"`
|
||||
LastModify string `json:"lastmodify"`
|
||||
Auditer string `json:"auditer"`
|
||||
DE string `json:"de"`
|
||||
VersionTest string `json:"version_test"`
|
||||
VersionReport string `json:"version_report"`
|
||||
VersionClose string `json:"version_close"`
|
||||
VersionFix string `json:"version_fix"`
|
||||
BaselineFind string `json:"baseline_find"`
|
||||
BaselineJoin string `json:"baseline_join"`
|
||||
BaselineClose string `json:"baseline_close"`
|
||||
BaselineTest string `json:"baseline_test"`
|
||||
SourcePhase string `json:"sourcephase"`
|
||||
TE string `json:"te"`
|
||||
CurrentOwner string `json:"current_owner"`
|
||||
IterationID string `json:"iteration_id"`
|
||||
Resolution string `json:"resolution"`
|
||||
Source string `json:"source"`
|
||||
OriginPhase string `json:"originphase"`
|
||||
Confirmer string `json:"confirmer"`
|
||||
Milestone string `json:"milestone"`
|
||||
Participator string `json:"participator"`
|
||||
Closer string `json:"closer"`
|
||||
Platform string `json:"platform"`
|
||||
OS string `json:"os"`
|
||||
TestType string `json:"testtype"`
|
||||
TestPhase string `json:"testphase"`
|
||||
Frequency string `json:"frequency"`
|
||||
CC string `json:"cc"`
|
||||
RegressionNumber string `json:"regression_number"`
|
||||
Flows string `json:"flows"`
|
||||
Feature string `json:"feature"`
|
||||
TestMode string `json:"testmode"`
|
||||
Estimate string `json:"estimate"`
|
||||
IssueID string `json:"issue_id"`
|
||||
CreatedFrom string `json:"created_from"`
|
||||
InProgressTime string `json:"in_progress_time"`
|
||||
VerifyTime string `json:"verify_time"`
|
||||
RejectTime string `json:"reject_time"`
|
||||
ReopenTime string `json:"reopen_time"`
|
||||
AuditTime string `json:"audit_time"`
|
||||
SuspendTime string `json:"suspend_time"`
|
||||
Due string `json:"due"`
|
||||
Begin string `json:"begin"`
|
||||
ReleaseID string `json:"release_id"`
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
CustomFieldOne string `json:"custom_field_one"`
|
||||
CustomFieldTwo string `json:"custom_field_two"`
|
||||
CustomFieldThree string `json:"custom_field_three"`
|
||||
CustomFieldFour string `json:"custom_field_four"`
|
||||
CustomFieldFive string `json:"custom_field_five"`
|
||||
CustomField6 string `json:"custom_field_6"`
|
||||
CustomField7 string `json:"custom_field_7"`
|
||||
CustomField8 string `json:"custom_field_8"`
|
||||
CustomField9 string `json:"custom_field_9"`
|
||||
CustomField10 string `json:"custom_field_10"`
|
||||
CustomField11 string `json:"custom_field_11"`
|
||||
CustomField12 string `json:"custom_field_12"`
|
||||
CustomField13 string `json:"custom_field_13"`
|
||||
CustomField14 string `json:"custom_field_14"`
|
||||
CustomField15 string `json:"custom_field_15"`
|
||||
CustomField16 string `json:"custom_field_16"`
|
||||
CustomField17 string `json:"custom_field_17"`
|
||||
CustomField18 string `json:"custom_field_18"`
|
||||
CustomField19 string `json:"custom_field_19"`
|
||||
CustomField20 string `json:"custom_field_20"`
|
||||
CustomField21 string `json:"custom_field_21"`
|
||||
CustomField22 string `json:"custom_field_22"`
|
||||
CustomField23 string `json:"custom_field_23"`
|
||||
CustomField24 string `json:"custom_field_24"`
|
||||
CustomField25 string `json:"custom_field_25"`
|
||||
CustomField26 string `json:"custom_field_26"`
|
||||
CustomField27 string `json:"custom_field_27"`
|
||||
CustomField28 string `json:"custom_field_28"`
|
||||
CustomField29 string `json:"custom_field_29"`
|
||||
CustomField30 string `json:"custom_field_30"`
|
||||
CustomField31 string `json:"custom_field_31"`
|
||||
CustomField32 string `json:"custom_field_32"`
|
||||
CustomField33 string `json:"custom_field_33"`
|
||||
CustomField34 string `json:"custom_field_34"`
|
||||
CustomField35 string `json:"custom_field_35"`
|
||||
CustomField36 string `json:"custom_field_36"`
|
||||
CustomField37 string `json:"custom_field_37"`
|
||||
CustomField38 string `json:"custom_field_38"`
|
||||
CustomField39 string `json:"custom_field_39"`
|
||||
CustomField40 string `json:"custom_field_40"`
|
||||
CustomField41 string `json:"custom_field_41"`
|
||||
CustomField42 string `json:"custom_field_42"`
|
||||
CustomField43 string `json:"custom_field_43"`
|
||||
CustomField44 string `json:"custom_field_44"`
|
||||
CustomField45 string `json:"custom_field_45"`
|
||||
CustomField46 string `json:"custom_field_46"`
|
||||
CustomField47 string `json:"custom_field_47"`
|
||||
CustomField48 string `json:"custom_field_48"`
|
||||
CustomField49 string `json:"custom_field_49"`
|
||||
CustomField50 string `json:"custom_field_50"`
|
||||
}
|
||||
|
||||
// UpdateBug Update Bug
|
||||
type UpdateBug struct {
|
||||
*Bug
|
||||
CurrentUser string `json:"current_user"`
|
||||
}
|
||||
|
||||
//StoryChangeResponse response for tapd story change query
|
||||
type StoryChangeResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data []*WorkitemChangeWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
//WorkitemChangeWrapper sub struct in StoryChangeResponse
|
||||
type WorkitemChangeWrapper struct {
|
||||
WorkitemChange *WorkitemChange `json:"WorkitemChange"`
|
||||
}
|
||||
|
||||
//WorkitemChange sub struct in WorkitemChangeWrapper
|
||||
type WorkitemChange struct {
|
||||
ID string `json:"id"`
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
Creator string `json:"creator"`
|
||||
Created string `json:"created"`
|
||||
ChangeSummay string `json:"change_summay"`
|
||||
Comment string `json:"comment"`
|
||||
Changes string `json:"changes"`
|
||||
EntityType string `json:"entity_type"`
|
||||
StoryID string `json:"story_id"`
|
||||
}
|
||||
|
||||
//StoryChangeItem story change struct wrote to change file
|
||||
type StoryChangeItem struct {
|
||||
ID string
|
||||
WorkspaceID string
|
||||
StoryID string
|
||||
Number string
|
||||
Field string
|
||||
Creator string
|
||||
Created string
|
||||
ValueBefore string
|
||||
ValueAfter string
|
||||
ChangeSummay string
|
||||
Comment string
|
||||
EntityType string
|
||||
}
|
||||
|
||||
//StoryChangeByIteration story changes organized by iteration
|
||||
type StoryChangeByIteration struct {
|
||||
IterationName string
|
||||
StoryCount int
|
||||
StoryChangeList []*TargetStoryChange
|
||||
}
|
||||
|
||||
//TargetStoryChange story and story changes
|
||||
type TargetStoryChange struct {
|
||||
Story *Story
|
||||
StatusChanges []*StatusChange
|
||||
}
|
||||
|
||||
//StatusChange story change
|
||||
type StatusChange struct {
|
||||
Creator string
|
||||
Created string
|
||||
ValueBefore string
|
||||
ValueAfter string
|
||||
}
|
||||
|
||||
//NameMapResponse story status name mapping
|
||||
type NameMapResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data map[string]string `json:"data"`
|
||||
Info string
|
||||
}
|
||||
|
||||
//RejectedStoryByIteration rejected stories organized by iteration
|
||||
type RejectedStoryByIteration struct {
|
||||
IterationName string
|
||||
RejectedStoryCount int
|
||||
RejectedStoryList []string
|
||||
}
|
||||
|
||||
//TestTimeByIteration stories' test time info organized by iteration
|
||||
type TestTimeByIteration struct {
|
||||
IterationName string
|
||||
StoryCount int
|
||||
TimeByStroy []*TestTimeByStory
|
||||
}
|
||||
|
||||
//TestTimeByStory story base info and test time
|
||||
type TestTimeByStory struct {
|
||||
StoryName string
|
||||
StorySize string
|
||||
StoryEffort string
|
||||
TestTime float64
|
||||
}
|
||||
|
||||
//WaitTimeByIteration stories' wait time organized by iteration
|
||||
type WaitTimeByIteration struct {
|
||||
IterationName string
|
||||
StoryCount int
|
||||
TimeByStroy []*WaitTimeByStory
|
||||
}
|
||||
|
||||
//WaitTimeByStory story base info and wait time
|
||||
type WaitTimeByStory struct {
|
||||
StoryName string
|
||||
StorySize string
|
||||
StoryEffort string
|
||||
WaitTime float64
|
||||
}
|
||||
|
||||
//CategoryResponse response for tapd category query
|
||||
type CategoryResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data []*CategoryWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
//CategoryPreResponse response for tapd category query
|
||||
type CategoryPreResponse struct {
|
||||
Status int `json:"status"`
|
||||
Data *CategoryWrapper `json:"data"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
//CategoryWrapper sub struct in CategoryResponse
|
||||
type CategoryWrapper struct {
|
||||
Category *Category
|
||||
}
|
||||
|
||||
//Category project category
|
||||
type Category struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
}
|
Reference in New Issue
Block a user