fix(zentao): update fields to float (#3769)

diff --git a/plugins/zentao/e2e/raw_tables/_raw_zentao_api_tasks.csv b/plugins/zentao/e2e/raw_tables/_raw_zentao_api_tasks.csv
index 73a83d8..3d9e271 100644
--- a/plugins/zentao/e2e/raw_tables/_raw_zentao_api_tasks.csv
+++ b/plugins/zentao/e2e/raw_tables/_raw_zentao_api_tasks.csv
@@ -1,4 +1,4 @@
 id,params,data,url,input,created_at
 1,"{""ConnectionId"":1,""ProductId"":3,""ExecutionId"":1,""ProjectId"":1}","{""id"":1,""project"":13,""parent"":0,""execution"":9,""module"":0,""design"":0,""story"":0,""storyVersion"":1,""designVersion"":0,""fromBug"":0,""feedback"":0,""fromIssue"":0,""name"":""\u4efb\u52a1\u540d\u79f0"",""type"":""devel"",""mode"":"""",""pri"":3,""estimate"":0,""consumed"":0,""left"":0,""deadline"":""2022-10-01"",""status"":""wait"",""subStatus"":"""",""color"":"""",""mailto"":[{""id"":2,""account"":""productManager"",""avatar"":"""",""realname"":""\u4ea7\u54c1\u7ecf\u7406""},{""id"":3,""account"":""projectManager"",""avatar"":"""",""realname"":""\u9879\u76ee\u7ecf\u7406""}],""desc"":""\u4efb\u52a1\u63cf\u8ff0\u003Cspan\u003E \u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"",""version"":1,""openedBy"":{""id"":1,""account"":""devlake"",""avatar"":"""",""realname"":""devlake""},""openedDate"":""2022-09-19T01:50:37Z"",""assignedTo"":{""id"":5,""account"":""dev2"",""avatar"":"""",""realname"":""\u5f00\u53d1\u4e59""},""assignedDate"":""2022-09-19T01:50:37Z"",""estStarted"":""2022-09-20"",""realStarted"":null,""finishedBy"":null,""finishedDate"":null,""finishedList"":"""",""canceledBy"":null,""canceledDate"":null,""closedBy"":null,""closedDate"":null,""planDuration"":0,""realDuration"":0,""closedReason"":"""",""lastEditedBy"":null,""lastEditedDate"":null,""activatedDate"":""0000-00-00 00:00:00"",""order"":0,""repo"":0,""mr"":0,""entry"":"""",""lines"":"""",""v1"":"""",""v2"":"""",""deleted"":false,""vision"":""rnd"",""storyID"":null,""storyTitle"":null,""product"":null,""branch"":null,""latestStoryVersion"":null,""storyStatus"":null,""assignedToRealName"":""\u5f00\u53d1\u4e59"",""priOrder"":""3"",""delay"":47,""needConfirm"":false,""progress"":21.11}",http://iwater.red:8000/api.php/v1/executions/9/tasks?limit=100&page=1,null,2022-11-17 06:28:36.902
-2,"{""ConnectionId"":1,""ProductId"":3,""ExecutionId"":1,""ProjectId"":1}","{""id"":2,""project"":13,""parent"":0,""execution"":9,""module"":0,""design"":0,""story"":0,""storyVersion"":1,""designVersion"":0,""fromBug"":0,""feedback"":0,""fromIssue"":0,""name"":""\u4efb\u52a1\u540d\u79f0"",""type"":""devel"",""mode"":"""",""pri"":3,""estimate"":0,""consumed"":0,""left"":0,""deadline"":""2022-10-01"",""status"":""wait"",""subStatus"":"""",""color"":"""",""mailto"":[{""id"":2,""account"":""productManager"",""avatar"":"""",""realname"":""\u4ea7\u54c1\u7ecf\u7406""},{""id"":3,""account"":""projectManager"",""avatar"":"""",""realname"":""\u9879\u76ee\u7ecf\u7406""}],""desc"":""\u4efb\u52a1\u63cf\u8ff0\u003Cspan\u003E \u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"",""version"":1,""openedBy"":{""id"":1,""account"":""devlake"",""avatar"":"""",""realname"":""devlake""},""openedDate"":""2022-09-19T01:50:37Z"",""assignedTo"":{""id"":5,""account"":""dev2"",""avatar"":"""",""realname"":""\u5f00\u53d1\u4e59""},""assignedDate"":""2022-09-19T01:50:37Z"",""estStarted"":""2022-09-20"",""realStarted"":null,""finishedBy"":null,""finishedDate"":null,""finishedList"":"""",""canceledBy"":null,""canceledDate"":null,""closedBy"":null,""closedDate"":null,""planDuration"":0,""realDuration"":0,""closedReason"":"""",""lastEditedBy"":null,""lastEditedDate"":null,""activatedDate"":""0000-00-00 00:00:00"",""order"":0,""repo"":0,""mr"":0,""entry"":"""",""lines"":"""",""v1"":"""",""v2"":"""",""deleted"":false,""vision"":""rnd"",""storyID"":null,""storyTitle"":null,""product"":null,""branch"":null,""latestStoryVersion"":null,""storyStatus"":null,""assignedToRealName"":""\u5f00\u53d1\u4e59"",""priOrder"":""3"",""delay"":47,""needConfirm"":false,""progress"":3}",http://iwater.red:8000/api.php/v1/executions/9/tasks?limit=100&page=1,null,2022-11-17 06:48:56.248
-4,"{""ConnectionId"":1,""ProductId"":3,""ExecutionId"":1,""ProjectId"":1}","{""id"":3,""project"":13,""parent"":0,""execution"":9,""module"":0,""design"":0,""story"":0,""storyVersion"":1,""designVersion"":0,""fromBug"":0,""feedback"":0,""fromIssue"":0,""name"":""\u4efb\u52a1\u540d\u79f0"",""type"":""devel"",""mode"":"""",""pri"":3,""estimate"":0,""consumed"":0,""left"":0,""deadline"":""2022-10-01"",""status"":""wait"",""subStatus"":"""",""color"":"""",""mailto"":[{""id"":2,""account"":""productManager"",""avatar"":"""",""realname"":""\u4ea7\u54c1\u7ecf\u7406""},{""id"":3,""account"":""projectManager"",""avatar"":"""",""realname"":""\u9879\u76ee\u7ecf\u7406""}],""desc"":""\u4efb\u52a1\u63cf\u8ff0\u003Cspan\u003E \u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"",""version"":1,""openedBy"":{""id"":1,""account"":""devlake"",""avatar"":"""",""realname"":""devlake""},""openedDate"":""2022-09-19T01:50:37Z"",""assignedTo"":{""id"":5,""account"":""dev2"",""avatar"":"""",""realname"":""\u5f00\u53d1\u4e59""},""assignedDate"":""2022-09-19T01:50:37Z"",""estStarted"":""2022-09-20"",""realStarted"":null,""finishedBy"":null,""finishedDate"":null,""finishedList"":"""",""canceledBy"":null,""canceledDate"":null,""closedBy"":null,""closedDate"":null,""planDuration"":0,""realDuration"":0,""closedReason"":"""",""lastEditedBy"":null,""lastEditedDate"":null,""activatedDate"":""0000-00-00 00:00:00"",""order"":0,""repo"":0,""mr"":0,""entry"":"""",""lines"":"""",""v1"":"""",""v2"":"""",""deleted"":false,""vision"":""rnd"",""storyID"":null,""storyTitle"":null,""product"":null,""branch"":null,""latestStoryVersion"":null,""storyStatus"":null,""assignedToRealName"":""\u5f00\u53d1\u4e59"",""priOrder"":""3"",""delay"":47,""needConfirm"":false,""progress"":43.22121}",http://iwater.red:8000/api.php/v1/executions/9/tasks?limit=100&page=1,null,2022-11-17 07:10:21.155
+2,"{""ConnectionId"":1,""ProductId"":3,""ExecutionId"":1,""ProjectId"":1}","{""id"":2,""project"":13,""parent"":0,""execution"":9,""module"":0,""design"":0,""story"":0,""storyVersion"":1,""designVersion"":0,""fromBug"":0,""feedback"":0,""fromIssue"":0,""name"":""\u4efb\u52a1\u540d\u79f0"",""type"":""devel"",""mode"":"""",""pri"":3,""estimate"":12.1,""consumed"":2.1,""left"":10,""deadline"":""2022-10-01"",""status"":""wait"",""subStatus"":"""",""color"":"""",""mailto"":[{""id"":2,""account"":""productManager"",""avatar"":"""",""realname"":""\u4ea7\u54c1\u7ecf\u7406""},{""id"":3,""account"":""projectManager"",""avatar"":"""",""realname"":""\u9879\u76ee\u7ecf\u7406""}],""desc"":""\u4efb\u52a1\u63cf\u8ff0\u003Cspan\u003E \u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"",""version"":1,""openedBy"":{""id"":1,""account"":""devlake"",""avatar"":"""",""realname"":""devlake""},""openedDate"":""2022-09-19T01:50:37Z"",""assignedTo"":{""id"":5,""account"":""dev2"",""avatar"":"""",""realname"":""\u5f00\u53d1\u4e59""},""assignedDate"":""2022-09-19T01:50:37Z"",""estStarted"":""2022-09-20"",""realStarted"":null,""finishedBy"":null,""finishedDate"":null,""finishedList"":"""",""canceledBy"":null,""canceledDate"":null,""closedBy"":null,""closedDate"":null,""planDuration"":0,""realDuration"":0,""closedReason"":"""",""lastEditedBy"":null,""lastEditedDate"":null,""activatedDate"":""0000-00-00 00:00:00"",""order"":0,""repo"":0,""mr"":0,""entry"":"""",""lines"":"""",""v1"":"""",""v2"":"""",""deleted"":false,""vision"":""rnd"",""storyID"":null,""storyTitle"":null,""product"":null,""branch"":null,""latestStoryVersion"":null,""storyStatus"":null,""assignedToRealName"":""\u5f00\u53d1\u4e59"",""priOrder"":""3"",""delay"":47,""needConfirm"":false,""progress"":3}",http://iwater.red:8000/api.php/v1/executions/9/tasks?limit=100&page=1,null,2022-11-17 06:48:56.248
+4,"{""ConnectionId"":1,""ProductId"":3,""ExecutionId"":1,""ProjectId"":1}","{""id"":3,""project"":13,""parent"":0,""execution"":9,""module"":0,""design"":0,""story"":0,""storyVersion"":1,""designVersion"":0,""fromBug"":0,""feedback"":0,""fromIssue"":0,""name"":""\u4efb\u52a1\u540d\u79f0"",""type"":""devel"",""mode"":"""",""pri"":3,""estimate"":11.2,""consumed"":0,""left"":0,""deadline"":""2022-10-01"",""status"":""wait"",""subStatus"":"""",""color"":"""",""mailto"":[{""id"":2,""account"":""productManager"",""avatar"":"""",""realname"":""\u4ea7\u54c1\u7ecf\u7406""},{""id"":3,""account"":""projectManager"",""avatar"":"""",""realname"":""\u9879\u76ee\u7ecf\u7406""}],""desc"":""\u4efb\u52a1\u63cf\u8ff0\u003Cspan\u003E \u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"",""version"":1,""openedBy"":{""id"":1,""account"":""devlake"",""avatar"":"""",""realname"":""devlake""},""openedDate"":""2022-09-19T01:50:37Z"",""assignedTo"":{""id"":5,""account"":""dev2"",""avatar"":"""",""realname"":""\u5f00\u53d1\u4e59""},""assignedDate"":""2022-09-19T01:50:37Z"",""estStarted"":""2022-09-20"",""realStarted"":null,""finishedBy"":null,""finishedDate"":null,""finishedList"":"""",""canceledBy"":null,""canceledDate"":null,""closedBy"":null,""closedDate"":null,""planDuration"":0,""realDuration"":0,""closedReason"":"""",""lastEditedBy"":null,""lastEditedDate"":null,""activatedDate"":""0000-00-00 00:00:00"",""order"":0,""repo"":0,""mr"":0,""entry"":"""",""lines"":"""",""v1"":"""",""v2"":"""",""deleted"":false,""vision"":""rnd"",""storyID"":null,""storyTitle"":null,""product"":null,""branch"":null,""latestStoryVersion"":null,""storyStatus"":null,""assignedToRealName"":""\u5f00\u53d1\u4e59"",""priOrder"":""3"",""delay"":47,""needConfirm"":false,""progress"":43.22121}",http://iwater.red:8000/api.php/v1/executions/9/tasks?limit=100&page=1,null,2022-11-17 07:10:21.155
diff --git a/plugins/zentao/e2e/snapshot_tables/_tool_zentao_tasks.csv b/plugins/zentao/e2e/snapshot_tables/_tool_zentao_tasks.csv
index 4125a08..6604084 100644
--- a/plugins/zentao/e2e/snapshot_tables/_tool_zentao_tasks.csv
+++ b/plugins/zentao/e2e/snapshot_tables/_tool_zentao_tasks.csv
@@ -1,4 +1,4 @@
 connection_id,id,execution_id,project,parent,execution,module,design,story,story_version,design_version,from_bug,feedback,from_issue,name,type,mode,pri,estimate,consumed,deadline,status,sub_status,color,description,version,opened_by_id,opened_by_name,opened_date,assigned_to_id,assigned_to_name,assigned_date,est_started,real_started,finished_id,finished_date,finished_list,canceled_id,canceled_date,closed_by_id,closed_date,plan_duration,real_duration,closed_reason,last_edited_id,last_edited_date,activated_date,order_in,repo,mr,entry,num_of_line,v1,v2,deleted,vision,story_id,story_title,branch,latest_story_version,story_status,assigned_to_real_name,pri_order,need_confirm,progress
 1,1,1,13,0,9,0,0,0,1,0,0,0,0,任务名称,devel,,3,0,0,2022-10-01,wait,,,任务描述<span> </span><br /><div><br /></div>,1,1,devlake,2022-09-19T01:50:37.000+00:00,5,开发乙,2022-09-19T01:50:37.000+00:00,2022-09-20,,0,,,0,,0,,0,0,,0,,0000-00-00 00:00:00,0,0,0,,,,,0,rnd,0,,0,0,,开发乙,3,0,21.11
-1,2,1,13,0,9,0,0,0,1,0,0,0,0,任务名称,devel,,3,0,0,2022-10-01,wait,,,任务描述<span> </span><br /><div><br /></div>,1,1,devlake,2022-09-19T01:50:37.000+00:00,5,开发乙,2022-09-19T01:50:37.000+00:00,2022-09-20,,0,,,0,,0,,0,0,,0,,0000-00-00 00:00:00,0,0,0,,,,,0,rnd,0,,0,0,,开发乙,3,0,3
-1,3,1,13,0,9,0,0,0,1,0,0,0,0,任务名称,devel,,3,0,0,2022-10-01,wait,,,任务描述<span> </span><br /><div><br /></div>,1,1,devlake,2022-09-19T01:50:37.000+00:00,5,开发乙,2022-09-19T01:50:37.000+00:00,2022-09-20,,0,,,0,,0,,0,0,,0,,0000-00-00 00:00:00,0,0,0,,,,,0,rnd,0,,0,0,,开发乙,3,0,43.22121
+1,2,1,13,0,9,0,0,0,1,0,0,0,0,任务名称,devel,,3,12.1,2.1,2022-10-01,wait,,,任务描述<span> </span><br /><div><br /></div>,1,1,devlake,2022-09-19T01:50:37.000+00:00,5,开发乙,2022-09-19T01:50:37.000+00:00,2022-09-20,,0,,,0,,0,,0,0,,0,,0000-00-00 00:00:00,0,0,0,,,,,0,rnd,0,,0,0,,开发乙,3,0,3
+1,3,1,13,0,9,0,0,0,1,0,0,0,0,任务名称,devel,,3,11.2,0,2022-10-01,wait,,,任务描述<span> </span><br /><div><br /></div>,1,1,devlake,2022-09-19T01:50:37.000+00:00,5,开发乙,2022-09-19T01:50:37.000+00:00,2022-09-20,,0,,,0,,0,,0,0,,0,,0000-00-00 00:00:00,0,0,0,,,,,0,rnd,0,,0,0,,开发乙,3,0,43.22121
diff --git a/plugins/zentao/models/archived/execution.go b/plugins/zentao/models/archived/execution.go
index 5124b64..859c132 100644
--- a/plugins/zentao/models/archived/execution.go
+++ b/plugins/zentao/models/archived/execution.go
@@ -68,17 +68,17 @@
 	PMId           uint64
 	QDId           uint64
 	RDId           uint64
-	Team           string `json:"team"`
-	Acl            string `json:"acl"`
-	OrderIn        int    `json:"order"`
-	Vision         string `json:"vision"`
-	DisplayCards   int    `json:"displayCards"`
-	FluidBoard     string `json:"fluidBoard"`
-	Deleted        bool   `json:"deleted"`
-	TotalHours     int    `json:"totalHours"`
-	TotalEstimate  int    `json:"totalEstimate"`
-	TotalConsumed  int    `json:"totalConsumed"`
-	TotalLeft      int    `json:"totalLeft"`
+	Team           string  `json:"team"`
+	Acl            string  `json:"acl"`
+	OrderIn        int     `json:"order"`
+	Vision         string  `json:"vision"`
+	DisplayCards   int     `json:"displayCards"`
+	FluidBoard     string  `json:"fluidBoard"`
+	Deleted        bool    `json:"deleted"`
+	TotalHours     float64 `json:"totalHours"`
+	TotalEstimate  float64 `json:"totalEstimate"`
+	TotalConsumed  float64 `json:"totalConsumed"`
+	TotalLeft      float64 `json:"totalLeft"`
 	ProjectId      uint64
 	Progress       float64 `json:"progress"`
 	CaseReview     bool    `json:"caseReview"`
diff --git a/plugins/zentao/models/archived/project.go b/plugins/zentao/models/archived/project.go
index b6f93d6..0121599 100644
--- a/plugins/zentao/models/archived/project.go
+++ b/plugins/zentao/models/archived/project.go
@@ -82,9 +82,9 @@
 	TeamCount      int    `json:"teamCount"`
 	LeftTasks      string `json:"leftTasks"`
 	//TeamMembers   []interface{} `json:"teamMembers" gorm:"-"`
-	TotalEstimate int     `json:"totalEstimate"`
-	TotalConsumed int     `json:"totalConsumed"`
-	TotalLeft     int     `json:"totalLeft"`
+	TotalEstimate float64 `json:"totalEstimate"`
+	TotalConsumed float64 `json:"totalConsumed"`
+	TotalLeft     float64 `json:"totalLeft"`
 	Progress      float64 `json:"progress"`
 	TotalReal     int     `json:"totalReal"`
 }
@@ -101,9 +101,9 @@
 	WhitelistRealname string `json:"realname"`
 }
 type Hours struct {
-	HoursTotalEstimate int     `json:"totalEstimate"`
-	HoursTotalConsumed int     `json:"totalConsumed"`
-	HoursTotalLeft     int     `json:"totalLeft"`
+	HoursTotalEstimate float64 `json:"totalEstimate"`
+	HoursTotalConsumed float64 `json:"totalConsumed"`
+	HoursTotalLeft     float64 `json:"totalLeft"`
 	HoursProgress      float64 `json:"progress"`
 	HoursTotalReal     int     `json:"totalReal"`
 }
diff --git a/plugins/zentao/models/archived/story.go b/plugins/zentao/models/archived/story.go
index 770ecdf..4488e10 100644
--- a/plugins/zentao/models/archived/story.go
+++ b/plugins/zentao/models/archived/story.go
@@ -24,33 +24,33 @@
 
 type ZentaoStory struct {
 	archived.NoPKModel
-	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL" `
-	Project      uint64 `json:"project"`
-	Product      uint64 `json:"product"`
-	Branch       int    `json:"branch"`
-	Version      int    `json:"version"`
-	OrderIn      int    `json:"order"`
-	Vision       string `json:"vision"`
-	Parent       uint64 `json:"parent"`
-	Module       int    `json:"module"`
-	Plan         string `json:"plan"`
-	Source       string `json:"source"`
-	SourceNote   string `json:"sourceNote"`
-	FromBug      int    `json:"fromBug"`
-	Feedback     int    `json:"feedback"`
-	FeedbackBy   string `json:"feedbackBy"`
-	Title        string `json:"title"`
-	Keywords     string `json:"keywords"`
-	Type         string `json:"type"`
-	Category     string `json:"category"`
-	Pri          int    `json:"pri"`
-	Estimate     int    `json:"estimate"`
-	Status       string `json:"status"`
-	SubStatus    string `json:"subStatus"`
-	Color        string `json:"color"`
-	Stage        string `json:"stage"`
-	StagedById   uint64 `json:"stagedBy"`
+	ConnectionId uint64  `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	ID           uint64  `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL" `
+	Project      uint64  `json:"project"`
+	Product      uint64  `json:"product"`
+	Branch       int     `json:"branch"`
+	Version      int     `json:"version"`
+	OrderIn      int     `json:"order"`
+	Vision       string  `json:"vision"`
+	Parent       uint64  `json:"parent"`
+	Module       int     `json:"module"`
+	Plan         string  `json:"plan"`
+	Source       string  `json:"source"`
+	SourceNote   string  `json:"sourceNote"`
+	FromBug      int     `json:"fromBug"`
+	Feedback     int     `json:"feedback"`
+	FeedbackBy   string  `json:"feedbackBy"`
+	Title        string  `json:"title"`
+	Keywords     string  `json:"keywords"`
+	Type         string  `json:"type"`
+	Category     string  `json:"category"`
+	Pri          int     `json:"pri"`
+	Estimate     float64 `json:"estimate"`
+	Status       string  `json:"status"`
+	SubStatus    string  `json:"subStatus"`
+	Color        string  `json:"color"`
+	Stage        string  `json:"stage"`
+	StagedById   uint64  `json:"stagedBy"`
 	//Mailto           []interface{} `json:"mailto"`
 	Lib              int    `json:"lib"`
 	FromStory        uint64 `json:"fromStory"`
diff --git a/plugins/zentao/models/archived/task.go b/plugins/zentao/models/archived/task.go
index 0ee2d05..cd23e7d 100644
--- a/plugins/zentao/models/archived/task.go
+++ b/plugins/zentao/models/archived/task.go
@@ -24,30 +24,30 @@
 
 type ZentaoTask struct {
 	archived.NoPKModel
-	ConnectionId  uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ExecutionId   uint64 `json:"execution_id"`
-	ID            uint64 `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	Project       uint64 `json:"project"`
-	Parent        uint64 `json:"parent"`
-	Execution     uint64 `json:"execution"`
-	Module        int    `json:"module"`
-	Design        int    `json:"design"`
-	Story         uint64 `json:"story"`
-	StoryVersion  int    `json:"storyVersion"`
-	DesignVersion int    `json:"designVersion"`
-	FromBug       int    `json:"fromBug"`
-	Feedback      int    `json:"feedback"`
-	FromIssue     int    `json:"fromIssue"`
-	Name          string `json:"name"`
-	Type          string `json:"type"`
-	Mode          string `json:"mode"`
-	Pri           int    `json:"pri"`
-	Estimate      int    `json:"estimate"`
-	Consumed      int    `json:"consumed"`
-	Deadline      string `json:"deadline"`
-	Status        string `json:"status"`
-	SubStatus     string `json:"subStatus"`
-	Color         string `json:"color"`
+	ConnectionId  uint64  `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	ExecutionId   uint64  `json:"execution_id"`
+	ID            uint64  `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	Project       uint64  `json:"project"`
+	Parent        uint64  `json:"parent"`
+	Execution     uint64  `json:"execution"`
+	Module        int     `json:"module"`
+	Design        int     `json:"design"`
+	Story         uint64  `json:"story"`
+	StoryVersion  int     `json:"storyVersion"`
+	DesignVersion int     `json:"designVersion"`
+	FromBug       int     `json:"fromBug"`
+	Feedback      int     `json:"feedback"`
+	FromIssue     int     `json:"fromIssue"`
+	Name          string  `json:"name"`
+	Type          string  `json:"type"`
+	Mode          string  `json:"mode"`
+	Pri           int     `json:"pri"`
+	Estimate      float64 `json:"estimate"`
+	Consumed      float64 `json:"consumed"`
+	Deadline      string  `json:"deadline"`
+	Status        string  `json:"status"`
+	SubStatus     string  `json:"subStatus"`
+	Color         string  `json:"color"`
 	//Mailto        interface{} `json:"mailto"`
 	Description        string `json:"desc"`
 	Version            int    `json:"version"`
diff --git a/plugins/zentao/models/execution.go b/plugins/zentao/models/execution.go
index f58d97d..74fc0aa 100644
--- a/plugins/zentao/models/execution.go
+++ b/plugins/zentao/models/execution.go
@@ -115,15 +115,15 @@
 		Avatar   string `json:"avatar"`
 		Realname string `json:"realname"`
 	} `json:"whitelist"`
-	OrderIn       int    `json:"order"`
-	Vision        string `json:"vision"`
-	DisplayCards  int    `json:"displayCards"`
-	FluidBoard    string `json:"fluidBoard"`
-	Deleted       bool   `json:"deleted"`
-	TotalHours    int    `json:"totalHours"`
-	TotalEstimate int    `json:"totalEstimate"`
-	TotalConsumed int    `json:"totalConsumed"`
-	TotalLeft     int    `json:"totalLeft"`
+	OrderIn       int     `json:"order"`
+	Vision        string  `json:"vision"`
+	DisplayCards  int     `json:"displayCards"`
+	FluidBoard    string  `json:"fluidBoard"`
+	Deleted       bool    `json:"deleted"`
+	TotalHours    float64 `json:"totalHours"`
+	TotalEstimate float64 `json:"totalEstimate"`
+	TotalConsumed float64 `json:"totalConsumed"`
+	TotalLeft     float64 `json:"totalLeft"`
 	ProjectInfo   struct {
 		ID             uint64 `json:"id"`
 		Project        uint64 `json:"project"`
@@ -180,23 +180,23 @@
 	} `json:"projectInfo"`
 	Progress    float64 `json:"progress"`
 	TeamMembers []struct {
-		ID         uint64 `json:"id"`
-		Root       int    `json:"root"`
-		Type       string `json:"type"`
-		Account    string `json:"account"`
-		Role       string `json:"role"`
-		Position   string `json:"position"`
-		Limited    string `json:"limited"`
-		Join       string `json:"join"`
-		Days       int    `json:"days"`
-		Hours      int    `json:"hours"`
-		Estimate   string `json:"estimate"`
-		Consumed   string `json:"consumed"`
-		Left       string `json:"left"`
-		OrderIn    int    `json:"order"`
-		TotalHours int    `json:"totalHours"`
-		UserID     uint64 `json:"userID"`
-		Realname   string `json:"realname"`
+		ID         uint64  `json:"id"`
+		Root       int     `json:"root"`
+		Type       string  `json:"type"`
+		Account    string  `json:"account"`
+		Role       string  `json:"role"`
+		Position   string  `json:"position"`
+		Limited    string  `json:"limited"`
+		Join       string  `json:"join"`
+		Days       int     `json:"days"`
+		Hours      int     `json:"hours"`
+		Estimate   string  `json:"estimate"`
+		Consumed   string  `json:"consumed"`
+		Left       string  `json:"left"`
+		OrderIn    int     `json:"order"`
+		TotalHours float64 `json:"totalHours"`
+		UserID     uint64  `json:"userID"`
+		Realname   string  `json:"realname"`
 	} `json:"teamMembers"`
 	Products []struct {
 		ID    uint64        `json:"id"`
@@ -252,17 +252,17 @@
 	PMId           uint64
 	QDId           uint64
 	RDId           uint64
-	Team           string `json:"team"`
-	Acl            string `json:"acl"`
-	OrderIn        int    `json:"order"`
-	Vision         string `json:"vision"`
-	DisplayCards   int    `json:"displayCards"`
-	FluidBoard     string `json:"fluidBoard"`
-	Deleted        bool   `json:"deleted"`
-	TotalHours     int    `json:"totalHours"`
-	TotalEstimate  int    `json:"totalEstimate"`
-	TotalConsumed  int    `json:"totalConsumed"`
-	TotalLeft      int    `json:"totalLeft"`
+	Team           string  `json:"team"`
+	Acl            string  `json:"acl"`
+	OrderIn        int     `json:"order"`
+	Vision         string  `json:"vision"`
+	DisplayCards   int     `json:"displayCards"`
+	FluidBoard     string  `json:"fluidBoard"`
+	Deleted        bool    `json:"deleted"`
+	TotalHours     float64 `json:"totalHours"`
+	TotalEstimate  float64 `json:"totalEstimate"`
+	TotalConsumed  float64 `json:"totalConsumed"`
+	TotalLeft      float64 `json:"totalLeft"`
 	ProjectId      uint64
 	Progress       float64 `json:"progress"`
 	CaseReview     bool    `json:"caseReview"`
diff --git a/plugins/zentao/models/project.go b/plugins/zentao/models/project.go
index 1d6627a..3432c5b 100644
--- a/plugins/zentao/models/project.go
+++ b/plugins/zentao/models/project.go
@@ -82,9 +82,9 @@
 	TeamCount      int    `json:"teamCount"`
 	LeftTasks      string `json:"leftTasks"`
 	//TeamMembers   []interface{} `json:"teamMembers" gorm:"-"`
-	TotalEstimate int     `json:"totalEstimate"`
-	TotalConsumed int     `json:"totalConsumed"`
-	TotalLeft     int     `json:"totalLeft"`
+	TotalEstimate float64 `json:"totalEstimate"`
+	TotalConsumed float64 `json:"totalConsumed"`
+	TotalLeft     float64 `json:"totalLeft"`
 	Progress      float64 `json:"progress"`
 	TotalReal     int     `json:"totalReal"`
 }
diff --git a/plugins/zentao/models/story.go b/plugins/zentao/models/story.go
index 3b319d8..e919d58 100644
--- a/plugins/zentao/models/story.go
+++ b/plugins/zentao/models/story.go
@@ -39,7 +39,7 @@
 	Type        string        `json:"type"`
 	Category    string        `json:"category"`
 	Pri         int           `json:"pri"`
-	Estimate    int           `json:"estimate"`
+	Estimate    float64       `json:"estimate"`
 	Status      string        `json:"status"`
 	SubStatus   string        `json:"subStatus"`
 	Color       string        `json:"color"`
@@ -106,30 +106,30 @@
 
 type ZentaoStory struct {
 	common.NoPKModel
-	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL" `
-	Product      uint64 `json:"product"`
-	Branch       int    `json:"branch"`
-	Version      int    `json:"version"`
-	OrderIn      int    `json:"order"`
-	Vision       string `json:"vision"`
-	Parent       uint64 `json:"parent"`
-	Module       int    `json:"module"`
-	Plan         string `json:"plan"`
-	Source       string `json:"source"`
-	SourceNote   string `json:"sourceNote"`
-	FromBug      int    `json:"fromBug"`
-	Feedback     int    `json:"feedback"`
-	Title        string `json:"title"`
-	Keywords     string `json:"keywords"`
-	Type         string `json:"type"`
-	Category     string `json:"category"`
-	Pri          int    `json:"pri"`
-	Estimate     int    `json:"estimate"`
-	Status       string `json:"status"`
-	SubStatus    string `json:"subStatus"`
-	Color        string `json:"color"`
-	Stage        string `json:"stage"`
+	ConnectionId uint64  `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	ID           uint64  `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL" `
+	Product      uint64  `json:"product"`
+	Branch       int     `json:"branch"`
+	Version      int     `json:"version"`
+	OrderIn      int     `json:"order"`
+	Vision       string  `json:"vision"`
+	Parent       uint64  `json:"parent"`
+	Module       int     `json:"module"`
+	Plan         string  `json:"plan"`
+	Source       string  `json:"source"`
+	SourceNote   string  `json:"sourceNote"`
+	FromBug      int     `json:"fromBug"`
+	Feedback     int     `json:"feedback"`
+	Title        string  `json:"title"`
+	Keywords     string  `json:"keywords"`
+	Type         string  `json:"type"`
+	Category     string  `json:"category"`
+	Pri          int     `json:"pri"`
+	Estimate     float64 `json:"estimate"`
+	Status       string  `json:"status"`
+	SubStatus    string  `json:"subStatus"`
+	Color        string  `json:"color"`
+	Stage        string  `json:"stage"`
 	//Mailto           []interface{} `json:"mailto"`
 	Lib              int    `json:"lib"`
 	FromStory        uint64 `json:"fromStory"`
diff --git a/plugins/zentao/models/task.go b/plugins/zentao/models/task.go
index 228e38a..94411c2 100644
--- a/plugins/zentao/models/task.go
+++ b/plugins/zentao/models/task.go
@@ -23,28 +23,28 @@
 )
 
 type ZentaoTaskRes struct {
-	Id            uint64 `json:"id"`
-	Project       uint64 `json:"project"`
-	Parent        uint64 `json:"parent"`
-	Execution     uint64 `json:"execution"`
-	Module        int    `json:"module"`
-	Design        int    `json:"design"`
-	Story         uint64 `json:"story"`
-	StoryVersion  int    `json:"storyVersion"`
-	DesignVersion int    `json:"designVersion"`
-	FromBug       int    `json:"fromBug"`
-	Feedback      int    `json:"feedback"`
-	FromIssue     int    `json:"fromIssue"`
-	Name          string `json:"name"`
-	Type          string `json:"type"`
-	Mode          string `json:"mode"`
-	Pri           int    `json:"pri"`
-	Estimate      int    `json:"estimate"`
-	Consumed      int    `json:"consumed"`
-	Deadline      string `json:"deadline"`
-	Status        string `json:"status"`
-	SubStatus     string `json:"subStatus"`
-	Color         string `json:"color"`
+	Id            uint64  `json:"id"`
+	Project       uint64  `json:"project"`
+	Parent        uint64  `json:"parent"`
+	Execution     uint64  `json:"execution"`
+	Module        int     `json:"module"`
+	Design        int     `json:"design"`
+	Story         uint64  `json:"story"`
+	StoryVersion  int     `json:"storyVersion"`
+	DesignVersion int     `json:"designVersion"`
+	FromBug       int     `json:"fromBug"`
+	Feedback      int     `json:"feedback"`
+	FromIssue     int     `json:"fromIssue"`
+	Name          string  `json:"name"`
+	Type          string  `json:"type"`
+	Mode          string  `json:"mode"`
+	Pri           int     `json:"pri"`
+	Estimate      float64 `json:"estimate"`
+	Consumed      float64 `json:"consumed"`
+	Deadline      string  `json:"deadline"`
+	Status        string  `json:"status"`
+	SubStatus     string  `json:"subStatus"`
+	Color         string  `json:"color"`
 	Mailto        []struct {
 		Id       uint64 `json:"id"`
 		Account  string `json:"account"`
@@ -128,30 +128,30 @@
 
 type ZentaoTask struct {
 	common.NoPKModel
-	ConnectionId  uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ExecutionId   uint64 `json:"execution_id"`
-	ID            uint64 `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	Project       uint64 `json:"project"`
-	Parent        uint64 `json:"parent"`
-	Execution     uint64 `json:"execution"`
-	Module        int    `json:"module"`
-	Design        int    `json:"design"`
-	Story         uint64 `json:"story"`
-	StoryVersion  int    `json:"storyVersion"`
-	DesignVersion int    `json:"designVersion"`
-	FromBug       int    `json:"fromBug"`
-	Feedback      int    `json:"feedback"`
-	FromIssue     int    `json:"fromIssue"`
-	Name          string `json:"name"`
-	Type          string `json:"type"`
-	Mode          string `json:"mode"`
-	Pri           int    `json:"pri"`
-	Estimate      int    `json:"estimate"`
-	Consumed      int    `json:"consumed"`
-	Deadline      string `json:"deadline"`
-	Status        string `json:"status"`
-	SubStatus     string `json:"subStatus"`
-	Color         string `json:"color"`
+	ConnectionId  uint64  `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	ExecutionId   uint64  `json:"execution_id"`
+	ID            uint64  `json:"id" gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	Project       uint64  `json:"project"`
+	Parent        uint64  `json:"parent"`
+	Execution     uint64  `json:"execution"`
+	Module        int     `json:"module"`
+	Design        int     `json:"design"`
+	Story         uint64  `json:"story"`
+	StoryVersion  int     `json:"storyVersion"`
+	DesignVersion int     `json:"designVersion"`
+	FromBug       int     `json:"fromBug"`
+	Feedback      int     `json:"feedback"`
+	FromIssue     int     `json:"fromIssue"`
+	Name          string  `json:"name"`
+	Type          string  `json:"type"`
+	Mode          string  `json:"mode"`
+	Pri           int     `json:"pri"`
+	Estimate      float64 `json:"estimate"`
+	Consumed      float64 `json:"consumed"`
+	Deadline      string  `json:"deadline"`
+	Status        string  `json:"status"`
+	SubStatus     string  `json:"subStatus"`
+	Color         string  `json:"color"`
 	//Mailto        interface{} `json:"mailto"`
 	Description        string `json:"desc"`
 	Version            int    `json:"version"`