ai_predict_model_index_config.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package services
  2. import (
  3. "eta/eta_api/cache"
  4. predictModel "eta/eta_api/models/ai_predict_model"
  5. "eta/eta_api/models/data_manage"
  6. "eta/eta_api/models/system"
  7. "eta/eta_api/utils"
  8. "fmt"
  9. "time"
  10. )
  11. // AddAiModelTrainTask
  12. // @Description: 添加模型训练任务
  13. // @author: Roc
  14. // @datetime 2025-05-08 14:28:13
  15. // @param aiIndex *predictModel.AiPredictModelIndex
  16. // @param indexConfig *predictModel.AiPredictModelIndexConfig
  17. // @param sysUser *system.Admin
  18. func AddAiModelTrainTask(aiIndex *predictModel.AiPredictModelIndex, indexConfig *predictModel.AiPredictModelIndexConfig, sysUser *system.Admin) {
  19. var err error
  20. defer func() {
  21. if err != nil {
  22. utils.FileLog.Error(fmt.Sprintf("AddAiModelTrainTask error: %s", err.Error()))
  23. }
  24. }()
  25. taskName := fmt.Sprintf("《%s》模型训练-%s", aiIndex.IndexName, time.Now().Format(utils.FormatShortDateTimeUnSpace))
  26. indexTask := &data_manage.IndexTask{
  27. IndexTaskID: 0,
  28. TaskName: taskName,
  29. TaskType: utils.INDEX_TASK_TYPE_AI_MODEL_TRAIN,
  30. Status: "待处理",
  31. //StartTime: time.Time{},
  32. //EndTime: time.Time{},
  33. CreateTime: time.Now(),
  34. UpdateTime: time.Now(),
  35. Logs: "",
  36. Errormessage: "",
  37. Priority: 0,
  38. RetryCount: 0,
  39. Remark: "",
  40. SysUserID: sysUser.AdminId,
  41. SysUserRealName: sysUser.RealName,
  42. }
  43. taskRecordList := make([]*data_manage.IndexTaskRecord, 0)
  44. taskRecord := &data_manage.IndexTaskRecord{
  45. IndexTaskRecordID: 0,
  46. IndexTaskID: 0,
  47. Parameters: fmt.Sprint(indexConfig.AiPredictModelIndexConfigId),
  48. Status: "待处理",
  49. Remark: "",
  50. ModifyTime: time.Now(),
  51. CreateTime: time.Now(),
  52. }
  53. taskRecordList = append(taskRecordList, taskRecord)
  54. // 创建AI模块的任务,用于后面的任务调度去生成摘要
  55. err = data_manage.AddIndexTask(indexTask, taskRecordList)
  56. if err != nil {
  57. return
  58. }
  59. // 添加到缓存队列中
  60. go addIndexTaskToCache(indexTask.IndexTaskID, indexTask.TaskType)
  61. return
  62. }
  63. // AddAiModelRunTask
  64. // @Description: 添加模型运行任务
  65. // @author: Roc
  66. // @datetime 2025-05-08 14:33:38
  67. // @param aiModelIndexIdList []int 标的模型ID列表
  68. // @param sysUser *system.Admin
  69. func AddAiModelRunTask(aiModelIndexIdList []int, sysUser *system.Admin) {
  70. var err error
  71. defer func() {
  72. if err != nil {
  73. utils.FileLog.Error(fmt.Sprintf("AddAiModelTrainTask error: %s", err.Error()))
  74. }
  75. }()
  76. taskName := fmt.Sprintf("模型运行-%s", time.Now().Format(utils.FormatShortDateTimeUnSpace))
  77. indexTask := &data_manage.IndexTask{
  78. IndexTaskID: 0,
  79. TaskName: taskName,
  80. TaskType: utils.INDEX_TASK_TYPE_AI_MODEL_RUN,
  81. Status: "待处理",
  82. //StartTime: time.Time{},
  83. //EndTime: time.Time{},
  84. CreateTime: time.Now(),
  85. UpdateTime: time.Now(),
  86. Logs: "",
  87. Errormessage: "",
  88. Priority: 0,
  89. RetryCount: 0,
  90. Remark: "",
  91. SysUserID: sysUser.AdminId,
  92. SysUserRealName: sysUser.RealName,
  93. }
  94. taskRecordList := make([]*data_manage.IndexTaskRecord, 0)
  95. for _, aiModelIndexId := range aiModelIndexIdList {
  96. taskRecord := &data_manage.IndexTaskRecord{
  97. IndexTaskRecordID: 0,
  98. IndexTaskID: 0,
  99. Parameters: fmt.Sprint(aiModelIndexId),
  100. Status: "待处理",
  101. Remark: "",
  102. ModifyTime: time.Now(),
  103. CreateTime: time.Now(),
  104. }
  105. taskRecordList = append(taskRecordList, taskRecord)
  106. }
  107. // 创建AI模块的任务,用于后面的任务调度去生成摘要
  108. err = data_manage.AddIndexTask(indexTask, taskRecordList)
  109. if err != nil {
  110. return
  111. }
  112. // 添加到缓存队列中
  113. go addIndexTaskToCache(indexTask.IndexTaskID, indexTask.TaskType)
  114. return
  115. }
  116. // addIndexTaskToCache
  117. // @Description: 根据任务ID将待处理的任务丢入到list中
  118. // @author: Roc
  119. // @datetime 2025-05-08 14:30:05
  120. // @param indexTaskId int
  121. // @param taskType string
  122. func addIndexTaskToCache(indexTaskId int, taskType string) {
  123. var err error
  124. defer func() {
  125. if err != nil {
  126. utils.FileLog.Error("addTaskToCache error: %v", err)
  127. }
  128. }()
  129. obj := data_manage.IndexTaskRecord{}
  130. list, err := obj.GetAllListByCondition(" index_task_record_id ", ` AND index_task_id = ? AND status = ? `, []interface{}{indexTaskId, `待处理`})
  131. if err != nil {
  132. return
  133. }
  134. for _, item := range list {
  135. cache.AddIndexTaskRecordOpToCache(item.IndexTaskRecordID, taskType)
  136. }
  137. }
  138. func AddIndexTaskToCache(indexTaskId int, taskType string) {
  139. addIndexTaskToCache(indexTaskId, taskType)
  140. }