Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View 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"],
)

View 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"`
}

View 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"
)

View 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
}

View 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"`
}