package services import ( "eta/eta_api/cache" predictModel "eta/eta_api/models/ai_predict_model" "eta/eta_api/models/data_manage" "eta/eta_api/models/system" "eta/eta_api/utils" "fmt" "time" ) // AddAiModelTrainTask // @Description: 添加模型训练任务 // @author: Roc // @datetime 2025-05-08 14:28:13 // @param aiIndex *predictModel.AiPredictModelIndex // @param indexConfig *predictModel.AiPredictModelIndexConfig // @param sysUser *system.Admin func AddAiModelTrainTask(aiIndex *predictModel.AiPredictModelIndex, indexConfig *predictModel.AiPredictModelIndexConfig, sysUser *system.Admin) { var err error defer func() { if err != nil { utils.FileLog.Error(fmt.Sprintf("AddAiModelTrainTask error: %s", err.Error())) } }() taskName := fmt.Sprintf("《%s》模型训练-%s", aiIndex.IndexName, time.Now().Format(utils.FormatShortDateTimeUnSpace)) indexTask := &data_manage.IndexTask{ IndexTaskID: 0, TaskName: taskName, TaskType: utils.INDEX_TASK_TYPE_AI_MODEL_TRAIN, Status: "待处理", //StartTime: time.Time{}, //EndTime: time.Time{}, CreateTime: time.Now(), UpdateTime: time.Now(), Logs: "", Errormessage: "", Priority: 0, RetryCount: 0, Remark: "", SysUserID: sysUser.AdminId, SysUserRealName: sysUser.RealName, } taskRecordList := make([]*data_manage.IndexTaskRecord, 0) taskRecord := &data_manage.IndexTaskRecord{ IndexTaskRecordID: 0, IndexTaskID: 0, Parameters: fmt.Sprint(indexConfig.AiPredictModelIndexConfigId), Status: "待处理", Remark: "", ModifyTime: time.Now(), CreateTime: time.Now(), } taskRecordList = append(taskRecordList, taskRecord) // 创建AI模块的任务,用于后面的任务调度去生成摘要 err = data_manage.AddIndexTask(indexTask, taskRecordList) if err != nil { return } // 添加到缓存队列中 go addIndexTaskToCache(indexTask.IndexTaskID, indexTask.TaskType) return } // AddAiModelRunTask // @Description: 添加模型运行任务 // @author: Roc // @datetime 2025-05-08 14:33:38 // @param aiModelIndexIdList []int 标的模型ID列表 // @param sysUser *system.Admin func AddAiModelRunTask(aiModelIndexIdList []int, sysUser *system.Admin) { var err error defer func() { if err != nil { utils.FileLog.Error(fmt.Sprintf("AddAiModelTrainTask error: %s", err.Error())) } }() taskName := fmt.Sprintf("模型运行-%s", time.Now().Format(utils.FormatShortDateTimeUnSpace)) indexTask := &data_manage.IndexTask{ IndexTaskID: 0, TaskName: taskName, TaskType: utils.INDEX_TASK_TYPE_AI_MODEL_RUN, Status: "待处理", //StartTime: time.Time{}, //EndTime: time.Time{}, CreateTime: time.Now(), UpdateTime: time.Now(), Logs: "", Errormessage: "", Priority: 0, RetryCount: 0, Remark: "", SysUserID: sysUser.AdminId, SysUserRealName: sysUser.RealName, } taskRecordList := make([]*data_manage.IndexTaskRecord, 0) for _, aiModelIndexId := range aiModelIndexIdList { taskRecord := &data_manage.IndexTaskRecord{ IndexTaskRecordID: 0, IndexTaskID: 0, Parameters: fmt.Sprint(aiModelIndexId), Status: "待处理", Remark: "", ModifyTime: time.Now(), CreateTime: time.Now(), } taskRecordList = append(taskRecordList, taskRecord) } // 创建AI模块的任务,用于后面的任务调度去生成摘要 err = data_manage.AddIndexTask(indexTask, taskRecordList) if err != nil { return } // 添加到缓存队列中 go addIndexTaskToCache(indexTask.IndexTaskID, indexTask.TaskType) return } // addIndexTaskToCache // @Description: 根据任务ID将待处理的任务丢入到list中 // @author: Roc // @datetime 2025-05-08 14:30:05 // @param indexTaskId int // @param taskType string func addIndexTaskToCache(indexTaskId int, taskType string) { var err error defer func() { if err != nil { utils.FileLog.Error("addTaskToCache error: %v", err) } }() obj := data_manage.IndexTaskRecord{} list, err := obj.GetAllListByCondition(" index_task_record_id ", ` AND index_task_id = ? AND status = ? `, []interface{}{indexTaskId, `待处理`}) if err != nil { return } for _, item := range list { cache.AddIndexTaskRecordOpToCache(item.IndexTaskRecordID, taskType) } } func AddIndexTaskToCache(indexTaskId int, taskType string) { addIndexTaskToCache(indexTaskId, taskType) }