parent
53f9111046
commit
e459922ebf
45
README.md
45
README.md
|
@ -89,7 +89,6 @@ Content-Type : application/json
|
||||||
{
|
{
|
||||||
"fileList": ["/home/data/bridge_capture/crack/0001.tif", "/home/data/bridge_capture/crack/0002.tif"],
|
"fileList": ["/home/data/bridge_capture/crack/0001.tif", "/home/data/bridge_capture/crack/0002.tif"],
|
||||||
"labelStatus": true,
|
"labelStatus": true,
|
||||||
"trainingSet": "5月10日隧道数据标注集",
|
|
||||||
"bizType": 3
|
"bizType": 3
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -101,8 +100,48 @@ Content-Type : application/json
|
||||||
|-----|--------|-------|-------------------------------------|
|
|-----|--------|-------|-------------------------------------|
|
||||||
| 1 | fileList | 字符串数组 | 文件的全路径组成的数组 |
|
| 1 | fileList | 字符串数组 | 文件的全路径组成的数组 |
|
||||||
| 2 | labelStatus | 布尔值 | 标注状态,true: 有病害; false: 无病害 |
|
| 2 | labelStatus | 布尔值 | 标注状态,true: 有病害; false: 无病害 |
|
||||||
| 3 | trainingSet | 字符串 | 训练集名称,上传到云端的训练集名称,如果云端已经存在,将合并训练集操作 |
|
| 3 | bizType | 整型 | 1: 道路; 2: 桥梁; 3: 隧道; 4: 边坡; |
|
||||||
| 4 | bizType | 整型 | 1: 道路; 2: 桥梁; 3: 隧道; 4: 边坡; |
|
|
||||||
|
- 返回值
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "成功",
|
||||||
|
"type": "OK"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 提交标注数据
|
||||||
|
|
||||||
|
- 访问地址
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /api/capture/submit
|
||||||
|
```
|
||||||
|
|
||||||
|
- 请求头参数
|
||||||
|
|
||||||
|
Content-Type : application/json
|
||||||
|
|
||||||
|
- 请求参数
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"fileList": ["/home/data/bridge_capture/crack/0001.tif", "/home/data/bridge_capture/crack/0002.tif"],
|
||||||
|
"datasetName": "2023年06月09日17点40分数据集,
|
||||||
|
"bizType": 3
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
+ 说明
|
||||||
|
|
||||||
|
+ | 序号 | 字段名称 | 数据类型 | 说明 |
|
||||||
|
|-----|--------|-------|-----------------------------|
|
||||||
|
| 1 | fileList | 字符串数组 | 文件的全路径组成的数组 |
|
||||||
|
| 2 | datasetName | 字符串 | 数据集名称,如果不存在将会自动创建 |
|
||||||
|
| 3 | bizType | 整型 | 1: 道路; 2: 桥梁; 3: 隧道; 4: 边坡; |
|
||||||
|
|
||||||
- 返回值
|
- 返回值
|
||||||
|
|
||||||
|
|
|
@ -25,3 +25,6 @@ functions:
|
||||||
- name: edge-cmd-response
|
- name: edge-cmd-response
|
||||||
dataTag: 32
|
dataTag: 32
|
||||||
mqType: 1
|
mqType: 1
|
||||||
|
- name: dataset-request
|
||||||
|
dataTag: 10
|
||||||
|
mqType: 1
|
|
@ -53,3 +53,14 @@ func (s HandlerService) LabelSubmit(c *gin.Context) (data interface{}, err error
|
||||||
data, err = repo.LabelSubmit(c, req)
|
data, err = repo.LabelSubmit(c, req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) CaptureSubmit(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewEdgeService(s.Logger)
|
||||||
|
var req proto.CaptureRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.CaptureSubmit(c, req)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -8,6 +8,11 @@ type ListRequest struct {
|
||||||
type LabelRequest struct {
|
type LabelRequest struct {
|
||||||
FileList []string `json:"fileList"`
|
FileList []string `json:"fileList"`
|
||||||
LabelStatus bool `json:"labelStatus"`
|
LabelStatus bool `json:"labelStatus"`
|
||||||
TrainingSet string `json:"trainingSet"`
|
BizType int `json:"bizType"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CaptureRequest struct {
|
||||||
|
FileList []string `json:"fileList"`
|
||||||
|
DatasetName string `json:"datasetName"`
|
||||||
BizType int `json:"bizType"`
|
BizType int `json:"bizType"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,4 +25,16 @@ type FileContent struct {
|
||||||
FileBaseInfo
|
FileBaseInfo
|
||||||
ContentBase string `json:"contentBase"`
|
ContentBase string `json:"contentBase"`
|
||||||
LabelStatus int `json:"labelStatus"` //0:未标注;1:有病害;2:无病害
|
LabelStatus int `json:"labelStatus"` //0:未标注;1:有病害;2:无病害
|
||||||
|
BizType int `json:"bizType"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FileTransferInfo struct {
|
||||||
|
FileName string `json:"fileName"`
|
||||||
|
FilePath string `json:"filePath"`
|
||||||
|
DataType int `json:"dataType"`
|
||||||
|
DatasetName string `json:"datasetId"`
|
||||||
|
FileSize int64 `json:"fileSize"`
|
||||||
|
File string `json:"file"`
|
||||||
|
IsCompress bool `json:"isCompress"`
|
||||||
|
FileMd5 string `json:"fileMd5"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,10 @@ func InitRouter(cfg *config.WebConfig, logger *logging.Logger) *gin.Engine {
|
||||||
{
|
{
|
||||||
label.POST("/submit", e.ErrorWrapper(hs.LabelSubmit))
|
label.POST("/submit", e.ErrorWrapper(hs.LabelSubmit))
|
||||||
}
|
}
|
||||||
|
capture := r.Group("/capture")
|
||||||
|
{
|
||||||
|
capture.POST("/submit", e.ErrorWrapper(hs.CaptureSubmit))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return root
|
return root
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ type EdgeService interface {
|
||||||
GetList(ctx context.Context, req proto.ListRequest) (rsp *proto.BaseResponse, err error)
|
GetList(ctx context.Context, req proto.ListRequest) (rsp *proto.BaseResponse, err error)
|
||||||
GetInfo(ctx context.Context, req proto.ListRequest) (rsp *proto.BaseResponse, err error)
|
GetInfo(ctx context.Context, req proto.ListRequest) (rsp *proto.BaseResponse, err error)
|
||||||
LabelSubmit(ctx context.Context, req proto.LabelRequest) (rsp *proto.BaseResponse, err error)
|
LabelSubmit(ctx context.Context, req proto.LabelRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
CaptureSubmit(ctx context.Context, req proto.CaptureRequest) (rsp *proto.BaseResponse, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEdgeService(logger *logging.Logger) EdgeService {
|
func NewEdgeService(logger *logging.Logger) EdgeService {
|
||||||
|
@ -205,6 +206,7 @@ func (rp *repo) LabelSubmit(ctx context.Context, req proto.LabelRequest) (rsp *p
|
||||||
},
|
},
|
||||||
ContentBase: base64.StdEncoding.EncodeToString(dstContent),
|
ContentBase: base64.StdEncoding.EncodeToString(dstContent),
|
||||||
LabelStatus: status,
|
LabelStatus: status,
|
||||||
|
BizType: req.BizType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
go mq.SendLabelData(list, rp.logger)
|
go mq.SendLabelData(list, rp.logger)
|
||||||
|
@ -222,3 +224,55 @@ func (rp *repo) LabelSubmit(ctx context.Context, req proto.LabelRequest) (rsp *p
|
||||||
return rsp, err
|
return rsp, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rp *repo) CaptureSubmit(ctx context.Context, req proto.CaptureRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
list := make([]proto.FileTransferInfo, len(req.FileList))
|
||||||
|
var (
|
||||||
|
fileInfo os.FileInfo
|
||||||
|
)
|
||||||
|
for k, v := range req.FileList {
|
||||||
|
fileInfo, err = os.Stat(v)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
buff := utils.ReadFile(v)
|
||||||
|
|
||||||
|
dstContent := store.Compress(buff)
|
||||||
|
list[k] = proto.FileTransferInfo{
|
||||||
|
FileName: fileInfo.Name(),
|
||||||
|
FilePath: v,
|
||||||
|
DatasetName: req.DatasetName,
|
||||||
|
DataType: req.BizType,
|
||||||
|
FileSize: fileInfo.Size(),
|
||||||
|
File: base64.StdEncoding.EncodeToString(dstContent),
|
||||||
|
IsCompress: true,
|
||||||
|
FileMd5: utils.GetFileMd5(buff),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
go mq.SubmitFileData(list, rp.logger)
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "成功"
|
||||||
|
rsp.Err = err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
20
mq/index.go
20
mq/index.go
|
@ -197,3 +197,23 @@ func SendLabelData(list []proto.FileContent, logger *logging.Logger) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SubmitFileData(list []proto.FileTransferInfo, logger *logging.Logger) {
|
||||||
|
cli := GetMqClient("dataset-request", 1)
|
||||||
|
if cli != nil {
|
||||||
|
for _, v := range list {
|
||||||
|
payload := InstructionReq{
|
||||||
|
Command: DatasetRequest,
|
||||||
|
Payload: v,
|
||||||
|
}
|
||||||
|
s, _ := json.Marshal(payload)
|
||||||
|
err := GenerateAndSendData(cli.EndPoint.(hpds_node.AccessPoint), s, logger)
|
||||||
|
if err != nil {
|
||||||
|
logger.With(
|
||||||
|
zap.String("文件名称", v.FileName),
|
||||||
|
zap.String("存储路径", v.FilePath),
|
||||||
|
).Error("文件传输", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package mq
|
package mq
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
DatasetRequest = iota + 10
|
||||||
DataLabelRequest = iota + 12
|
DataLabelRequest = iota + 12
|
||||||
DataLabelResponse
|
DataLabelResponse
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue