From a7c6227fc4101aae648f8363e7a9a785fe9561e4 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 14 十一月 2019 15:09:09 +0800
Subject: [PATCH] 结果标签大改动

---
 insertdata/insertDataToEs.go     |   36 ++++++------
 ruleserver/ruleToformula.go      |   60 +++++++++-----------
 labelFilter/readyDataForLabel.go |   12 ++--
 labelFilter/ruleForLabel.go      |    8 +-
 ruleserver/readyDataForRule.go   |    2 
 structure/rule.go                |   11 +--
 6 files changed, 59 insertions(+), 70 deletions(-)

diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index 77773db..7af0fa4 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -184,7 +184,7 @@
 
 // 寰�es涓彃鍏ヤ汉鑴告暟鎹�
 func InsertFace(msg structure.ResultMsg) {
-	if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.TargetResult)) > 0 {
+	if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.Result)) > 0 {
 		logger.Info("寰�ES鎻掍汉鑴告暟鎹�")
 		faces := []*FaceAndRules{}
 		faces = PutFace(faces, msg)
@@ -216,7 +216,7 @@
 				// 涓婁紶澶у浘
 				if imgMaxUrl == "" {
 					bigPhotoUrl := make(map[string]interface{})
-					bigPhotoUrl, err = util.DrawPolygonOnImageForFace(msg.Cid, i, msg.RuleResult["face"].([]structure.TargetResult), weedfsUrl)
+					bigPhotoUrl, err = util.DrawPolygonOnImageForFace(msg.Cid, i, msg.RuleResult["face"].([]structure.Result), weedfsUrl)
 					logger.Debug("========澶у浘璺緞锛�", bigPhotoUrl)
 					imgMaxUrl = bigPhotoUrl["fileUrl"].(string)
 					picTime = i.Timestamp
@@ -295,8 +295,8 @@
 
 // 褰掔疆浜鸿劯
 func PutFace(faces []*FaceAndRules, msg structure.ResultMsg) []*FaceAndRules {
-	if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.TargetResult)) > 0 {
-		for _, faceResult := range msg.RuleResult["face"].([]structure.TargetResult) {
+	if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.Result)) > 0 {
+		for _, faceResult := range msg.RuleResult["face"].([]structure.Result) {
 			faces = hebingFace(faces, faceResult)
 		}
 		return faces
@@ -304,8 +304,8 @@
 		return nil
 	}
 }
-func hebingFace(faces []*FaceAndRules, faceResult structure.TargetResult) []*FaceAndRules {
-	for _, arg := range faceResult.Args {
+func hebingFace(faces []*FaceAndRules, faceResult structure.Result) []*FaceAndRules {
+	for _, arg := range faceResult.AlarmObj {
 		// 鎷垮埌姣忎竴寮犱汉鑴�
 		//logger.Info("褰掔疆浜鸿劯鏃剁浉浼艰�呯殑鏁伴噺锛�", len(arg.Liker))
 		flag := false
@@ -315,7 +315,7 @@
 			//}
 			if arg.Id == face.Id {
 				flag = true
-				face.rules = append(face.rules, faceResult.Result)
+				face.rules = append(face.rules, faceResult)
 				// 鐩镐技鑰呭幓閲嶅綊骞�
 				for _, liker := range arg.Liker {
 					flag1 := true
@@ -332,7 +332,7 @@
 			}
 		}
 		if !flag {
-			faces = append(faces, &FaceAndRules{arg, []structure.Result{faceResult.Result}})
+			faces = append(faces, &FaceAndRules{*arg, []structure.Result{faceResult}})
 		}
 	}
 	return faces
@@ -391,20 +391,20 @@
 						}
 					}
 					// 瑁呴厤鐩爣淇℃伅鏁版嵁
-					for _, target := range yoloResult.Location {
+					for _, target := range yoloResult.AlarmObj {
 						// 鍘婚噸娣诲姞
 						var flag = true
 						for _, selectTarget := range targetInfos {
-							if strconv.FormatUint(target.TargetId, 10) == selectTarget.TargetId {
+							if strconv.FormatUint(target.Id, 10) == selectTarget.TargetId {
 								flag = false
 								break
 							}
 						}
 						if flag {
 							var target1 = new(Target)
-							target1.TargetId = strconv.FormatUint(target.TargetId, 10)
-							target1.TargetScore = target.TargetScore
-							target1.TargetLocation = Points{TopLeft: Point{target.X, target.Y}, BottomRight: Point{target.X + target.Width, target.Y + target.Height}}
+							target1.TargetId = strconv.FormatUint(target.Id, 10)
+							target1.TargetScore = target.Score
+							target1.TargetLocation = Points{TopLeft: Point{target.Location.X, target.Location.Y}, BottomRight: Point{target.Location.X + target.Location.Width, target.Location.Y + target.Location.Height}}
 							targetInfos = append(targetInfos, *target1)
 						}
 					}
@@ -639,20 +639,20 @@
 						}
 					}
 					// 瑁呴厤鐩爣淇℃伅鏁版嵁
-					for _, target := range yoloResult.Location {
+					for _, target := range yoloResult.AlarmObj {
 						// 鍘婚噸娣诲姞
 						var flag = true
 						for _, selectTarget := range targetInfos {
-							if strconv.FormatUint(target.TargetId, 10) == selectTarget.TargetId {
+							if strconv.FormatUint(target.Id, 10) == selectTarget.TargetId {
 								flag = false
 								break
 							}
 						}
 						if flag {
 							var target1 = new(Target)
-							target1.TargetId = strconv.FormatUint(target.TargetId, 10)
-							target1.TargetScore = target.TargetScore
-							target1.TargetLocation = Points{TopLeft: Point{target.X, target.Y}, BottomRight: Point{target.X + target.Width, target.Y + target.Height}}
+							target1.TargetId = strconv.FormatUint(target.Id, 10)
+							target1.TargetScore = target.Score
+							target1.TargetLocation = Points{TopLeft: Point{target.Location.X, target.Location.Y}, BottomRight: Point{target.Location.X + target.Location.Width, target.Location.Y + target.Location.Height}}
 							targetInfos = append(targetInfos, *target1)
 						}
 					}
diff --git a/labelFilter/readyDataForLabel.go b/labelFilter/readyDataForLabel.go
index 8aa4406..a5306b9 100644
--- a/labelFilter/readyDataForLabel.go
+++ b/labelFilter/readyDataForLabel.go
@@ -13,14 +13,14 @@
 	CameraAddr    string
 	TaskId        string
 	Time		  string
-	Persons       []structure.TargetResult
+	Persons       []structure.Result
 	DefenceLevel  []int32
 }
 // 鎶婃暟鎹閰嶅埌label
 func (label *Label)DataFormatToLabel(result structure.ResultMsg) {
-	logger.Debug("face缁撴灉锛�",result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.TargetResult)) > 0)
+	logger.Debug("face缁撴灉锛�",result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.Result)) > 0)
 	logger.Debug("yolo缁撴灉锛�",result.RuleResult["yolo"] != nil && len(result.RuleResult["yolo"].([]structure.Result)) > 0)
-	if (result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.TargetResult)) > 0) || (result.RuleResult["yolo"] != nil && len(result.RuleResult["yolo"].([]structure.Result)) > 0) { // 寰楁湁浜鸿劯鎴栬�厃olo瑙勫垯鎵嶅彲浠�
+	if (result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.Result)) > 0) || (result.RuleResult["yolo"] != nil && len(result.RuleResult["yolo"].([]structure.Result)) > 0) { // 寰楁湁浜鸿劯鎴栬�厃olo瑙勫垯鎵嶅彲浠�
 
 		// 鍏堝垽鏂竴涓嬫暟鎹甫鐨勮鍒欐爣绛炬槸鍚︽湁鎶ヨ鐨勫彲浠ユ帹閫佺殑
 		flag := false
@@ -30,7 +30,7 @@
 				flag = true
 			}
 		}
-		if flag || (result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.TargetResult)) > 0){
+		if flag || (result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.Result)) > 0){
 			logger.Info("---------------鏍囩杩囨护鍣ㄨ祴鍊�")
 			label.CameraId = result.Cid
 			camera, err := cache.GetCameraById(result.Cid)
@@ -41,8 +41,8 @@
 			label.CameraAddr = camera.Addr
 			label.TaskId = result.Tasklab.Taskid
 			label.Time = time.Now().Format("2006-01-02 15:04:05")
-			if result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.TargetResult)) > 0 {
-				for _,faceGroup := range result.RuleResult["face"].([]structure.TargetResult) {
+			if result.RuleResult["face"] != nil && len(result.RuleResult["face"].([]structure.Result)) > 0 {
+				for _,faceGroup := range result.RuleResult["face"].([]structure.Result) {
 					label.Persons = append(label.Persons,faceGroup)
 					label.DefenceLevel = append(label.DefenceLevel,faceGroup.AlarmLevel)
 				}
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index bb4f9a5..08d675b 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -160,7 +160,7 @@
 func baseJudge(label *Label, rule *protomsg.EventPushRule) string {
 	if rule.RuleValue == "all" {
 		for _, personGroup := range label.Persons {
-			for _, arg := range personGroup.Args {
+			for _, arg := range personGroup.AlarmObj {
 				if len(arg.Liker) > 0 {
 					logger.Info("婊¤冻鍏ㄩ儴搴曞簱瑙勫垯")
 					return "true"
@@ -170,7 +170,7 @@
 		return "false"
 	} else {
 		for _, personGroup := range label.Persons {
-			for _, arg := range personGroup.Args {
+			for _, arg := range personGroup.AlarmObj {
 				for _, liker := range arg.Liker {
 					formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'"
 					expression, err := govaluate.NewEvaluableExpression(formula);
@@ -199,7 +199,7 @@
 //鏄惁绗﹀悎浜哄憳瑙勫垯
 func personJudge(label *Label, rule *protomsg.EventPushRule) string {
 	for _, personGroup := range label.Persons {
-		for _, person := range personGroup.Args {
+		for _, person := range personGroup.AlarmObj {
 			formula := ""
 			if rule.TopicArg == "sex" {
 				formula = strconv.Itoa(int(person.ThftRes.Gender)) + rule.Operator + rule.RuleValue
@@ -232,7 +232,7 @@
 		}
 		if rule.TopicArg == "monitorLevel" {
 			if rule.RuleValue == "all" {
-				if len(personGroup.Args) > 0 {
+				if len(personGroup.AlarmObj) > 0 {
 					logger.Info("绗﹀悎浜哄憳绛夌骇涓哄叏閮ㄧ殑瑙勫垯")
 					return "true"
 				}
diff --git a/ruleserver/readyDataForRule.go b/ruleserver/readyDataForRule.go
index 98063e1..dbf5208 100644
--- a/ruleserver/readyDataForRule.go
+++ b/ruleserver/readyDataForRule.go
@@ -262,7 +262,7 @@
 
 	a.TargetNum = 0
 	threshold := 80.0       // 鐩镐技搴�
-	intersectionper := 0.2 // 鍗犳瘮
+	intersectionper := 20.0 // 鍗犳瘮
 	size := 0.0            // 灏哄
 
 	areaPoints := Json2points(a.AreaJson)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index c96892c..e754da2 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -36,8 +36,8 @@
 		// 寰楀埌灞炰簬璇ユ憚鍍忔満鐨勮嫢骞茬粍浠诲姟鐨勫畬鏁磋鍒欙紙璺熸瘡涓�鏉″畬鏁磋鍒欐瘮杈冧箣鍚庡緱鍑烘湰寮犲浘鍍忓浜庢煇涓鍒欐槸鍚︽姤璀︾殑缁撴灉銆傛斁杩沵ap锛屾瘮濡傛湰甯у浘鍍忕殑id锛屾墍纰版挒鎴愬姛鐨勮鍒檌d锛�
 		args.RuleResult = make(map[string]interface{})
 		args.RuleResult["yolo"] = []structure.Result{}
-		args.RuleResult["face"] = []structure.TargetResult{}
-		args.RuleResult["target"] = []structure.TargetResult{}
+		args.RuleResult["face"] = []structure.Result{}
+		args.RuleResult["target"] = []structure.Result{}
 		//logger.Warn("浼犺繘鍘讳箣鍓嶆槸浠�涔堝痉琛岋細",args.RuleResult["yolo"])
 		if taskGroup != nil && len(taskGroup.GroupRules) > 0 {
 			// 鍏堣繃鐙珛锛屽啀杩囪仈鍔�
@@ -141,7 +141,7 @@
 			// 鎵撲汉鑴告爣绛惧拰yolo鏍囩
 			// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
 			// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
-			faces := []structure.Arg{}
+			faces := []*structure.Arg{}
 			faceFlag := false
 			for j := 0; j < len(groupRule.Rules); j++ {
 				if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
@@ -163,17 +163,17 @@
 			//}
 			logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
 			// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
-			locations := []structure.TargetInfo{}
+			yolos := []*structure.Arg{}
 			for _, sdkData := range args.Sdkdata {
 				if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
 					for _, areaMap := range sdkData.AreaMapList {
 						if areaMap.IsEffective {
-							locations = append(locations, putYolosToResult(areaMap)...)
+							yolos = append(yolos, putYolosToResult(areaMap)...)
 						}
 					}
 				}
 			}
-			logger.Debug("------locations鐨勫唴瀹癸細", locations)
+			logger.Debug("------locations鐨勫唴瀹癸細", yolos)
 			var islink bool
 			if groupRule.SetType == "linkTask" {
 				islink = true
@@ -182,12 +182,12 @@
 			}
 			var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛�
 			if sdkNames != "" {
-				args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label})
+				args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, yolos, polygonId, islink,label})
 				labelTypes = append(labelTypes,0)
 				//logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
 			}
 			if faceFlag {
-				args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.TargetResult), structure.TargetResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label}, faces})
+				args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, faces, polygonId, islink,label})
 				//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
 				labelTypes = append(labelTypes,1)
 			}
@@ -202,9 +202,9 @@
 						}
 					}
 					if k == "face" {
-						tempMap[k] = []structure.TargetResult{}
-						for _, res := range result.([]structure.TargetResult) {
-							tempMap[k] = append(tempMap[k].([]structure.TargetResult), res)
+						tempMap[k] = []structure.Result{}
+						for _, res := range result.([]structure.Result) {
+							tempMap[k] = append(tempMap[k].([]structure.Result), res)
 						}
 					}
 				}
@@ -226,8 +226,8 @@
 	}
 }
 
-func putFaceToResult(am *structure.AreaMap, faceList []structure.Arg) []structure.Arg {
-	faces := []structure.Arg{}
+func putFaceToResult(am *structure.AreaMap, faceList []*structure.Arg) []*structure.Arg {
+	faces := []*structure.Arg{}
 	if len(am.FilterData) > 0 {
 		for _, data := range am.FilterData {
 			flag := true
@@ -237,7 +237,7 @@
 				}
 			}
 			if flag {
-				faces = append(faces, *data)
+				faces = append(faces, data)
 			}
 		}
 	}
@@ -245,16 +245,10 @@
 	return faces
 }
 
-func putYolosToResult(am *structure.AreaMap) []structure.TargetInfo {
-	locations := []structure.TargetInfo{}
+func putYolosToResult(am *structure.AreaMap) []*structure.Arg {
+	locations := []*structure.Arg{}
 	if len(am.FilterData) > 0 {
-		for _, data := range am.FilterData {
-			location := structure.TargetInfo{}
-			location.Rect = data.Location
-			location.TargetId = data.Id
-			location.TargetScore = data.Score
-			locations = append(locations, location)
-		}
+		locations = am.FilterData
 	}
 	//logger.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces)
 	return locations
@@ -315,9 +309,9 @@
 						}
 					}
 					if k == "face" {
-						tempMap[k] = []structure.TargetResult{}
-						for _, res := range result.([]structure.TargetResult) {
-							tempMap[k] = append(tempMap[k].([]structure.TargetResult), res)
+						tempMap[k] = []structure.Result{}
+						for _, res := range result.([]structure.Result) {
+							tempMap[k] = append(tempMap[k].([]structure.Result), res)
 						}
 					}
 				}
@@ -361,9 +355,9 @@
 								args.RuleResult["yolo"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
 							}
 						}
-						for i := 0; i < len(args.RuleResult["face"].([]structure.TargetResult)); i++ {
-							if args.RuleResult["face"].([]structure.TargetResult)[i].RuleGroupId == groupRule.GroupId { // 鎶婅仈鍔ㄦ暟鎹拷鍔犱笂
-								args.RuleResult["face"].([]structure.TargetResult)[i].Others.LinkCache = label.LinkCache
+						for i := 0; i < len(args.RuleResult["face"].([]structure.Result)); i++ {
+							if args.RuleResult["face"].([]structure.Result)[i].RuleGroupId == groupRule.GroupId { // 鎶婅仈鍔ㄦ暟鎹拷鍔犱笂
+								args.RuleResult["face"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
 							}
 						}
 					}
@@ -381,9 +375,9 @@
 					}
 				}
 				if val == 1 {
-					if len(args.RuleResult["face"].([]structure.TargetResult)) >= 1 {
-						lens := len(args.RuleResult["face"].([]structure.TargetResult))-1
-						args.RuleResult["face"] = args.RuleResult["face"].([]structure.TargetResult)[0:lens]
+					if len(args.RuleResult["face"].([]structure.Result)) >= 1 {
+						lens := len(args.RuleResult["face"].([]structure.Result))-1
+						args.RuleResult["face"] = args.RuleResult["face"].([]structure.Result)[0:lens]
 					}
 				}
 			}
@@ -412,7 +406,7 @@
 func duration(rule *protomsg.Rule, groupId string, am *structure.AreaMap, args *structure.SdkDatas, message *protomsg.SdkMessage) string{
 	cacheId := ""
 	if rule.PolygonId == am.AreaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�  閰嶇疆鐨勭畻娉曡瀵圭殑涓�
-		if rule.SdkArgAlias == "duration" { //
+		if rule.SdkArgAlias == "duration" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a977"{ // 鎺掗櫎瀵圭敾闈腑鍗曚釜鐩爣鐨勭畻娉曪紝涓綋闈欐浠ュ強闈犲彸琛岃繖绉�
 			//logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
 			// 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欐潯瑙勫垯鐨勫畾鏃跺櫒,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜�
 			rw.Lock()
diff --git a/structure/rule.go b/structure/rule.go
index 6a2f066..10d4eba 100644
--- a/structure/rule.go
+++ b/structure/rule.go
@@ -13,7 +13,7 @@
 	Size       float64 // 鍖哄煙鍐呯殑鐩爣鐨勫昂瀵�
 	AreaJson   string  // 鎵�灞炲尯鍩�
 	IsYolo     bool    // 鏄惁鏄痽olo鏁版嵁
-	Location   Rect    // 璁颁笅姣忎釜鐩爣鐨勪綅缃弬鏁帮紝鏈�鍚庣粰缁撴灉瑁呴厤浜鸿劯鏁版嵁鐨勬椂鍊欑敤鐨勫埌
+	Location   Rect    // 璁颁笅姣忎釜鐩爣鐨勪綅缃弬鏁帮紝鏈�鍚庣粰缁撴灉瑁呴厤鐩爣鏁版嵁鐨勬椂鍊欑敤鐨勫埌
 	Feature    []byte
 	ThftRes    protomsg.ThftResult
 	Liker      []*BaseInfo
@@ -83,7 +83,8 @@
 	DefenceState bool   // 鏄惁甯冮槻
 	AlarmLevel   int32  // 鎶ヨ绛夌骇
 	RuleText     string // 鏂囧瓧鐗堣鍒欑粍
-	Location     []TargetInfo // 鐩爣鐨勫潗鏍�
+	//Location     []TargetInfo // 鐩爣鐨勫潗鏍�
+	AlarmObj	 []*Arg   // 鎶ヨ鐨勭洰鏍囨暟鎹�  鎵撶畻搴熸帀涓婇潰鐨凩ocation
 	AlarmPolygon string // 瑙﹀彂鐨勬姤璀︽
 	IsLink       bool   // 鏄惁鏄仈鍔ㄤ换鍔�
 	Others
@@ -98,12 +99,6 @@
 	Rect
 	TargetId    uint64
 	TargetScore float64
-}
-
-// 杩囪鍒欏簱鎵撲笂鐨勬爣绛�
-type TargetResult struct {
-	Result
-	Args []Arg
 }
 type LittleRuleResult struct {
 	SdkName string // 璁板綍涓嬫缁撴灉鏄摢涓猻dk鐨勭粨鏋�

--
Gitblit v1.8.0