diff --git a/sdks/scheduler/jobflow.go b/sdks/scheduler/jobflow.go index 485e9b0..1437598 100644 --- a/sdks/scheduler/jobflow.go +++ b/sdks/scheduler/jobflow.go @@ -69,11 +69,12 @@ type JobFlow struct { } type JobFlowRunStatus struct { - RunID JobSetID `gorm:"column:run_id;primaryKey" json:"runID"` - NodeType string `gorm:"column:node_type;size:100" json:"nodeType"` - NodeID string `gorm:"column:node_id;size:255" json:"nodeID"` - Status string `gorm:"column:status;type:enum('pending','running','fail','success')" json:"status"` - RunLog string `gorm:"column:run_log;type:text" json:"runLog"` + RunID JobSetID `gorm:"column:run_id;primaryKey" json:"runID"` + NodeType string `gorm:"column:node_type;size:100" json:"nodeType"` + NodeID string `gorm:"column:node_id;size:255" json:"nodeID"` + Status string `gorm:"column:status;type:enum('pending','running','fail','success')" json:"status"` + RunOutput string `gorm:"column:run_output;type:text" json:"runOutput"` + RunLog string `gorm:"column:run_log;type:text" json:"runLog"` } type JobFlowRunDAO struct { @@ -84,6 +85,7 @@ type JobFlowRunDAO struct { Content string `gorm:"column:content;type:text" json:"content"` Status string `gorm:"column:status;type:enum('running','fail','success')" json:"status"` CreatedAt time.Time `gorm:"column:created_at;autoCreateTime" json:"createdAt"` + FinishAt *time.Time `gorm:"column:finish_at" json:"finishedAt"` } type JobFlowRun struct { @@ -94,4 +96,5 @@ type JobFlowRun struct { Content FlowData `gorm:"column:content;type:text" json:"content"` Status string `gorm:"column:status;type:enum('running','fail','success')" json:"status"` CreatedAt time.Time `gorm:"column:created_at;autoCreateTime" json:"createdAt"` + FinishAt *time.Time `gorm:"column:finish_at" json:"finishedAt"` } diff --git a/sdks/scheduler/models.go b/sdks/scheduler/models.go index 01a4fcb..f3a920b 100644 --- a/sdks/scheduler/models.go +++ b/sdks/scheduler/models.go @@ -134,8 +134,7 @@ type PCMInferenceJobInfo struct { Description string `json:"description"` Files JobFilesInfo `json:"files"` JobResources JobResources `json:"jobResources"` - - BindingName string `json:"bindingName"` + BindingID DataID `json:"bindingID"` } type AIJobInfo struct { @@ -408,15 +407,6 @@ type DataReturnJobInfo struct { ReportMessage []ReportMessage `json:"reportMessage"` } -type ReportMessage struct { - TaskName string `json:"taskName"` - TaskID string `json:"taskID"` - Status bool `json:"status"` - Message string `json:"message"` - ClusterID ClusterID `json:"clusterID"` - Output string `json:"output"` -} - // MultiInstanceJobInfo 多实例(推理任务) type MultiInstanceJobInfo struct { serder.Metadata `union:"MultiInstance"` @@ -629,3 +619,53 @@ type InferencePlatform struct { SimilarityThreshold string `json:"similarityThreshold"` EntriesPerFile string `json:"entriesPerFile"` } + +type JobOutput interface { + Output() +} + +var JobOutputTypeUnion = types.NewTypeUnion[JobOutput]( + (*AIJobOutput)(nil), + (*BindingJobOutput)(nil), +) + +var _ = serder.UseTypeUnionInternallyTagged(&JobOutputTypeUnion, "type") + +type JobOutputBase struct{} + +func (d *JobOutputBase) Output() {} + +type PublicOutput struct { + serder.Metadata `union:"object"` + JobOutputBase + Type string `json:"type"` +} + +type AIJobOutput struct { + serder.Metadata `union:"object"` + JobOutputBase + Type string `json:"type"` +} + +type BindingJobOutput struct { + serder.Metadata `union:"binding"` + JobOutputBase + Type string `json:"type"` + BindingID DataID `json:"bindingID"` +} + +type DataReturnJobOutput struct { + serder.Metadata `union:"DataReturn"` + JobOutputBase + Type string `json:"type"` + ReportMessage []ReportMessage `json:"reportMessage"` +} + +type ReportMessage struct { + TaskName string `json:"taskName"` + TaskID string `json:"taskID"` + Status bool `json:"status"` + Message string `json:"message"` + ClusterID ClusterID `json:"clusterID"` + Output string `json:"output"` +}