pcm-coordinator/internal/scheduler/service/inference/textInference/textInference.go

95 lines
2.1 KiB
Go

package textInference
import (
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/database"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/schedulers/option"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/inference"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
)
type ITextInference interface {
SaveAiTask(id int64, adapterName string) error
UpdateStatus(aiTaskList []*models.TaskAi, adapterName string) error
GetAiType() string
}
type FilteredCluster struct {
urls []*inference.InferUrl
clusterId string
clusterName string
clusterType string
}
type TextInference struct {
inference ITextInference
opt *option.InferOption
storage *database.AiStorage
errMap map[string]string
adapterName string
}
func New(
inference ITextInference,
opt *option.InferOption,
storage *database.AiStorage,
adapterName string) (*TextInference, error) {
return &TextInference{
inference: inference,
opt: opt,
storage: storage,
adapterName: adapterName,
errMap: make(map[string]string),
}, nil
}
func (ti *TextInference) CreateTask() (int64, error) {
id, err := ti.saveTask()
if err != nil {
return 0, err
}
err = ti.saveAiTask(id)
if err != nil {
return 0, err
}
return id, nil
}
func (ti *TextInference) InferTask(id int64) error {
aiTaskList, err := ti.storage.GetAiTaskListById(id)
if err != nil || len(aiTaskList) == 0 {
return err
}
err = ti.updateStatus(aiTaskList)
if err != nil {
return err
}
return nil
}
func (ti *TextInference) saveTask() (int64, error) {
var synergystatus int64
var strategyCode int64
id, err := ti.storage.SaveTask(ti.opt.TaskName, strategyCode, synergystatus, ti.inference.GetAiType())
if err != nil {
return 0, err
}
return id, nil
}
func (ti *TextInference) saveAiTask(id int64) error {
err := ti.inference.SaveAiTask(id, ti.adapterName)
if err != nil {
return err
}
return nil
}
func (ti *TextInference) updateStatus(aiTaskList []*models.TaskAi) error {
err := ti.inference.UpdateStatus(aiTaskList, ti.adapterName)
if err != nil {
return err
}
return nil
}