Browse Source

Merge branch 'V20211213' into liuzx_trainjob

tags/v1.21.12.1^2
zhoupzh 4 years ago
parent
commit
db5833a2fd
3 changed files with 64 additions and 32 deletions
  1. +21
    -22
      models/ai_model_manage.go
  2. +0
    -1
      models/user_business_analysis.go
  3. +43
    -9
      routers/repo/ai_model_manage.go

+ 21
- 22
models/ai_model_manage.go View File

@@ -11,30 +11,30 @@ import (
)

type AiModelManage struct {
ID string `xorm:"pk"`
Name string `xorm:"NOT NULL"`
Version string `xorm:"NOT NULL"`
VersionCount int `xorm:"NOT NULL DEFAULT 0"`
New int `xorm:"NOT NULL"`
Type int `xorm:"NOT NULL"`
Size int64 `xorm:"NOT NULL"`
Description string `xorm:"varchar(2000)"`
Label string `xorm:"varchar(1000)"`
Path string `xorm:"varchar(400) NOT NULL"`
DownloadCount int `xorm:"NOT NULL DEFAULT 0"`
Engine int64 `xorm:"NOT NULL DEFAULT 0"`
Status int `xorm:"NOT NULL DEFAULT 0"`
Accuracy string `xorm:"varchar(1000)"`
AttachmentId string `xorm:"NULL"`
RepoId int64 `xorm:"NULL"`
CodeBranch string `xorm:"varchar(400) NULL"`
CodeCommitID string `xorm:"NULL"`
UserId int64 `xorm:"NOT NULL"`
UserName string `xorm:"NULL"`
ID string `xorm:"pk"`
Name string `xorm:"INDEX NOT NULL"`
Version string `xorm:"NOT NULL"`
VersionCount int `xorm:"NOT NULL DEFAULT 0"`
New int `xorm:"NOT NULL"`
Type int `xorm:"NOT NULL"`
Size int64 `xorm:"NOT NULL"`
Description string `xorm:"varchar(2000)"`
Label string `xorm:"varchar(1000)"`
Path string `xorm:"varchar(400) NOT NULL"`
DownloadCount int `xorm:"NOT NULL DEFAULT 0"`
Engine int64 `xorm:"NOT NULL DEFAULT 0"`
Status int `xorm:"NOT NULL DEFAULT 0"`
Accuracy string `xorm:"varchar(1000)"`
AttachmentId string `xorm:"NULL"`
RepoId int64 `xorm:"INDEX NULL"`
CodeBranch string `xorm:"varchar(400) NULL"`
CodeCommitID string `xorm:"NULL"`
UserId int64 `xorm:"NOT NULL"`
UserName string
UserRelAvatarLink string `xorm:"NULL"`
TrainTaskInfo string `xorm:"text NULL"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
IsCanOper bool
}

@@ -197,7 +197,6 @@ func QueryModel(opts *AiModelQueryOptions) ([]*AiModelManage, int64, error) {
Find(&aiModelManages); err != nil {
return nil, 0, fmt.Errorf("Find: %v", err)
}
sess.Close()

return aiModelManages, count, nil
}

+ 0
- 1
models/user_business_analysis.go View File

@@ -649,7 +649,6 @@ func querySolveIssue(start_unix int64, end_unix int64) map[int64]int {
}
}
return resultMap

}

func queryPullRequest(start_unix int64, end_unix int64) map[int64]int {


+ 43
- 9
routers/repo/ai_model_manage.go View File

@@ -28,7 +28,6 @@ const (

func saveModelByParameters(jobId string, versionName string, name string, version string, label string, description string, ctx *context.Context) error {
aiTask, err := models.GetCloudbrainByJobIDAndVersionName(jobId, versionName)
//aiTask, err := models.GetCloudbrainByJobID(jobId)
if err != nil {
log.Info("query task error." + err.Error())
return err
@@ -56,7 +55,7 @@ func saveModelByParameters(jobId string, versionName string, name string, versio
cloudType = aiTask.Type
//download model zip //train type
if cloudType == models.TypeCloudBrainTwo {
modelPath, modelSize, err = downloadModelFromCloudBrainTwo(id, aiTask.JobName, "")
modelPath, modelSize, err = downloadModelFromCloudBrainTwo(id, aiTask.JobName, "", aiTask.TrainUrl)
if err != nil {
log.Info("download model from CloudBrainTwo faild." + err.Error())
return err
@@ -71,7 +70,6 @@ func saveModelByParameters(jobId string, versionName string, name string, versio
log.Info("accuracyJson=" + string(accuracyJson))
aiTaskJson, _ := json.Marshal(aiTask)

//taskConfigInfo,err := models.GetCloudbrainByJobIDAndVersionName(jobId,aiTask.VersionName)
model := &models.AiModelManage{
ID: id,
Version: version,
@@ -86,7 +84,6 @@ func saveModelByParameters(jobId string, versionName string, name string, versio
AttachmentId: aiTask.Uuid,
RepoId: aiTask.RepoID,
UserId: ctx.User.ID,
UserName: ctx.User.Name,
UserRelAvatarLink: ctx.User.RelAvatarLink(),
CodeBranch: aiTask.BranchName,
CodeCommitID: aiTask.CommitID,
@@ -144,9 +141,12 @@ func SaveModel(ctx *context.Context) {
log.Info("save model end.")
}

func downloadModelFromCloudBrainTwo(modelUUID string, jobName string, parentDir string) (string, int64, error) {

func downloadModelFromCloudBrainTwo(modelUUID string, jobName string, parentDir string, trainUrl string) (string, int64, error) {
objectkey := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, jobName, setting.OutPutPath, parentDir), "/")
if trainUrl != "" {
objectkey = strings.Trim(trainUrl[len(setting.Bucket)+1:], "/")
}

modelDbResult, err := storage.GetOneLevelAllObjectUnderDir(setting.Bucket, objectkey, "")
log.Info("bucket=" + setting.Bucket + " objectkey=" + objectkey)
if err != nil {
@@ -395,15 +395,42 @@ func ShowSingleModel(ctx *context.Context) {
ctx.JSON(http.StatusOK, models)
}

func queryUserName(intSlice []int64) map[int64]string {
keys := make(map[int64]string)
uniqueElements := []int64{}
for _, entry := range intSlice {
if _, value := keys[entry]; !value {
keys[entry] = ""
uniqueElements = append(uniqueElements, entry)
}
}
userNames, err := models.GetUserNamesByIDs(uniqueElements)
if err == nil {
for i, userName := range userNames {
keys[uniqueElements[i]] = userName
}
}
return keys
}

func ShowOneVersionOtherModel(ctx *context.Context) {
repoId := ctx.Repo.Repository.ID
name := ctx.Query("name")
aimodels := models.QueryModelByName(name, repoId)
for _, model := range aimodels {

userIds := make([]int64, len(aimodels))
for i, model := range aimodels {
log.Info("model=" + model.Name)
log.Info("model.UserId=" + fmt.Sprint(model.UserId))
model.IsCanOper = isOper(ctx, model.UserId)
userIds[i] = model.UserId
}
userNameMap := queryUserName(userIds)

for _, model := range aimodels {
model.UserName = userNameMap[model.UserId]
}

if len(aimodels) > 0 {
ctx.JSON(200, aimodels[1:])
} else {
@@ -431,7 +458,7 @@ func isOper(ctx *context.Context, modelUserId int64) bool {
if ctx.User == nil {
return false
}
if ctx.User.IsAdmin || ctx.Repo.IsAdmin() || ctx.Repo.IsOwner() || ctx.User.ID == modelUserId {
if ctx.User.IsAdmin || ctx.Repo.IsOwner() || ctx.User.ID == modelUserId {
return true
}
return false
@@ -463,10 +490,17 @@ func ShowModelPageInfo(ctx *context.Context) {
return
}

for _, model := range modelResult {
userIds := make([]int64, len(modelResult))
for i, model := range modelResult {
log.Info("model=" + model.Name)
log.Info("model.UserId=" + fmt.Sprint(model.UserId))
model.IsCanOper = isOper(ctx, model.UserId)
userIds[i] = model.UserId
}

userNameMap := queryUserName(userIds)
for _, model := range modelResult {
model.UserName = userNameMap[model.UserId]
}

mapInterface := make(map[string]interface{})


Loading…
Cancel
Save