zhangzengfei
2023-11-28 3a706d3378aa3626501370352963883fd2783558
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package vo
 
import (
    "strings"
    "time"
    "vamicro/appcenter-service/models"
)
 
type SdkVo struct {
    models.Sdk
    Args            []models.SdkArg `json:"args"` //算法参数
}
 
type SdkRegisterVo struct {
    Id                 string                     `json:"id"`
    SdkType         string                     `json:"sdk_type"`//人脸检测:FaceDetect,人脸提取:FaceExtract,人脸比对:FaceCompare,行为:Yolo
    SdkName         string                     `json:"sdk_name"`    //算法名称
    Args            []SdkRegisterArgVo         `json:"args"` //算法参数
    Icon            string                     `json:"icon"`       //算法图标
    Url             string                     `json:"url"`                       //算法下载地址
    IconBlob         string                     `json:"iconBlob"` //图片
    IconBlob2         string                     `json:"iconBlob2"` //第二套图片
    Version         string                     `json:"version"` //版本号
    EnTrack         bool                     `json:"enTrack"`
    ArgDef             string                     `json:"argDef"`
    RuleSo             string                     `json:"rule_so"`
    BaseVersion     string                     `json:"baseVersion"`
}
 
type SdkRegisterArgVo struct {
    Scope string `json:"scope"`
    models.SdkArg
 
    Dics []SdkArgDic `json:"dics"` //如果此算法参数是被选项,需要将参数枚举值写入到字典表中
}
 
type SdkArgDic struct {
    Value string `json:"value"`
    Name string `json:"name"`
    Sort int `json:"sort"`
}
 
func (sra *SdkRegisterArgVo) Copy2SdkArg() models.SdkArg {
    return sra.SdkArg
}
 
func (sv *SdkRegisterVo)Copy2Sdk() models.Sdk {
    argDef := strings.Replace(sv.ArgDef, "\\u003c", "<", -1)
    argDef = strings.Replace(argDef, "\\u003e", ">", -1)
    argDef = strings.Replace(argDef, "\\u0026", "&", -1)
    return models.Sdk{
        Id         :sv.Id,
        IpcId      :"",
        SdkType    :sv.SdkType,
        SdkName    :sv.SdkName,
        Icon       :sv.Icon,
        Url        :sv.Url,
        CreateTime :time.Now().Format("2006-01-02 15:04:05"),
        CreateBy   :"basic",
        UpdateTime :time.Now().Format("2006-01-02 15:04:05"),
        Enable     :true,
        DelFlag    :0,
        IconBlob: sv.IconBlob,
        IconBlob2: sv.IconBlob2,
        Version: sv.Version,
        EnTrack: sv.EnTrack,
        ArgDef: argDef,
        RuleSo: sv.RuleSo,
        BaseVersion: sv.BaseVersion,
    }
}
 
type SdkArgDefault struct {
    SdkId                     string             `json:"sdkId" binding:"required"`
    DefArgs                 []ArgDefault     `json:"defArgs" binding:"required"`
}
 
type ArgDefault struct {
    ArgType                 string             `json:"arg_type" example:"标签:label,目标:target"`
    Alias                     string             `json:"alias" example:"参数别名,例如:confidence"`
    Name                     string           `json:"name" example:"参数名,例如:置信度"`
    Type                     string             `json:"type" example:"类型,值:value,选项:option"`
    Operators                 []OperatorKV     `json:"operators"`
    DefaultValue             string             `json:"default_value" example:"默认值"`
    Unit                     string          `json:"unit" example:"单位"`
    Range                     string          `json:"range" example:"取值范围,例如:[1,100]"`
    Sort                     int             `json:"sort"`
 
    Config                     ArgConfig         `json:"config"`
}
 
type OperatorKV struct {
    Operator                 string         `json:"operator"`
    Name                     string         `json:"name"`
}
 
type ArgConfig struct {
    IsShow                     bool         `json:"isShow"` //是否可见
    IsConfigurable            bool         `json:"isConfigurable"`  //是否可配
    IsOptional                 bool         `json:"isOptional"`   //是否可选
    IsMulti                    bool         `json:"isMulti"`  //是否多选
}