package controller import ( "context" "model-asynch/model/dto" "model-asynch/service" "gitea.com/red-future/common/beans" ) type model struct{} // Model 模型配置控制器 var Model = new(model) // CreateModel 添加配置 func (c *model) CreateModel(ctx context.Context, req *dto.CreateModelReq) (res *dto.CreateModelRes, err error) { ctx = ensureUser(ctx) return service.Model.Create(ctx, req) } // UpdateModel 更改配置 func (c *model) UpdateModel(ctx context.Context, req *dto.UpdateModelReq) (res *beans.ResponseEmpty, err error) { ctx = ensureUser(ctx) err = service.Model.Update(ctx, req) return } // DeleteModel 删除配置 func (c *model) DeleteModel(ctx context.Context, req *dto.DeleteModelReq) (res *beans.ResponseEmpty, err error) { ctx = ensureUser(ctx) err = service.Model.Delete(ctx, req.ID) return } // GetModel 获取配置详情(按 modelName) func (c *model) GetModel(ctx context.Context, req *dto.GetModelReq) (res *dto.GetModelRes, err error) { ctx = ensureUser(ctx) m, err := service.Model.Get(ctx, req.ID) if err != nil { return nil, err } return &dto.GetModelRes{Model: m}, nil } // ListModel 配置列表 func (c *model) ListModel(ctx context.Context, req *dto.ListModelReq) (res *dto.ListModelRes, err error) { ctx = ensureUser(ctx) pageNum, pageSize := 1, 10 //默认分页参数 if req != nil && req.Page != nil { if req.Page.PageNum > 0 { pageNum = int(req.Page.PageNum) } if req.Page.PageSize > 0 { pageSize = int(req.Page.PageSize) } } modelName := "" if req != nil { modelName = req.ModelName } list, total, err := service.Model.List(ctx, pageNum, pageSize, modelName) if err != nil { return nil, err } return &dto.ListModelRes{ List: list, Total: total, }, nil } // AutoTune 动态调参(由上层定时任务每小时触发一次) func (c *model) AutoTune(ctx context.Context, req *dto.AutoTuneReq) (res *dto.AutoTuneRes, err error) { ctx = ensureUser(ctx) windowSeconds := 3600 if req != nil && req.WindowSeconds > 0 { windowSeconds = req.WindowSeconds } list, err := service.AutoTune(ctx, windowSeconds) if err != nil { return nil, err } return &dto.AutoTuneRes{List: list}, nil }