diff --git a/entity/ai_task.go b/entity/ai_task.go index da78e29abf..0e760f94a8 100644 --- a/entity/ai_task.go +++ b/entity/ai_task.go @@ -105,6 +105,7 @@ type AITaskDetailInfo struct { ID int64 `json:"id"` JobID string `json:"job_id"` Status string `json:"status"` + DetailedStatus string `json:"detailed_status"` JobType string `json:"job_type"` Cluster string `json:"cluster"` DisplayJobName string `json:"display_job_name"` @@ -202,6 +203,7 @@ type AITaskBriefInfo struct { ID int64 `json:"id"` JobType string `json:"job_type"` Status string `json:"status"` + DetailedStatus string `json:"detailed_status"` DisplayJobName string `json:"display_job_name"` CreatedUnix timeutil.TimeStamp `json:"created_unix"` StartTime timeutil.TimeStamp `json:"start_time"` @@ -239,6 +241,7 @@ func ConvertCloudbrainToAITaskBriefInfo(task *models.Cloudbrain) *AITaskBriefInf ID: task.ID, JobType: task.JobType, Status: task.Status, + DetailedStatus: task.DetailedStatus, DisplayJobName: task.DisplayJobName, CreatedUnix: task.CreatedUnix, FormattedDuration: task.TrainJobDuration, diff --git a/entity/cluster.go b/entity/cluster.go index ce65cc669e..70667178f1 100644 --- a/entity/cluster.go +++ b/entity/cluster.go @@ -63,19 +63,20 @@ type CreateTrainTaskRequest struct { } type QueryTaskResponse struct { - StartedAt timeutil.TimeStamp `json:"started_at"` - CompletedAt timeutil.TimeStamp `json:"completed_at"` - JobId string `json:"job_id"` - Status string `json:"status"` - Url string `json:"url"` - Token string `json:"token"` - CenterId string `json:"center_id"` - CenterName string `json:"center_name"` - CodeUrl string `json:"code_url"` - DataUrl string `json:"data_url"` - ContainerIP string `json:"container_ip"` - ContainerID string `json:"container_id"` - VersionId int64 `json:"version_id"` + StartedAt timeutil.TimeStamp `json:"started_at"` + CompletedAt timeutil.TimeStamp `json:"completed_at"` + JobId string `json:"job_id"` + Status string `json:"status"` + DetailedStatus string `json:"detailed_status"` + Url string `json:"url"` + Token string `json:"token"` + CenterId string `json:"center_id"` + CenterName string `json:"center_name"` + CodeUrl string `json:"code_url"` + DataUrl string `json:"data_url"` + ContainerIP string `json:"container_ip"` + ContainerID string `json:"container_id"` + VersionId int64 `json:"version_id"` } func ConvertGrampusNotebookResponse(job models.GrampusNotebookInfo) *QueryTaskResponse { @@ -100,16 +101,17 @@ func ConvertGrampusNotebookResponse(job models.GrampusNotebookInfo) *QueryTaskRe dataUrl = t.DataUrl } return &QueryTaskResponse{ - StartedAt: timeutil.TimeStamp(job.StartedAt), - CompletedAt: timeutil.TimeStamp(job.CompletedAt), - Status: job.Status, - CenterId: centerId, - CenterName: centerName, - Url: url, - Token: token, - JobId: job.JobID, - CodeUrl: codeUrl, - DataUrl: dataUrl, + StartedAt: timeutil.TimeStamp(job.StartedAt), + CompletedAt: timeutil.TimeStamp(job.CompletedAt), + Status: job.Status, + DetailedStatus: job.DetailedStatus, + CenterId: centerId, + CenterName: centerName, + Url: url, + Token: token, + JobId: job.JobID, + CodeUrl: codeUrl, + DataUrl: dataUrl, } } func ConvertGrampusTrainResponse(job models.GrampusJobInfo) *QueryTaskResponse { diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 46669d1e1c..79da962cbb 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -236,8 +236,9 @@ type Cloudbrain struct { JobName string DisplayJobName string Status string - UserID int64 `xorm:"INDEX NOT NULL"` - RepoID int64 `xorm:"INDEX NOT NULL"` + DetailedStatus string `xorm:"DEFAULT '-'"` + UserID int64 `xorm:"INDEX NOT NULL"` + RepoID int64 `xorm:"INDEX NOT NULL"` SubTaskName string ContainerID string ContainerIp string @@ -1839,31 +1840,33 @@ type GrampusResult struct { } type GrampusJobInfo struct { - StartedAt int64 `json:"startedAt"` - RunSec int64 `json:"runSec"` - CompletedAt int64 `json:"completedAt"` - CreatedAt int64 `json:"createdAt"` - UpdatedAt int64 `json:"updatedAt"` - Desc string `json:"desc"` - JobID string `json:"id"` - Name string `json:"name"` - Status string `json:"status"` - UserID string `json:"userId"` - Tasks []GrampusTasks `json:"tasks"` + StartedAt int64 `json:"startedAt"` + RunSec int64 `json:"runSec"` + CompletedAt int64 `json:"completedAt"` + CreatedAt int64 `json:"createdAt"` + UpdatedAt int64 `json:"updatedAt"` + Desc string `json:"desc"` + JobID string `json:"id"` + Name string `json:"name"` + Status string `json:"status"` + DetailedStatus string `json:"detailedStatus"` + UserID string `json:"userId"` + Tasks []GrampusTasks `json:"tasks"` } type GrampusNotebookInfo struct { - StartedAt int64 `json:"startedAt"` - RunSec int64 `json:"runSec"` - CompletedAt int64 `json:"completedAt"` - CreatedAt int64 `json:"createdAt"` - UpdatedAt int64 `json:"updatedAt"` - Desc string `json:"desc"` - JobID string `json:"id"` - Name string `json:"name"` - Status string `json:"status"` - UserID string `json:"userId"` - Tasks []GrampusNotebookTask `json:"tasks"` + StartedAt int64 `json:"startedAt"` + RunSec int64 `json:"runSec"` + CompletedAt int64 `json:"completedAt"` + CreatedAt int64 `json:"createdAt"` + UpdatedAt int64 `json:"updatedAt"` + Desc string `json:"desc"` + JobID string `json:"id"` + Name string `json:"name"` + Status string `json:"status"` + DetailedStatus string `json:"detailedStatus"` + UserID string `json:"userId"` + Tasks []GrampusNotebookTask `json:"tasks"` } type Center struct { ID string `json:"id"` diff --git a/services/ai_task_service/cluster/c2net.go b/services/ai_task_service/cluster/c2net.go index 581e4535f0..ec7dcdb985 100644 --- a/services/ai_task_service/cluster/c2net.go +++ b/services/ai_task_service/cluster/c2net.go @@ -658,12 +658,13 @@ func convertGrampusTrainJobResponse(job models.GrampusJobInfo) *entity.QueryTask centerName = task.CenterName[0] } return &entity.QueryTaskResponse{ - StartedAt: timeutil.TimeStamp(job.StartedAt), - CompletedAt: timeutil.TimeStamp(job.CompletedAt), - Status: job.Status, - CenterId: centerId, - CenterName: centerName, - JobId: job.JobID, + StartedAt: timeutil.TimeStamp(job.StartedAt), + CompletedAt: timeutil.TimeStamp(job.CompletedAt), + Status: job.Status, + DetailedStatus: job.DetailedStatus, + CenterId: centerId, + CenterName: centerName, + JobId: job.JobID, } } diff --git a/services/ai_task_service/task/task_service.go b/services/ai_task_service/task/task_service.go index a1ef16fe46..62265434d0 100644 --- a/services/ai_task_service/task/task_service.go +++ b/services/ai_task_service/task/task_service.go @@ -100,6 +100,7 @@ func buildAITaskInfo(task *models.Cloudbrain, creator *models.User, config *enti ID: task.ID, JobID: task.JobID, Status: task.Status, + DetailedStatus: task.DetailedStatus, JobType: task.JobType, DisplayJobName: task.DisplayJobName, FormattedDuration: task.TrainJobDuration, @@ -240,6 +241,8 @@ func StopAITaskByJobNameFromRemote(task *models.Cloudbrain, queryFunc QueryListF return nil } +const DEFAULT_DETAILED_STATUS = "-" + func UpdateByQueryResponse(res *entity.QueryTaskResponse, task *models.Cloudbrain) error { if res.JobId == "" { return nil @@ -260,6 +263,10 @@ func UpdateByQueryResponse(res *entity.QueryTaskResponse, task *models.Cloudbrai newStatus := TransAITaskStatus(res.Status) task.Status = newStatus + task.DetailedStatus = res.DetailedStatus + if res.DetailedStatus == "" || res.DetailedStatus == res.Status { + task.DetailedStatus = DEFAULT_DETAILED_STATUS + } if res.StartedAt > 0 { task.StartTime = res.StartedAt } diff --git a/templates/repo/cloudbrain/cloudbraincreate.tmpl b/templates/repo/cloudbrain/cloudbraincreate.tmpl index e74c36594c..59b91bf6ae 100755 --- a/templates/repo/cloudbrain/cloudbraincreate.tmpl +++ b/templates/repo/cloudbrain/cloudbraincreate.tmpl @@ -2,6 +2,7 @@