Browse Source

模型转换界面交互。

Signed-off-by: zouap <zouap@pcl.ac.cn>
tags/v1.22.7.1
zouap 3 years ago
parent
commit
7348920c2a
5 changed files with 87 additions and 32 deletions
  1. +22
    -26
      models/ai_model_manage.go
  2. +1
    -1
      models/models.go
  3. +10
    -3
      routers/repo/ai_model_manage.go
  4. +2
    -1
      routers/routes/routes.go
  5. +52
    -1
      templates/repo/modelmanage/convertIndex.tmpl

+ 22
- 26
models/ai_model_manage.go View File

@@ -39,18 +39,19 @@ type AiModelManage struct {
IsCanDelete bool IsCanDelete bool
} }


type AiModelManageConvert struct {
ID string `xorm:"pk"`
Name string `xorm:"INDEX NOT NULL"`
Status int `xorm:"NOT NULL DEFAULT 0"`
SrcEngine int `xorm:"NOT NULL DEFAULT 0"`
RepoId int64 `xorm:"INDEX NULL"`
ModelId string `xorm:"NOT NULL"`
ModelVersion string `xorm:"NOT NULL"`
DestFormat int `xorm:"NOT NULL DEFAULT 0"`
NetOutputFormat int `xorm:"NULL"`
UserId int64 `xorm:"NOT NULL"`
RunTime int64 `xorm:"NULL"`
type AiModelConvert struct {
ID string `xorm:"pk"`
Name string `xorm:"INDEX NOT NULL"`
Status string `xorm:"NULL"`
SrcEngine int `xorm:"NOT NULL DEFAULT 0"`
RepoId int64 `xorm:"INDEX NULL"`
ModelId string `xorm:"NOT NULL"`
ModelVersion string `xorm:"NOT NULL"`
DestFormat int `xorm:"NOT NULL DEFAULT 0"`
NetOutputFormat int `xorm:"NULL"`
UserId int64 `xorm:"NOT NULL"`
RunTime int64 `xorm:"NULL"`
TrainJobDuration string
InputShape string `xorm:"varchar(2000)"` InputShape string `xorm:"varchar(2000)"`
InputDataFormat string `xorm:"NOT NULL"` InputDataFormat string `xorm:"NOT NULL"`
Description string `xorm:"varchar(2000)"` Description string `xorm:"varchar(2000)"`
@@ -75,7 +76,7 @@ type AiModelQueryOptions struct {
Status int Status int
} }


func SaveModelConvert(modelConvert *AiModelManageConvert) error {
func SaveModelConvert(modelConvert *AiModelConvert) error {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
re, err := sess.Insert(modelConvert) re, err := sess.Insert(modelConvert)
@@ -100,11 +101,11 @@ func SaveModelToDb(model *AiModelManage) error {
return nil return nil
} }


func QueryModelConvertById(id string) (*AiModelManageConvert, error) {
func QueryModelConvertById(id string) (*AiModelConvert, error) {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
sess.Select("*").Table(new(AiModelManageConvert)).Where("id='" + id + "'")
aiModelManageConvertList := make([]*AiModelManageConvert, 0)
sess.Select("*").Table(new(AiModelConvert)).Where("id='" + id + "'")
aiModelManageConvertList := make([]*AiModelConvert, 0)
err := sess.Find(&aiModelManageConvertList) err := sess.Find(&aiModelManageConvertList)
if err == nil { if err == nil {
if len(aiModelManageConvertList) == 1 { if len(aiModelManageConvertList) == 1 {
@@ -132,7 +133,7 @@ func QueryModelById(id string) (*AiModelManage, error) {
func DeleteModelConvertById(id string) error { func DeleteModelConvertById(id string) error {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
re, err := sess.Delete(&AiModelManageConvert{
re, err := sess.Delete(&AiModelConvert{
ID: id, ID: id,
}) })
if err != nil { if err != nil {
@@ -264,7 +265,7 @@ func QueryModel(opts *AiModelQueryOptions) ([]*AiModelManage, int64, error) {
return aiModelManages, count, nil return aiModelManages, count, nil
} }


func QueryModelConvert(opts *AiModelQueryOptions) ([]*AiModelManageConvert, int64, error) {
func QueryModelConvert(opts *AiModelQueryOptions) ([]*AiModelConvert, int64, error) {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
var cond = builder.NewCond() var cond = builder.NewCond()
@@ -278,12 +279,7 @@ func QueryModelConvert(opts *AiModelQueryOptions) ([]*AiModelManageConvert, int6
builder.Eq{"ai_model_manage_convert.user_id": opts.UserID}, builder.Eq{"ai_model_manage_convert.user_id": opts.UserID},
) )
} }
if (opts.Status) >= 0 {
cond = cond.And(
builder.Eq{"ai_model_manage_convert.status": opts.Status},
)
}
count, err := sess.Where(cond).Count(new(AiModelManageConvert))
count, err := sess.Where(cond).Count(new(AiModelConvert))
if err != nil { if err != nil {
return nil, 0, fmt.Errorf("Count: %v", err) return nil, 0, fmt.Errorf("Count: %v", err)
} }
@@ -298,8 +294,8 @@ func QueryModelConvert(opts *AiModelQueryOptions) ([]*AiModelManageConvert, int6
sess.Limit(opts.PageSize, start) sess.Limit(opts.PageSize, start)
} }
sess.OrderBy("ai_model_manage_convert.created_unix DESC") sess.OrderBy("ai_model_manage_convert.created_unix DESC")
aiModelManageConvert := make([]*AiModelManageConvert, 0, setting.UI.IssuePagingNum)
if err := sess.Table(new(AiModelManageConvert)).Where(cond).
aiModelManageConvert := make([]*AiModelConvert, 0, setting.UI.IssuePagingNum)
if err := sess.Table(new(AiModelConvert)).Where(cond).
Find(&aiModelManageConvert); err != nil { Find(&aiModelManageConvert); err != nil {
return nil, 0, fmt.Errorf("Find: %v", err) return nil, 0, fmt.Errorf("Find: %v", err)
} }


+ 1
- 1
models/models.go View File

@@ -144,7 +144,7 @@ func init() {
new(WechatBindLog), new(WechatBindLog),
new(OrgStatistic), new(OrgStatistic),
new(SearchRecord), new(SearchRecord),
new(AiModelManageConvert),
new(AiModelConvert),
) )


tablesStatistic = append(tablesStatistic, tablesStatistic = append(tablesStatistic,


+ 10
- 3
routers/repo/ai_model_manage.go View File

@@ -164,7 +164,7 @@ func SaveModelConvert(ctx *context.Context) {


uuid := uuid.NewV4() uuid := uuid.NewV4()
id := uuid.String() id := uuid.String()
modelConvert := &models.AiModelManageConvert{
modelConvert := &models.AiModelConvert{
ID: id, ID: id,
Name: name, Name: name,
Description: desc, Description: desc,
@@ -262,7 +262,7 @@ func downloadModelFromCloudBrainOne(modelUUID string, jobName string, parentDir


func DeleteModelConvert(ctx *context.Context) { func DeleteModelConvert(ctx *context.Context) {
log.Info("delete model convert start.") log.Info("delete model convert start.")
id := ctx.Query("ID")
id := ctx.Params(":id")
err := models.DeleteModelConvertById(id) err := models.DeleteModelConvertById(id)
if err != nil { if err != nil {
ctx.JSON(500, err.Error()) ctx.JSON(500, err.Error())
@@ -273,6 +273,11 @@ func DeleteModelConvert(ctx *context.Context) {
} }
} }


func StopModelConvert(ctx *context.Context) {
id := ctx.Params(":id")
log.Info("stop model convert start.id=" + id)
}

func DeleteModel(ctx *context.Context) { func DeleteModel(ctx *context.Context) {
log.Info("delete model start.") log.Info("delete model start.")
id := ctx.Query("ID") id := ctx.Query("ID")
@@ -679,7 +684,7 @@ func ConvertModelTemplate(ctx *context.Context) {
ctx.Data["MODEL_COUNT"] = 0 ctx.Data["MODEL_COUNT"] = 0
ctx.Data["ModelManageAccess"] = ctx.Repo.CanWrite(models.UnitTypeModelManage) ctx.Data["ModelManageAccess"] = ctx.Repo.CanWrite(models.UnitTypeModelManage)
ctx.Data["TRAIN_COUNT"] = 0 ctx.Data["TRAIN_COUNT"] = 0
ShowModelConvertPageInfo(ctx)
ctx.HTML(200, tplModelManageConvertIndex) ctx.HTML(200, tplModelManageConvertIndex)
} }


@@ -757,6 +762,8 @@ func ShowModelConvertPageInfo(ctx *context.Context) {
model.UserRelAvatarLink = value.RelAvatarLink() model.UserRelAvatarLink = value.RelAvatarLink()
} }
} }
pager := context.NewPagination(int(count), page, pageSize, 5)
ctx.Data["Page"] = pager
ctx.Data["Tasks"] = modelResult ctx.Data["Tasks"] = modelResult


} }


+ 2
- 1
routers/routes/routes.go View File

@@ -1080,7 +1080,8 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/create_model_convert", reqRepoModelManageWriter, repo.SaveModelConvert) m.Post("/create_model_convert", reqRepoModelManageWriter, repo.SaveModelConvert)
m.Post("/create_new_model", repo.SaveNewNameModel) m.Post("/create_new_model", repo.SaveNewNameModel)
m.Delete("/delete_model", repo.DeleteModel) m.Delete("/delete_model", repo.DeleteModel)
m.Delete("/delete_model_convert", repo.DeleteModelConvert)
m.Post("/delete_model_convert/:id", repo.DeleteModelConvert)
m.Post("/convert_stop/:id", repo.StopModelConvert)
m.Put("/modify_model", repo.ModifyModelInfo) m.Put("/modify_model", repo.ModifyModelInfo)
m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate) m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate)
m.Get("/convert_model", reqRepoModelManageReader, repo.ConvertModelTemplate) m.Get("/convert_model", reqRepoModelManageReader, repo.ConvertModelTemplate)


+ 52
- 1
templates/repo/modelmanage/convertIndex.tmpl View File

@@ -75,7 +75,58 @@
<span class="fitted" style="width: 90%;vertical-align: middle;">{{.Name}}</span> <span class="fitted" style="width: 90%;vertical-align: middle;">{{.Name}}</span>
</a> </a>
</div> </div>
<div class="one wide column padding0" style="padding-left: 2.2rem !important;">
<span class="job-status" id="{{.ID}}">
<span><i id="{{.ID}}-icon" style="vertical-align: middle;" class="{{.Status}}"></i><span id="{{.ID}}-text" style="margin-left: 0.4em;font-size: 12px;">{{.Status}}</span></span>
</span>
</div>
<div class="two wide column padding0">
<span style="font-size: 12px;">{{.SrcEngine}}</span>
</div>
<div class="two wide column padding0">
<span style="font-size: 12px;">{{.DestFormat}}</span>
</div>
<div class="two wide column padding0">
<span style="font-size: 12px;" class="">{{TimeSinceUnix .CreatedUnix $.Lang}}</span>
</div>
<div class="two wide column padding0">
<span style="font-size: 12px;" id="duration-{{.ID}}">{{.TrainJobDuration}}</span>
</div>
<div class="one wide column text center padding0">
<a href="{{AppSubUrl}}/{{.UserName}}" title="{{.UserName}}"><img class="ui avatar image" src="{{.RelAvatarLink}}"></a>
</div>
<div class="three wide column text center padding0">
<div class="ui compact buttons" >
<!-- 停止任务 -->
<form id="stopForm-{{.ID}}" style="margin-left:-1px;">
{{$.CsrfTokenHtml}}
{{if .IsCanOper}}
<a id="ai-stop-{{.ID}}" class='ui basic ai_stop {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "STOPPING" "CREATING" "STARTING" "SUCCEEDED"}}disabled {{else}}blue {{end}}button' data-repopath="{{$.RepoLink}}/modelmanage/convert_stop/{{.ID}}" data-jobid="{{.ID}}">
{{$.i18n.Tr "repo.stop"}}
</a>
{{else}}
<a class="ui basic disabled button">
{{$.i18n.Tr "repo.stop"}}
</a>
{{end}}
</form>
<!-- 删除任务 -->
<form id="delForm-{{.ID}}" action="{{$.RepoLink}}/modelmanage/delete_model_convert/{{.ID}}" method="post">
<input type="hidden" name="debugListType" value="all">
{{$.CsrfTokenHtml}}
{{if .IsCanDelete}}
<a id="ai-delete-{{.ID}}" class='ui basic ai_delete {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "SUCCEEDED"}}blue {{else}}disabled {{end}}button' style="border-radius: .28571429rem;">
{{$.i18n.Tr "repo.delete"}}
</a>
{{else}}
<a class="ui basic button disabled" style="border-radius: .28571429rem;">
{{$.i18n.Tr "repo.delete"}}
</a>
{{end}}
</form>
</div>
</div>
</div> </div>
</div> </div>
{{end}} {{end}}


Loading…
Cancel
Save