From 567a38d1cbc62ff46dbae7852fa6e3fa20cc5caf Mon Sep 17 00:00:00 2001 From: jagger Date: Fri, 11 Jul 2025 14:55:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=81=94=E9=82=A6=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/scheduler/app.go | 70 ++++++++++++++++++++++++++++++++++++ sdks/scheduler/app_models.go | 42 +++++++++++++++++----- 2 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 sdks/scheduler/app.go diff --git a/sdks/scheduler/app.go b/sdks/scheduler/app.go new file mode 100644 index 0000000..b7df0f9 --- /dev/null +++ b/sdks/scheduler/app.go @@ -0,0 +1,70 @@ +package schsdk + +import ( + cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" + "time" +) + +type App struct { + ID int64 `gorm:"primaryKey;autoIncrement;column:id" json:"id,string"` + Name string `gorm:"column:name;type:varchar(200);not null" json:"name"` // 应用名称 + Description string `gorm:"column:description;type:varchar(500);default:null" json:"description"` // 应用描述 + Version string `gorm:"column:version;type:varchar(100);not null" json:"version"` // 应用版本 + Status string `gorm:"column:status;type:tinyint(1);default:1;not null" json:"status"` // 应用状态 (0:禁用, 1:正常) + UserID cdssdk.UserID `gorm:"column:user_id;type:bigint;default:null" json:"userID"` // 创建者 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP" json:"createdAt"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;default:null;onUpdate:CURRENT_TIMESTAMP" json:"updatedAt"` // 更新时间 + DeletedAt time.Time `gorm:"column:deleted_at;type:timestamp;default:null" json:"-"` // 删除时间 +} +type AppInstanceDao struct { + ID int64 `gorm:"primaryKey;autoIncrement;column:id" json:"id"` // 实例ID + Name string `gorm:"column:name;type:varchar(200);not null" json:"name"` // 实例名称 + Description string `gorm:"column:description;type:varchar(500);default:null" json:"description"` // 实例描述 + Content string `gorm:"column:content;type:text;default:null" json:"content"` // 实例内容 + AppID int64 `gorm:"column:app_id;type:bigint;not null" json:"appID"` // 关联应用ID + AppName string `gorm:"-" json:"appName"` // 应用名称 + UserID cdssdk.UserID `gorm:"column:user_id;type:bigint;default:null" json:"userID"` // 创建者 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP" json:"createdAt"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;default:null;onUpdate:CURRENT_TIMESTAMP" json:"updatedAt"` // 更新时间 + DeletedAt time.Time `gorm:"column:deleted_at;type:timestamp;default:null" json:"-"` // 删除时间 +} +type AppInstance struct { + ID int64 `json:"id"` // 实例ID + Name string `json:"name"` // 实例名称 + Description string `json:"description"` // 实例描述 + Content AppInfo `json:"content"` // 实例内容 + AppID int64 `json:"appID,string"` // 关联应用ID + AppName string `json:"appName"` // 应用名称 + UserID cdssdk.UserID `json:"userID"` // 创建者 + CreatedAt time.Time `json:"createdAt"` // 创建时间 + UpdatedAt time.Time `json:"updatedAt"` // 更新时间 + DeletedAt time.Time `json:"-"` // 删除时间 +} + +type AppRunRecordDao struct { + ID int64 `gorm:"primaryKey;autoIncrement;column:id" json:"id"` // 运行记录ID + AppInstanceID DataID `gorm:"column:app_instance_id;type:bigint;not null" json:"appInstanceID"` // 关联应用实例ID + Content string `gorm:"column:content;type:text;default:null" json:"content"` // 运行内容 + Status string `gorm:"column:status;type:varchar(100);not null" json:"status"` // 运行状态 + RunLog string `gorm:"column:run_log;type:text;default:null" json:"runLog"` // 运行日志 + RunID JobSetID ` gorm:"column:run_id;type:varchar(100);default:null" json:"runID"` // 运行ID + RunOutput string `gorm:"column:run_output;type:text;default:null" json:"runOutput"` // 运行输出 + UserID cdssdk.UserID `gorm:"column:user_id;type:bigint;default:null" json:"userID"` // 创建者 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP" json:"createdAt"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;default:null;onUpdate:CURRENT_TIMESTAMP" json:"updatedAt"` // 更新时间 + DeletedAt time.Time `gorm:"column:deleted_at;type:timestamp;default:null" json:"-"` // 删除时间 +} + +type AppRunRecord struct { + ID int64 `gorm:"primaryKey;autoIncrement;column:id" json:"id"` // 运行记录ID + AppInstanceID DataID `gorm:"column:app_instance_id;type:bigint;not null" json:"appInstanceID"` // 关联应用实例ID + Content AppInfo `gorm:"column:content;type:text;default:null" json:"content"` // 运行内容 + Status string `gorm:"column:status;type:varchar(100);not null" json:"status"` // 运行状态 + RunLog string `gorm:"column:run_log;type:text;default:null" json:"runLog"` // 运行日志 + RunID JobSetID ` gorm:"column:run_id;type:varchar(100);default:null" json:"runID"` // 运行ID + RunOutput string `gorm:"column:run_output;type:text;default:null" json:"runOutput"` // 运行输出 + UserID cdssdk.UserID `gorm:"column:user_id;type:bigint;default:null" json:"userID"` // 创建者 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP" json:"createdAt"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;default:null;onUpdate:CURRENT_TIMESTAMP" json:"updatedAt"` // 更新时间 + DeletedAt time.Time `gorm:"column:deleted_at;type:timestamp;default:null" json:"-"` // 删除时间 +} diff --git a/sdks/scheduler/app_models.go b/sdks/scheduler/app_models.go index 77d5c97..2f3b042 100644 --- a/sdks/scheduler/app_models.go +++ b/sdks/scheduler/app_models.go @@ -2,11 +2,19 @@ package schsdk import ( "gitlink.org.cn/cloudream/common/pkgs/types" + cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" "gitlink.org.cn/cloudream/common/utils/serder" ) +type AppInstanceID string + +type AppSetInfo struct { + Apps []AppInfo `json:"apps"` +} + type AppInfo interface { - GetAppID() string + GetLocalJobID() string + GetAppInstanceID() int64 } var AppInfoTypeUnion = types.NewTypeUnion[AppInfo]( @@ -14,22 +22,40 @@ var AppInfoTypeUnion = types.NewTypeUnion[AppInfo]( (*OtherAppInfo)(nil), ) -var _ = serder.UseTypeUnionInternallyTagged(&JobInfoTypeUnion, "type") +var _ = serder.UseTypeUnionInternallyTagged(&AppInfoTypeUnion, "type") type AppInfoBase struct { - ID string `json:"id"` + LocalJobID string `json:"localJobID"` + AppInstanceID int64 `json:"appInstanceID"` // 应用实例ID +} + +func (i *AppInfoBase) GetLocalJobID() string { + return i.LocalJobID } -func (i *AppInfoBase) GetAppID() string { - return i.ID +func (i *AppInfoBase) GetAppInstanceID() int64 { + return i.AppInstanceID } +// FederatedLearningAppInfo 云际联邦学习应用信息 type FederatedLearningAppInfo struct { serder.Metadata `union:"federatedLearning"` AppInfoBase - Type string `json:"type"` - Name string `json:"name"` - Description string `json:"description"` + Type string `json:"type"` + + AppInstanceID string `json:"appInstanceID"` + Name string `json:"name"` + Description string `json:"description"` + + Participants int `json:"participants"` //参与者人数 + JobResources JobResources `json:"jobResources"` //作业资源 + ClientObjectID cdssdk.ObjectID `json:"clientObjectID"` //client代码 + ServerObjectID cdssdk.ObjectID `json:"serverObjectID"` //server代码 + ModelBindID cdssdk.ObjectID `json:"modelBindID"` //模型绑定id + DatasetBindID cdssdk.ObjectID `json:"datasetBindID"` //数据集绑定id + JobSetID JobSetID `json:"jobSetID"` //工作集ID + Role string `json:"role"` //角色,initiator/participant + DataReturnJobInfo DataReturnJobInfo `json:"dataReturnJobInfo"` //数据返回作业信息 } type OtherAppInfo struct { From 9534618c26ef8c2c3edfbf0f767c5af8a7b84f3c Mon Sep 17 00:00:00 2001 From: jagger Date: Wed, 16 Jul 2025 09:49:53 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=81=94=E9=82=A6=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/pcmscheduler/models.go | 1 + sdks/scheduler/app_models.go | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sdks/pcmscheduler/models.go b/sdks/pcmscheduler/models.go index a116ab8..eb08aca 100644 --- a/sdks/pcmscheduler/models.go +++ b/sdks/pcmscheduler/models.go @@ -98,6 +98,7 @@ const ( NodeTypeAICreate = "ai_job_create" NodeTypeAIJobRun = "ai_job_run" NodeTypeNotify = "notify" + NodeTypeBroadcastWait = "broadcast_wait" Inference = "Inference" Train = "Train" diff --git a/sdks/scheduler/app_models.go b/sdks/scheduler/app_models.go index 2f3b042..b4dee93 100644 --- a/sdks/scheduler/app_models.go +++ b/sdks/scheduler/app_models.go @@ -47,12 +47,13 @@ type FederatedLearningAppInfo struct { Name string `json:"name"` Description string `json:"description"` - Participants int `json:"participants"` //参与者人数 + ParticipantCount int `json:"participantcount"` //参与者人数 JobResources JobResources `json:"jobResources"` //作业资源 ClientObjectID cdssdk.ObjectID `json:"clientObjectID"` //client代码 ServerObjectID cdssdk.ObjectID `json:"serverObjectID"` //server代码 ModelBindID cdssdk.ObjectID `json:"modelBindID"` //模型绑定id DatasetBindID cdssdk.ObjectID `json:"datasetBindID"` //数据集绑定id + ImageBindID cdssdk.ObjectID `json:"imageBindID"` //镜像绑定id JobSetID JobSetID `json:"jobSetID"` //工作集ID Role string `json:"role"` //角色,initiator/participant DataReturnJobInfo DataReturnJobInfo `json:"dataReturnJobInfo"` //数据返回作业信息