From a10968f7e286edbd5cf3133d5a0dca345775b220 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 1 Apr 2024 16:16:42 +0800 Subject: [PATCH 001/381] =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 4 ++-- ruoyi-auth/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-gateway/src/main/resources/bootstrap.yml | 6 +++--- .../management-platform/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 527bff75..4cbbc264 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -15,8 +15,8 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - // target: 'http://172.20.32.181:31205', - target: 'http://172.20.32.98:8082', + target: 'ci4s-gateway-service.argo.svc:8082', + // target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https // 依赖 origin 的功能可能需要这个,比如 cookie diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index c8b16589..65cc13b7 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index d3abcc61..f004903b 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -33,7 +33,7 @@ spring: datasource: ds1: nacos: - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP data-type: json diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 70d87bb0..a7b5adcf 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index e2649cf0..bf25f0ed 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index 664f5312..39fdf9e3 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml index c1821584..b96d9d24 100644 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index 62cc1c2a..d169d175 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 From 2935e34e62f978a465510eac3f5421b000c30636 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 2 Apr 2024 10:47:54 +0800 Subject: [PATCH 002/381] =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 4 ++-- .../ruoyi/platform/service/impl/DatasetServiceImpl.java | 9 --------- .../ruoyi/platform/service/impl/ModelsServiceImpl.java | 9 --------- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 65cc13b7..f33b1af4 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 172.nacos-ci4s.argo.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 config: # 配置中心地址 - server-addr: 172.nacos-ci4s.argo.svc:8848 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index d3ebe9d4..f971d525 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -63,15 +63,6 @@ public class DatasetServiceImpl implements DatasetService { private MinioClient minioClient; - @Value("${minio.endpoint}") - private String minioEndpoint; - - @Value("${minio.accessKey}") - private String minioAccessKey; - - @Value("${minio.secretKey}") - private String minioSecretKey; - // 固定存储桶名 private final String bucketName = "platform-data"; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 98e9ea9f..c335fea7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -56,15 +56,6 @@ public class ModelsServiceImpl implements ModelsService { @Resource private ModelsVersionService modelsVersionService; - @Value("${minio.endpoint}") - private String minioEndpoint; - - @Value("${minio.accessKey}") - private String minioAccessKey; - - @Value("${minio.secretKey}") - private String minioSecretKey; - // 固定存储桶名 private final String bucketName = "platform-data"; From d52f016ce4a37eb973796c20aa40f0c072f69ba8 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 2 Apr 2024 14:24:50 +0800 Subject: [PATCH 003/381] =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/10nexus3/nexus-deploy.yaml | 84 ++ k8s/10nexus3/nexus-pvc.yaml | 13 + k8s/clusterrolebinding.yaml | 13 + k8s/dockerfiles/buildimage.sh | 16 +- k8s/dockerfiles/conf/nginx.conf | 27 +- k8s/dockerfiles/nginx-dockerfile | 2 +- k8s/helm-1mysql/values.yaml | 4 +- .../templates/redis-haproxy-deployment.yaml | 2 +- k8s/helm-2redis-ha/values.yaml | 4 +- k8s/k8s-12front.yaml | 13 +- k8s/k8s-3nacos.yaml | 6 +- k8s/k8s-4gateway.yaml | 6 +- k8s/k8s-5auth.yaml | 6 +- k8s/k8s-6system.yaml | 6 +- k8s/k8s-7management.yaml | 10 +- k8s/nginx.conf | 54 + sql/nacos-ci4s-config.sql | 317 +++++ sql/nacos-ci4s-config_2-240104.sql | 320 ----- sql/{ry-ci4s-20240126.sql => ry-ci4s.sql} | 959 +++++++++------ sql/ry-ci4s_20240104.sql | 1046 ----------------- 20 files changed, 1161 insertions(+), 1747 deletions(-) create mode 100644 k8s/10nexus3/nexus-deploy.yaml create mode 100644 k8s/10nexus3/nexus-pvc.yaml create mode 100644 k8s/clusterrolebinding.yaml create mode 100644 k8s/nginx.conf create mode 100644 sql/nacos-ci4s-config.sql delete mode 100644 sql/nacos-ci4s-config_2-240104.sql rename sql/{ry-ci4s-20240126.sql => ry-ci4s.sql} (51%) delete mode 100644 sql/ry-ci4s_20240104.sql diff --git a/k8s/10nexus3/nexus-deploy.yaml b/k8s/10nexus3/nexus-deploy.yaml new file mode 100644 index 00000000..7eb064aa --- /dev/null +++ b/k8s/10nexus3/nexus-deploy.yaml @@ -0,0 +1,84 @@ +# cat nexus3/nexus3.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: ci4s-nexus3 + name: ci4s-nexus3 + namespace: ci4s-test +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: ci4s-nexus3 + template: + metadata: + labels: + k8s-app: ci4s-nexus3 + name: ci4s-nexus3 + namespace: ci4s-test + spec: + containers: + - name: ci4s-nexus3 + image: sonatype/nexus3:3.29.2 + imagePullPolicy: IfNotPresent + env: + - name: http_proxy + value: http://172.20.32.253:3128 + - name: https_proxy + value: http://172.20.32.253:3128 + ports: + - containerPort: 8081 + name: web + protocol: TCP + livenessProbe: + httpGet: + path: / + port: 8081 + initialDelaySeconds: 540 + periodSeconds: 30 + failureThreshold: 6 + readinessProbe: + httpGet: + path: / + port: 8081 + initialDelaySeconds: 540 + periodSeconds: 30 + failureThreshold: 6 +# resources: +# limits: +# cpu: 1000m +# memory: 2Gi +# requests: +# cpu: 500m +# memory: 512Mi + volumeMounts: + - name: nexus-data + mountPath: /nexus-data + volumes: + - name: nexus-data + persistentVolumeClaim: + claimName: ci4s-nexus-data-pvc +--- +apiVersion: v1 +kind: Service +metadata: + name: nexus3 + namespace: ci4s-test + labels: + k8s-app: nexus3 +spec: + selector: + k8s-app: nexus3 + type: NodePort + ports: + - name: web + protocol: TCP + port: 8081 + targetPort: 8081 + nodePort: 31211 + - name: dockerpod + protocol: TCP + port: 8082 + targetPort: 8082 + nodePort: 31212 diff --git a/k8s/10nexus3/nexus-pvc.yaml b/k8s/10nexus3/nexus-pvc.yaml new file mode 100644 index 00000000..68795feb --- /dev/null +++ b/k8s/10nexus3/nexus-pvc.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ci4s-nexus-data-pvc + namespace: ci4s-test +spec: + accessModes: + - ReadWriteMany + storageClassName: "storage-nfs" + resources: + requests: + storage: 500Gi diff --git a/k8s/clusterrolebinding.yaml b/k8s/clusterrolebinding.yaml new file mode 100644 index 00000000..1e76e022 --- /dev/null +++ b/k8s/clusterrolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: admin-service-account-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: admin-service-account + namespace: default + diff --git a/k8s/dockerfiles/buildimage.sh b/k8s/dockerfiles/buildimage.sh index 03256883..e714d6cc 100644 --- a/k8s/dockerfiles/buildimage.sh +++ b/k8s/dockerfiles/buildimage.sh @@ -1,13 +1,13 @@ #!/bin/bash # 定义一个名为version的变量 version=$1 - +url=$2 # 打印变量的值 echo "版本号为: $version" -docker build -t ci4s-gateway:$version -f gateway-dockerfile . -docker build -t ci4s-auth:$version -f auth-dockerfile . -docker build -t ci4s-file:$version -f file-dockerfile . -docker build -t ci4s-gen:$version -f gen-dockerfile . -docker build -t ci4s-job:$version -f job-dockerfile . -docker build -t ci4s-visual:$version -f visual-dockerfile . -docker build -t ci4s-system:$version -f system-dockerfile . +docker build -t $url/ci4s-gateway:$version -f gateway-dockerfile . +docker build -t $url/ci4s-auth:$version -f auth-dockerfile . +docker build -t $url/ci4s-file:$version -f file-dockerfile . +docker build -t $url/ci4s-gen:$version -f gen-dockerfile . +docker build -t $url/ci4s-job:$version -f job-dockerfile . +docker build -t $url/ci4s-visual:$version -f visual-dockerfile . +docker build -t $url/ci4s-system:$version -f system-dockerfile . diff --git a/k8s/dockerfiles/conf/nginx.conf b/k8s/dockerfiles/conf/nginx.conf index f430581d..93596a18 100644 --- a/k8s/dockerfiles/conf/nginx.conf +++ b/k8s/dockerfiles/conf/nginx.conf @@ -14,18 +14,31 @@ http { listen 8000; server_name localhost; + location /api/{ + rewrite ^/prod-api/(.*)$ /$1 break; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://ci4s-gateway-service.argo.svc:8082/; + } + + location /label-studio { + rewrite ^/prod-api/(.*)$ /$1 break; + proxy_pass http://label-studio-ls-app.label-data.svc:80/; + proxy_hide_header X-Frame-Options; + add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/"; + } + location / { + rewrite ^/prod-api/(.*)$ /$1 break; root /home/ruoyi/projects/ruoyi-ui; try_files $uri $uri/ /index.html; index index.html index.htm; } - location /api/{ - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header REMOTE-HOST $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_pass http://ci4s-gateway-service.ci4s-test.svc:8082/; + location @router { + rewrite ^.*$ /index.html last; } # 避免actuator暴露 @@ -38,4 +51,4 @@ http { root html; } } -} \ No newline at end of file +} diff --git a/k8s/dockerfiles/nginx-dockerfile b/k8s/dockerfiles/nginx-dockerfile index 53b136de..378afcac 100644 --- a/k8s/dockerfiles/nginx-dockerfile +++ b/k8s/dockerfiles/nginx-dockerfile @@ -1,5 +1,5 @@ # 基础镜像 -FROM nginx +FROM nginx:latest # author MAINTAINER ruoyi diff --git a/k8s/helm-1mysql/values.yaml b/k8s/helm-1mysql/values.yaml index e8e97ee7..f5593920 100644 --- a/k8s/helm-1mysql/values.yaml +++ b/k8s/helm-1mysql/values.yaml @@ -3,7 +3,7 @@ ## image: "mysql" imageTag: "5.7.30" - +Namespace: argo strategy: type: Recreate @@ -110,7 +110,7 @@ persistence: ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## - storageClass: "storage-nfs" + storageClass: "nfs-client" accessMode: ReadWriteOnce size: 10Gi annotations: {} diff --git a/k8s/helm-2redis-ha/templates/redis-haproxy-deployment.yaml b/k8s/helm-2redis-ha/templates/redis-haproxy-deployment.yaml index 6348e186..df82e947 100644 --- a/k8s/helm-2redis-ha/templates/redis-haproxy-deployment.yaml +++ b/k8s/helm-2redis-ha/templates/redis-haproxy-deployment.yaml @@ -37,7 +37,7 @@ spec: serviceAccountName: {{ template "redis-ha.serviceAccountName" . }}-haproxy {{ end }} nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} +{{ toYaml .Values.nodeSeletor | indent 8 }} tolerations: {{ toYaml .Values.tolerations | indent 8 }} affinity: diff --git a/k8s/helm-2redis-ha/values.yaml b/k8s/helm-2redis-ha/values.yaml index 2e72d8a9..279642b9 100644 --- a/k8s/helm-2redis-ha/values.yaml +++ b/k8s/helm-2redis-ha/values.yaml @@ -133,7 +133,7 @@ sysctlImage: command: [] registry: docker.io repository: busybox - tag: 1.31.1 + tag: 1.28 pullPolicy: Always mountHostSys: false resources: {} @@ -337,7 +337,7 @@ persistentVolume: ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## - storageClass: "storage-nfs" + storageClass: "nfs-client" accessModes: - ReadWriteOnce size: 2Gi diff --git a/k8s/k8s-12front.yaml b/k8s/k8s-12front.yaml index 638bd914..fb24fc2d 100644 --- a/k8s/k8s-12front.yaml +++ b/k8s/k8s-12front.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: ci4s-front-deployment - namespace: ci4s-test + namespace: argo spec: replicas: 1 selector: @@ -14,17 +14,17 @@ spec: app: ci4s-front spec: containers: - - name: ci4s-front - image: ci4s-front:20240126 - ports: - - containerPort: 8000 + - name: ci4s-front + image: 172.20.32.187/ci4s/ci4s-front:20240401 + ports: + - containerPort: 8000 --- apiVersion: v1 kind: Service metadata: name: ci4s-front-service - namespace: ci4s-test + namespace: argo spec: type: NodePort ports: @@ -33,3 +33,4 @@ spec: protocol: TCP selector: app: ci4s-front + diff --git a/k8s/k8s-3nacos.yaml b/k8s/k8s-3nacos.yaml index fdeea13f..874efca9 100644 --- a/k8s/k8s-3nacos.yaml +++ b/k8s/k8s-3nacos.yaml @@ -1,7 +1,7 @@ apiVersion: apps/v1 kind: Deployment metadata: - namespace: ci4s-test + namespace: argo name: nacos-ci4s labels: app: nacos-ci4s @@ -24,7 +24,7 @@ spec: - name: MODE value: standalone - name: MYSQL_SERVICE_HOST - value: mysql.ci4s-test.svc + value: mysql2.argo.svc - name: MYSQL_SERVICE_PORT value: "3306" - name: MYSQL_SERVICE_DB_NAME @@ -43,7 +43,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ci4s-test + namespace: argo name: nacos-ci4s labels: app: nacos-ci4s diff --git a/k8s/k8s-4gateway.yaml b/k8s/k8s-4gateway.yaml index 8980676b..b0cf7991 100644 --- a/k8s/k8s-4gateway.yaml +++ b/k8s/k8s-4gateway.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: ci4s-gateway-deployment - namespace: ci4s-test + namespace: argo spec: replicas: 1 selector: @@ -15,7 +15,7 @@ spec: spec: containers: - name: ci4s-gateway - image: ci4s-gateway:v1.0 + image: 172.20.32.187/ci4s/ci4s-gateway:20240401 ports: - containerPort: 8082 @@ -24,7 +24,7 @@ apiVersion: v1 kind: Service metadata: name: ci4s-gateway-service - namespace: ci4s-test + namespace: argo spec: type: NodePort ports: diff --git a/k8s/k8s-5auth.yaml b/k8s/k8s-5auth.yaml index 596cb71a..2066bd5d 100644 --- a/k8s/k8s-5auth.yaml +++ b/k8s/k8s-5auth.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: ci4s-auth-deployment - namespace: ci4s-test + namespace: argo spec: replicas: 1 selector: @@ -15,7 +15,7 @@ spec: spec: containers: - name: ci4s-auth - image: ci4s-auth:v1.0 + image: 172.20.32.187/ci4s/ci4s-auth:20240401 ports: - containerPort: 9200 @@ -24,7 +24,7 @@ apiVersion: v1 kind: Service metadata: name: ci4s-auth-service - namespace: ci4s-test + namespace: argo spec: type: NodePort ports: diff --git a/k8s/k8s-6system.yaml b/k8s/k8s-6system.yaml index 2a11c262..8c6830bf 100644 --- a/k8s/k8s-6system.yaml +++ b/k8s/k8s-6system.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: ci4s-system-deployment - namespace: ci4s-test + namespace: argo spec: replicas: 1 selector: @@ -15,7 +15,7 @@ spec: spec: containers: - name: ci4s-system - image: ci4s-system:v1.0 + image: 172.20.32.187/ci4s/ci4s-system:20240401 ports: - containerPort: 9201 @@ -24,7 +24,7 @@ apiVersion: v1 kind: Service metadata: name: ci4s-system-service - namespace: ci4s-test + namespace: argo spec: type: NodePort ports: diff --git a/k8s/k8s-7management.yaml b/k8s/k8s-7management.yaml index 1c6b48a4..a22a109b 100644 --- a/k8s/k8s-7management.yaml +++ b/k8s/k8s-7management.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: ci4s-management-platform-deployment - namespace: ci4s-test + namespace: argo spec: replicas: 1 selector: @@ -15,20 +15,20 @@ spec: spec: containers: - name: ci4s-management-platform - image: ci4s-managent:20240110 + image: 172.20.32.187/ci4s/managent:20240401 ports: - - containerPort: 9300 + - containerPort: 9213 --- apiVersion: v1 kind: Service metadata: name: ci4s-management-platform-service - namespace: ci4s-test + namespace: argo spec: type: NodePort ports: - - port: 9300 + - port: 9213 nodePort: 31208 protocol: TCP selector: diff --git a/k8s/nginx.conf b/k8s/nginx.conf new file mode 100644 index 00000000..5c57d295 --- /dev/null +++ b/k8s/nginx.conf @@ -0,0 +1,54 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + sendfile on; + keepalive_timeout 65; + + server { + listen 8000; + server_name localhost; + + location /api/{ + rewrite ^/prod-api/(.*)$ /$1 break; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://ci4s-gateway-service.argo.svc:8082/mmp/; + } + + location /label-studio { + rewrite ^/prod-api/(.*)$ /$1 break; + proxy_pass http://label-studio-ls-app.label-data.svc:80/; + proxy_hide_header X-Frame-Options; + add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/"; + } + + location / { + rewrite ^/prod-api/(.*)$ /$1 break; + root /home/ruoyi/projects/ruoyi-ui; + try_files $uri $uri/ /index.html; + index index.html index.htm; + } + + location @router { + rewrite ^.*$ /index.html last; + } + + # 避免actuator暴露 + if ($request_uri ~ "/actuator") { + return 403; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } +} diff --git a/sql/nacos-ci4s-config.sql b/sql/nacos-ci4s-config.sql new file mode 100644 index 00000000..fbc45574 --- /dev/null +++ b/sql/nacos-ci4s-config.sql @@ -0,0 +1,317 @@ +/* + Navicat Premium Data Transfer + + Source Server : test-ci4s185 + Source Server Type : MySQL + Source Server Version : 50730 + Source Host : 172.20.32.185:31201 + Source Schema : nacos-ci4s-config + + Target Server Type : MySQL + Target Server Version : 50730 + File Encoding : 65001 + + Date: 02/04/2024 14:18:16 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for config_info +-- ---------------------------- +DROP TABLE IF EXISTS `config_info`; +CREATE TABLE `config_info` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', + `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', + `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', + `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', + `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', + `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL, + `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '秘钥', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of config_info +-- ---------------------------- +INSERT INTO `config_info` VALUES (1, 'application-dev.yml', 'DEFAULT_GROUP', 'spring:\n autoconfigure:\n exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure\n mvc:\n pathmatch:\n matching-strategy: ant_path_matcher\n\n# feign 配置\nfeign:\n sentinel:\n enabled: true\n okhttp:\n enabled: true\n httpclient:\n enabled: false\n client:\n config:\n default:\n connectTimeout: 10000\n readTimeout: 10000\n compression:\n request:\n enabled: true\n min-request-size: 8192\n response:\n enabled: true\n\n# 暴露监控端点\nmanagement:\n endpoints:\n web:\n exposure:\n include: \'*\'\n', '58dde4e3760499d3bac2d77a3a1e9018', '2020-05-20 12:00:00', '2023-12-04 08:08:23', 'nacos', '0:0:0:0:0:0:0:1', '', '', '通用配置', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (2, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', 'spring:\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # gxx服务\n - id: management-platform\n uri: lb://management-platform\n predicates:\n - Path=/mmp/**\n filters:\n - StripPrefix=1 \n\n# 安全配置\nsecurity:\n # 验证码\n captcha:\n enabled: true\n type: math\n # 防止XSS攻击\n xss:\n enabled: true\n excludeUrls:\n - /system/notice\n # 不校验白名单\n ignore:\n whites:\n - /auth/logout\n - /auth/login\n - /auth/register\n - /*/v2/api-docs\n - /csrf\n', '7b19d8655c93e94f8730e9ab250e91fe', '2020-05-14 14:17:55', '2024-04-02 11:42:38', 'nacos', '172.20.32.185', '', '', '网关模块', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (3, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', 'spring:\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n', '3f23ca0eb2c263b7cffdabd1d3663c7d', '2020-11-20 00:00:00', '2024-04-02 11:42:50', 'nacos', '172.20.32.185', '', '', '认证中心', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (4, 'ruoyi-monitor-dev.yml', 'DEFAULT_GROUP', '# spring\nspring:\n security:\n user:\n name: ruoyi\n password: 123456\n boot:\n admin:\n ui:\n title: 若依服务状态监控\n', '6f122fd2bfb8d45f858e7d6529a9cd44', '2020-11-20 00:00:00', '2022-09-29 02:48:54', 'nacos', '0:0:0:0:0:0:0:1', '', '', '监控中心', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring:\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql2.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.system\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', 'cfc31f017166ea404d74d0b6310cf810', '2020-11-20 00:00:00', '2024-04-02 14:15:54', 'nacos', '172.20.32.185', '', '', '系统模块', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (6, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql.argo.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.gen.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 代码生成接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# 代码生成\ngen:\n # 作者\n author: ruoyi\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\n packageName: com.ruoyi.system\n # 自动去除表前缀,默认是false\n autoRemovePre: false\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\n tablePrefix: sys_\n', '1a3384705287cb69fe684d1d74b32b6a', '2020-11-20 00:00:00', '2024-04-02 11:43:05', 'nacos', '172.20.32.185', '', '', '代码生成', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (7, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password: \n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql.ci4z-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.job.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', 'b6af6ea9a8679c282d479eaacd252e24', '2020-11-20 00:00:00', '2024-03-27 17:51:28', 'nacos', '172.20.32.181', '', '', '定时任务', 'null', 'null', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', '# 本地文件上传 \r\nfile:\r\n domain: http://127.0.0.1:9300\r\n path: D:/ruoyi/uploadPath\r\n prefix: /statics\r\n\r\n# FastDFS配置\r\nfdfs:\r\n domain: http://8.129.231.12\r\n soTimeout: 3000\r\n connectTimeout: 2000\r\n trackerList: 8.129.231.12:22122\r\n\r\n# Minio配置\r\nminio:\r\n url: http://8.129.231.12:9000\r\n accessKey: minioadmin\r\n secretKey: minioadmin\r\n bucketName: test', '5382b93f3d8059d6068c0501fdd41195', '2020-11-20 00:00:00', '2020-12-21 21:01:59', NULL, '0:0:0:0:0:0:0:1', '', '', '文件服务', 'null', 'null', 'yaml', NULL, ''); +INSERT INTO `config_info` VALUES (9, 'sentinel-ruoyi-gateway', 'DEFAULT_GROUP', '[\r\n {\r\n \"resource\": \"ruoyi-auth\",\r\n \"count\": 500,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-system\",\r\n \"count\": 1000,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-gen\",\r\n \"count\": 200,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-job\",\r\n \"count\": 300,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n }\r\n]', '9f3a3069261598f74220bc47958ec252', '2020-11-20 00:00:00', '2020-11-20 00:00:00', NULL, '0:0:0:0:0:0:0:1', '', '', '限流策略', 'null', 'null', 'json', NULL, ''); +INSERT INTO `config_info` VALUES (11, 'management-platform-dev.yml', 'DEFAULT_GROUP', 'spring:\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 20GB\n # 设置总上传的文件大小\n max-request-size: 20GB\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql2.argo.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: qazxc123456.\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\n# argo\nargo:\n url: http://pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog\n workflowCopy: /api/v1/workflow/copy\n workflowPodLog: /api/v1/workflow/getLogByPod \n ins:\n logsLines: 200\n# 流水线配置\npipeline:\n control_strategy: \'{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlRrRURCNEZ0TG1iQmd0UW05Mk9weGFHdERCQlBXUlBKRS14WTI2WmRLd28ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi10dnRwbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjAzOTVlZGRmLWZjNGYtNDM0MS05ODdhLTlmNjgyOWEyMmQ0YyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.nnoplRdA1OoPcqkt2fr1h4XYWAsaFw6XPkGm35CL3_pNIllttf99JyYAcNDhTB23eeu7qOz_afF760cMaVWA2itxYaRzbm-9qkySklOsdF3hHFRKoMB6G7o1liMpThXM4zi-9Ln1_BEtJgQzBVguVGEMWWBJNH9oBL5YVLGP7jUGjD8hEKsu4sBpymAwEeSAN4Dkj44M6Fk8WahsRMY7wd-HNqrK94xB8WIg9dK4SzPOv9VixdnpJ0jDXdRL4aRA5Mk0UKORtuAotNDT74AS1YDShGa0SEuY_SnzUcG7GLuRJOWb91YFTyWt3BDucWNuMECfV0ygPqRMJSqu3ODRjw\n # jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.185\n# tensorBoard配置\ntensorBoard:\n image: activeeon/tensorboard:latest\n port: 6006\n mountPath: /logs/\n masterIp: http://172.20.32.185\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n\nharbor:\n bucketName: tempimagefile\n repository: testlib\n harborUrl: 172.20.32.187\n harborUser: admin\n harborpassword: Harbor12345\n deploymentName: docker-push-deployment\n serviceNS: argo', 'bbc7773af0267fd5ef4a986def5c4931', '2024-01-03 16:34:18', '2024-04-02 14:16:08', 'nacos', '172.20.32.185', '', '', '', '', '', 'yaml', '', ''); +INSERT INTO `config_info` VALUES (12, 'pipeline-covert-config', 'ARGO', '#部署环境\ndeploy-env: test\nlog:\n # 日志级别\n level: info\n # 日志存放路径\n log-path: /var/log/pipeline-convert\n # 日志保留时间\n max-log-age: 7200h\n # 日志大小\n log-rotation-size: 104587600\n # 日子归档间隔\n log-archive-time: 24h\n\nloki:\n # loki host\n host: http://loki.loki-log:3100/loki\n query-range-uri: /api/v1/query_range\n # limit 每次读取日志的条数\n limit: 2000\n\ndb: \n # host 数据库连接host\n host: mysql.argo.svc.cluster.local\n # 数据库名字\n database: pipeline_convert\n # 端口\n port: 3306\n # 数据库用户名\n user: root\n # 数据库密码\n password: qazxc123456.\n\nworkflow:\n # pod延迟删除时间 一天\n pod-delete-delay-time: 24h\n workflow-retain-time: 24h\n\n\n\n', '8d5fcd64878095144f7153ba1f8ae309', '2024-03-22 11:00:41', '2024-03-27 16:47:18', 'nacos', '172.20.32.181', '', '', 'pipeline convert配置', '', '', 'yaml', '', ''); + +-- ---------------------------- +-- Table structure for config_info_aggr +-- ---------------------------- +DROP TABLE IF EXISTS `config_info_aggr`; +CREATE TABLE `config_info_aggr` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', + `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', + `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id', + `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of config_info_aggr +-- ---------------------------- + +-- ---------------------------- +-- Table structure for config_info_beta +-- ---------------------------- +DROP TABLE IF EXISTS `config_info_beta`; +CREATE TABLE `config_info_beta` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', + `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', + `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', + `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', + `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps', + `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', + `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', + `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '秘钥', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of config_info_beta +-- ---------------------------- + +-- ---------------------------- +-- Table structure for config_info_tag +-- ---------------------------- +DROP TABLE IF EXISTS `config_info_tag`; +CREATE TABLE `config_info_tag` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', + `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', + `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id', + `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', + `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', + `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', + `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of config_info_tag +-- ---------------------------- + +-- ---------------------------- +-- Table structure for config_tags_relation +-- ---------------------------- +DROP TABLE IF EXISTS `config_tags_relation`; +CREATE TABLE `config_tags_relation` ( + `id` bigint(20) NOT NULL COMMENT 'id', + `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name', + `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type', + `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', + `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', + `nid` bigint(20) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`nid`) USING BTREE, + UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE, + INDEX `idx_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of config_tags_relation +-- ---------------------------- + +-- ---------------------------- +-- Table structure for group_capacity +-- ---------------------------- +DROP TABLE IF EXISTS `group_capacity`; +CREATE TABLE `group_capacity` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', + `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值', + `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量', + `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值', + `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of group_capacity +-- ---------------------------- + +-- ---------------------------- +-- Table structure for his_config_info +-- ---------------------------- +DROP TABLE IF EXISTS `his_config_info`; +CREATE TABLE `his_config_info` ( + `id` bigint(20) UNSIGNED NOT NULL, + `nid` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', + `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL, + `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', + `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '秘钥', + PRIMARY KEY (`nid`) USING BTREE, + INDEX `idx_gmt_create`(`gmt_create`) USING BTREE, + INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE, + INDEX `idx_did`(`data_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of his_config_info +-- ---------------------------- +INSERT INTO `his_config_info` VALUES (0, 1, 'pipeline-covert-config', 'ARGO', '', '#部署环境\r\ndeploy-env: test\r\nlog:\r\n # 日志级别\r\n level: info\r\n # 日志存放路径\r\n log-path: /var/log/pipeline-convert\r\n # 日志保留时间\r\n max-log-age: 7200h\r\n # 日志大小\r\n log-rotation-size: 104587600\r\n # 日子归档间隔\r\n log-archive-time: 24h', '11f0ca588c8fd47f7186cbbcd107540f', '2024-03-22 03:00:41', '2024-03-22 11:00:41', 'nacos', '172.20.32.181', 'I', '', ''); +INSERT INTO `his_config_info` VALUES (12, 2, 'pipeline-covert-config', 'ARGO', '', '#部署环境\r\ndeploy-env: test\r\nlog:\r\n # 日志级别\r\n level: info\r\n # 日志存放路径\r\n log-path: /var/log/pipeline-convert\r\n # 日志保留时间\r\n max-log-age: 7200h\r\n # 日志大小\r\n log-rotation-size: 104587600\r\n # 日子归档间隔\r\n log-archive-time: 24h', '11f0ca588c8fd47f7186cbbcd107540f', '2024-03-22 07:06:57', '2024-03-22 15:06:57', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (12, 3, 'pipeline-covert-config', 'ARGO', '', '#部署环境\ndeploy-env: test\nlog:\n # 日志级别\n level: info\n # 日志存放路径\n log-path: /var/log/pipeline-convert\n # 日志保留时间\n max-log-age: 4800h\n # 日志大小\n log-rotation-size: 104587600\n # 日子归档间隔\n log-archive-time: 24h', '6c458282622414ed7e4670d94aee8e81', '2024-03-27 08:09:25', '2024-03-27 16:09:26', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (12, 4, 'pipeline-covert-config', 'ARGO', '', '#部署环境\ndeploy-env: test\nlog:\n # 日志级别\n level: info\n # 日志存放路径\n log-path: /var/log/pipeline-convert\n # 日志保留时间\n max-log-age: 7200h\n # 日志大小\n log-rotation-size: 104587600\n # 日子归档间隔\n log-archive-time: 24h', '6161ef86c21f23158c47065a6be64ab0', '2024-03-27 08:47:18', '2024-03-27 16:47:18', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (11, 5, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 数据源\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: qazxc123456.\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '3d63e6de0eccc6109901e4ac2c68d80d', '2024-03-27 09:23:31', '2024-03-27 17:23:31', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (2, 6, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # gxx服务\n - id: management-platform\n uri: lb://management-platform\n predicates:\n - Path=/mmp/**\n filters:\n - StripPrefix=1 \n\n# 安全配置\nsecurity:\n # 验证码\n captcha:\n enabled: true\n type: math\n # 防止XSS攻击\n xss:\n enabled: true\n excludeUrls:\n - /system/notice\n # 不校验白名单\n ignore:\n whites:\n - /auth/logout\n - /auth/login\n - /auth/register\n - /*/v2/api-docs\n - /csrf\n', '59880f554f7c184a54b0cb9f51391605', '2024-03-27 09:24:05', '2024-03-27 17:24:06', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (3, 7, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n', 'e4ea9948e873663be64e3349e5fde18d', '2024-03-27 09:24:16', '2024-03-27 17:24:16', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (5, 8, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.system\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', 'b03c6adb54ca4c7c2c781301b509313f', '2024-03-27 09:24:30', '2024-03-27 17:24:30', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (11, 9, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 20GB\n # 设置总上传的文件大小\n max-request-size: 20GB\n redis:\n host: redis-redis-ha.ci4s-test.svc\n port: 6379\n password:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\n# argo\nargo:\n url: pipeline-convert-service.ci4s-test.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog\n workflowCopy: /api/v1/workflow/copy\n workflowPodLog: /api/v1/workflow/getLogByPod \n\n# 流水线配置\npipeline:\n control_strategy: \'{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n# tensorBoard配置\ntensorBoard:\n image: activeeon/tensorboard:latest\n port: 6006\n mountPath: /logs/\n masterIp: http://172.20.32.181\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n\nharbor:\n bucketName: tempimagefile\n repository: testlib\n harborUrl: 172.20.32.187\n harborUser: admin\n harborpassword: Harbor12345\n deploymentName: docker-push-deployment\n serviceNS: argo', '02aec03de5e1e375d49a187744d2508d', '2024-03-27 09:49:11', '2024-03-27 17:49:12', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (7, 10, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password: \n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: password\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.job.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', 'edcf0e3fe13fea07b4ec08b1088f30b3', '2024-03-27 09:51:13', '2024-03-27 17:51:14', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (7, 11, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password: \n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql.ci4z-test.svc:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.job.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', '1fbce310453b2825df064f2d5303431c', '2024-03-27 09:51:27', '2024-03-27 17:51:28', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (6, 12, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: password\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.gen.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 代码生成接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# 代码生成\ngen:\n # 作者\n author: ruoyi\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\n packageName: com.ruoyi.system\n # 自动去除表前缀,默认是false\n autoRemovePre: false\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\n tablePrefix: sys_\n', 'eb592420b3fceae1402881887b8a6a0d', '2024-03-27 09:52:02', '2024-03-27 17:52:03', 'nacos', '172.20.32.181', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (11, 13, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 20GB\n # 设置总上传的文件大小\n max-request-size: 20GB\n redis:\n host: redis-redis-ha.ci4s-test.svc\n port: 6379\n password:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: qazxc123456.\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\n# argo\nargo:\n url: pipeline-convert-service.ci4s-test.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog\n workflowCopy: /api/v1/workflow/copy\n workflowPodLog: /api/v1/workflow/getLogByPod \n\n# 流水线配置\npipeline:\n control_strategy: \'{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n# tensorBoard配置\ntensorBoard:\n image: activeeon/tensorboard:latest\n port: 6006\n mountPath: /logs/\n masterIp: http://172.20.32.181\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n\nharbor:\n bucketName: tempimagefile\n repository: testlib\n harborUrl: 172.20.32.187\n harborUser: admin\n harborpassword: Harbor12345\n deploymentName: docker-push-deployment\n serviceNS: argo', 'da833e9cbc11db91a9a3b14dadedc348', '2024-04-02 03:42:16', '2024-04-02 11:42:16', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (2, 14, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n redis:\n host: redis-redis-ha.ci4s-test.svc\n port: 6379\n password:\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # gxx服务\n - id: management-platform\n uri: lb://management-platform\n predicates:\n - Path=/mmp/**\n filters:\n - StripPrefix=1 \n\n# 安全配置\nsecurity:\n # 验证码\n captcha:\n enabled: true\n type: math\n # 防止XSS攻击\n xss:\n enabled: true\n excludeUrls:\n - /system/notice\n # 不校验白名单\n ignore:\n whites:\n - /auth/logout\n - /auth/login\n - /auth/register\n - /*/v2/api-docs\n - /csrf\n', 'b3f2a075435f760a32e8c3475f929376', '2024-04-02 03:42:37', '2024-04-02 11:42:38', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (3, 15, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n redis:\n host: redis-redis-ha.ci4s-test.svc\n port: 6379\n password:\n', 'ec9da217447aa7dda2592712f04377e4', '2024-04-02 03:42:49', '2024-04-02 11:42:50', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (6, 16, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.gen.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 代码生成接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# 代码生成\ngen:\n # 作者\n author: ruoyi\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\n packageName: com.ruoyi.system\n # 自动去除表前缀,默认是false\n autoRemovePre: false\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\n tablePrefix: sys_\n', '67fafc1694708436a7daa69b359cd7ce', '2024-04-02 03:43:04', '2024-04-02 11:43:05', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (11, 17, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 20GB\n # 设置总上传的文件大小\n max-request-size: 20GB\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql.argo.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: qazxc123456.\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\n# argo\nargo:\n url: http://pipeline-convert-service.ci4s-test.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog\n workflowCopy: /api/v1/workflow/copy\n workflowPodLog: /api/v1/workflow/getLogByPod \n\n# 流水线配置\npipeline:\n control_strategy: \'{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlRrRURCNEZ0TG1iQmd0UW05Mk9weGFHdERCQlBXUlBKRS14WTI2WmRLd28ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi10dnRwbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjAzOTVlZGRmLWZjNGYtNDM0MS05ODdhLTlmNjgyOWEyMmQ0YyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.nnoplRdA1OoPcqkt2fr1h4XYWAsaFw6XPkGm35CL3_pNIllttf99JyYAcNDhTB23eeu7qOz_afF760cMaVWA2itxYaRzbm-9qkySklOsdF3hHFRKoMB6G7o1liMpThXM4zi-9Ln1_BEtJgQzBVguVGEMWWBJNH9oBL5YVLGP7jUGjD8hEKsu4sBpymAwEeSAN4Dkj44M6Fk8WahsRMY7wd-HNqrK94xB8WIg9dK4SzPOv9VixdnpJ0jDXdRL4aRA5Mk0UKORtuAotNDT74AS1YDShGa0SEuY_SnzUcG7GLuRJOWb91YFTyWt3BDucWNuMECfV0ygPqRMJSqu3ODRjw\n # jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.185\n# tensorBoard配置\ntensorBoard:\n image: activeeon/tensorboard:latest\n port: 6006\n mountPath: /logs/\n masterIp: http://172.20.32.185\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n\nharbor:\n bucketName: tempimagefile\n repository: testlib\n harborUrl: 172.20.32.187\n harborUser: admin\n harborpassword: Harbor12345\n deploymentName: docker-push-deployment\n serviceNS: argo', 'f429de86888a8189421b79a87f403d0e', '2024-04-02 03:43:55', '2024-04-02 11:43:55', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (11, 18, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 20GB\n # 设置总上传的文件大小\n max-request-size: 20GB\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql.argo.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: qazxc123456.\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\n# argo\nargo:\n url: http://pipeline-convert-service.ci4s-test.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog\n workflowCopy: /api/v1/workflow/copy\n workflowPodLog: /api/v1/workflow/getLogByPod \n ins:\n logsLines: 200\n# 流水线配置\npipeline:\n control_strategy: \'{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlRrRURCNEZ0TG1iQmd0UW05Mk9weGFHdERCQlBXUlBKRS14WTI2WmRLd28ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi10dnRwbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjAzOTVlZGRmLWZjNGYtNDM0MS05ODdhLTlmNjgyOWEyMmQ0YyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.nnoplRdA1OoPcqkt2fr1h4XYWAsaFw6XPkGm35CL3_pNIllttf99JyYAcNDhTB23eeu7qOz_afF760cMaVWA2itxYaRzbm-9qkySklOsdF3hHFRKoMB6G7o1liMpThXM4zi-9Ln1_BEtJgQzBVguVGEMWWBJNH9oBL5YVLGP7jUGjD8hEKsu4sBpymAwEeSAN4Dkj44M6Fk8WahsRMY7wd-HNqrK94xB8WIg9dK4SzPOv9VixdnpJ0jDXdRL4aRA5Mk0UKORtuAotNDT74AS1YDShGa0SEuY_SnzUcG7GLuRJOWb91YFTyWt3BDucWNuMECfV0ygPqRMJSqu3ODRjw\n # jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.185\n# tensorBoard配置\ntensorBoard:\n image: activeeon/tensorboard:latest\n port: 6006\n mountPath: /logs/\n masterIp: http://172.20.32.185\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n\nharbor:\n bucketName: tempimagefile\n repository: testlib\n harborUrl: 172.20.32.187\n harborUser: admin\n harborpassword: Harbor12345\n deploymentName: docker-push-deployment\n serviceNS: argo', '45649c8d0269e24b2a7fe377cae21434', '2024-04-02 03:45:14', '2024-04-02 11:45:15', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (5, 19, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: redis-redis-ha.ci4s-test.svc\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://mysql.ci4s-test.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: qazxc123456.\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.system\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '920f6fe2d7721e537716c9949d14a0f4', '2024-04-02 06:15:53', '2024-04-02 14:15:54', 'nacos', '172.20.32.185', 'U', '', ''); +INSERT INTO `his_config_info` VALUES (11, 20, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 20GB\n # 设置总上传的文件大小\n max-request-size: 20GB\n redis:\n host: redis-redis-ha.argo.svc\n port: 6379\n password:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://mysql.argo.svc:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: qazxc123456.\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\n# argo\nargo:\n url: http://pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog\n workflowCopy: /api/v1/workflow/copy\n workflowPodLog: /api/v1/workflow/getLogByPod \n ins:\n logsLines: 200\n# 流水线配置\npipeline:\n control_strategy: \'{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlRrRURCNEZ0TG1iQmd0UW05Mk9weGFHdERCQlBXUlBKRS14WTI2WmRLd28ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi10dnRwbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjAzOTVlZGRmLWZjNGYtNDM0MS05ODdhLTlmNjgyOWEyMmQ0YyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.nnoplRdA1OoPcqkt2fr1h4XYWAsaFw6XPkGm35CL3_pNIllttf99JyYAcNDhTB23eeu7qOz_afF760cMaVWA2itxYaRzbm-9qkySklOsdF3hHFRKoMB6G7o1liMpThXM4zi-9Ln1_BEtJgQzBVguVGEMWWBJNH9oBL5YVLGP7jUGjD8hEKsu4sBpymAwEeSAN4Dkj44M6Fk8WahsRMY7wd-HNqrK94xB8WIg9dK4SzPOv9VixdnpJ0jDXdRL4aRA5Mk0UKORtuAotNDT74AS1YDShGa0SEuY_SnzUcG7GLuRJOWb91YFTyWt3BDucWNuMECfV0ygPqRMJSqu3ODRjw\n # jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.185\n# tensorBoard配置\ntensorBoard:\n image: activeeon/tensorboard:latest\n port: 6006\n mountPath: /logs/\n masterIp: http://172.20.32.185\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n\nharbor:\n bucketName: tempimagefile\n repository: testlib\n harborUrl: 172.20.32.187\n harborUser: admin\n harborpassword: Harbor12345\n deploymentName: docker-push-deployment\n serviceNS: argo', 'bedb27aaffd384e7c890a82da7d4700e', '2024-04-02 06:16:07', '2024-04-02 14:16:08', 'nacos', '172.20.32.185', 'U', '', ''); + +-- ---------------------------- +-- Table structure for permissions +-- ---------------------------- +DROP TABLE IF EXISTS `permissions`; +CREATE TABLE `permissions` ( + `role` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `resource` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `action` varchar(8) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of permissions +-- ---------------------------- + +-- ---------------------------- +-- Table structure for roles +-- ---------------------------- +DROP TABLE IF EXISTS `roles`; +CREATE TABLE `roles` ( + `username` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `role` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + UNIQUE INDEX `idx_user_role`(`username`, `role`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of roles +-- ---------------------------- +INSERT INTO `roles` VALUES ('nacos', 'ROLE_ADMIN'); + +-- ---------------------------- +-- Table structure for tenant_capacity +-- ---------------------------- +DROP TABLE IF EXISTS `tenant_capacity`; +CREATE TABLE `tenant_capacity` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID', + `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值', + `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量', + `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数', + `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tenant_capacity +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tenant_info +-- ---------------------------- +DROP TABLE IF EXISTS `tenant_info`; +CREATE TABLE `tenant_info` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp', + `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', + `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name', + `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc', + `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source', + `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', + `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE, + INDEX `idx_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tenant_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for users +-- ---------------------------- +DROP TABLE IF EXISTS `users`; +CREATE TABLE `users` ( + `username` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `password` varchar(500) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `enabled` tinyint(1) NOT NULL, + PRIMARY KEY (`username`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of users +-- ---------------------------- +INSERT INTO `users` VALUES ('nacos', '$2a$10$3IlH08injUAkk5yuIFV39.MCkOXLFOeAXsAeStT65xMZqZ9ZkyvXm', 1); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/nacos-ci4s-config_2-240104.sql b/sql/nacos-ci4s-config_2-240104.sql deleted file mode 100644 index 22a2fd22..00000000 --- a/sql/nacos-ci4s-config_2-240104.sql +++ /dev/null @@ -1,320 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : localhost - Source Server Type : MySQL - Source Server Version : 50721 - Source Host : 172.20.32.150:3306 - Source Schema : nacos-ci4s-config - - Target Server Type : MySQL - Target Server Version : 50721 - File Encoding : 65001 - - Date: 04/01/2024 16:25:54 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for config_info --- ---------------------------- -DROP TABLE IF EXISTS `config_info`; -CREATE TABLE `config_info` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', - `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', - `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', - `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', - `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', - `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL, - `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '秘钥', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of config_info --- ---------------------------- -INSERT INTO `config_info` VALUES (1, 'application-dev.yml', 'DEFAULT_GROUP', 'spring:\n autoconfigure:\n exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure\n mvc:\n pathmatch:\n matching-strategy: ant_path_matcher\n\n# feign 配置\nfeign:\n sentinel:\n enabled: true\n okhttp:\n enabled: true\n httpclient:\n enabled: false\n client:\n config:\n default:\n connectTimeout: 10000\n readTimeout: 10000\n compression:\n request:\n enabled: true\n min-request-size: 8192\n response:\n enabled: true\n\n# 暴露监控端点\nmanagement:\n endpoints:\n web:\n exposure:\n include: \'*\'\n', '58dde4e3760499d3bac2d77a3a1e9018', '2020-05-20 12:00:00', '2023-12-04 08:08:23', 'nacos', '0:0:0:0:0:0:0:1', '', '', '通用配置', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (2, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', 'spring:\n redis:\n host: localhost\n port: 6379\n password:\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # gxx服务\n - id: management-platform\n uri: lb://management-platform\n predicates:\n - Path=/mmp/**\n filters:\n - StripPrefix=1 \n\n# 安全配置\nsecurity:\n # 验证码\n captcha:\n enabled: true\n type: math\n # 防止XSS攻击\n xss:\n enabled: true\n excludeUrls:\n - /system/notice\n # 不校验白名单\n ignore:\n whites:\n - /auth/logout\n - /auth/login\n - /auth/register\n - /*/v2/api-docs\n - /csrf\n', '591098adabd795428ee55217eb07a05c', '2020-05-14 14:17:55', '2024-01-04 15:16:15', 'nacos', '172.20.32.150', '', '', '网关模块', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (3, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', 'spring:\n redis:\n host: localhost\n port: 6379\n password:\n', '8bd9dada9a94822feeab40de55efced6', '2020-11-20 00:00:00', '2022-09-29 02:48:42', 'nacos', '0:0:0:0:0:0:0:1', '', '', '认证中心', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (4, 'ruoyi-monitor-dev.yml', 'DEFAULT_GROUP', '# spring\nspring:\n security:\n user:\n name: ruoyi\n password: 123456\n boot:\n admin:\n ui:\n title: 若依服务状态监控\n', '6f122fd2bfb8d45f858e7d6529a9cd44', '2020-11-20 00:00:00', '2022-09-29 02:48:54', 'nacos', '0:0:0:0:0:0:0:1', '', '', '监控中心', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.system\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', 'e085662b457e509eac4aced31baa600a', '2020-11-20 00:00:00', '2024-01-02 16:17:33', 'nacos', '172.20.32.150', '', '', '系统模块', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (6, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: password\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.gen.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 代码生成接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# 代码生成\ngen:\n # 作者\n author: ruoyi\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\n packageName: com.ruoyi.system\n # 自动去除表前缀,默认是false\n autoRemovePre: false\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\n tablePrefix: sys_\n', 'eb592420b3fceae1402881887b8a6a0d', '2020-11-20 00:00:00', '2022-09-29 02:49:42', 'nacos', '0:0:0:0:0:0:0:1', '', '', '代码生成', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (7, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password: \n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: password\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.job.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', 'edcf0e3fe13fea07b4ec08b1088f30b3', '2020-11-20 00:00:00', '2022-09-29 02:50:50', 'nacos', '0:0:0:0:0:0:0:1', '', '', '定时任务', 'null', 'null', 'yaml', '', ''); -INSERT INTO `config_info` VALUES (8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', '# 本地文件上传 \r\nfile:\r\n domain: http://127.0.0.1:9300\r\n path: D:/ruoyi/uploadPath\r\n prefix: /statics\r\n\r\n# FastDFS配置\r\nfdfs:\r\n domain: http://8.129.231.12\r\n soTimeout: 3000\r\n connectTimeout: 2000\r\n trackerList: 8.129.231.12:22122\r\n\r\n# Minio配置\r\nminio:\r\n url: http://8.129.231.12:9000\r\n accessKey: minioadmin\r\n secretKey: minioadmin\r\n bucketName: test', '5382b93f3d8059d6068c0501fdd41195', '2020-11-20 00:00:00', '2020-12-21 21:01:59', NULL, '0:0:0:0:0:0:0:1', '', '', '文件服务', 'null', 'null', 'yaml', NULL, ''); -INSERT INTO `config_info` VALUES (9, 'sentinel-ruoyi-gateway', 'DEFAULT_GROUP', '[\r\n {\r\n \"resource\": \"ruoyi-auth\",\r\n \"count\": 500,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-system\",\r\n \"count\": 1000,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-gen\",\r\n \"count\": 200,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-job\",\r\n \"count\": 300,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n }\r\n]', '9f3a3069261598f74220bc47958ec252', '2020-11-20 00:00:00', '2020-11-20 00:00:00', NULL, '0:0:0:0:0:0:0:1', '', '', '限流策略', 'null', 'null', 'json', NULL, ''); -INSERT INTO `config_info` VALUES (11, 'management-platform-dev.yml', 'DEFAULT_GROUP', 'spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n', 'd6ad4d958f194135071640cba1478216', '2024-01-03 16:34:18', '2024-01-04 14:18:33', 'nacos', '172.20.32.150', '', '', '', '', '', 'yaml', '', ''); - --- ---------------------------- --- Table structure for config_info_aggr --- ---------------------------- -DROP TABLE IF EXISTS `config_info_aggr`; -CREATE TABLE `config_info_aggr` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', - `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', - `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id', - `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容', - `gmt_modified` datetime NOT NULL COMMENT '修改时间', - `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of config_info_aggr --- ---------------------------- - --- ---------------------------- --- Table structure for config_info_beta --- ---------------------------- -DROP TABLE IF EXISTS `config_info_beta`; -CREATE TABLE `config_info_beta` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', - `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', - `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', - `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', - `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps', - `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', - `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', - `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '秘钥', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of config_info_beta --- ---------------------------- - --- ---------------------------- --- Table structure for config_info_tag --- ---------------------------- -DROP TABLE IF EXISTS `config_info_tag`; -CREATE TABLE `config_info_tag` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', - `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', - `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id', - `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', - `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', - `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', - `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of config_info_tag --- ---------------------------- - --- ---------------------------- --- Table structure for config_tags_relation --- ---------------------------- -DROP TABLE IF EXISTS `config_tags_relation`; -CREATE TABLE `config_tags_relation` ( - `id` bigint(20) NOT NULL COMMENT 'id', - `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name', - `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type', - `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', - `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', - `nid` bigint(20) NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`nid`) USING BTREE, - UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE, - INDEX `idx_tenant_id`(`tenant_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of config_tags_relation --- ---------------------------- - --- ---------------------------- --- Table structure for group_capacity --- ---------------------------- -DROP TABLE IF EXISTS `group_capacity`; -CREATE TABLE `group_capacity` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', - `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值', - `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量', - `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', - `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值', - `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', - `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of group_capacity --- ---------------------------- - --- ---------------------------- --- Table structure for his_config_info --- ---------------------------- -DROP TABLE IF EXISTS `his_config_info`; -CREATE TABLE `his_config_info` ( - `id` bigint(64) UNSIGNED NOT NULL, - `nid` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', - `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL, - `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', - `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '秘钥', - PRIMARY KEY (`nid`) USING BTREE, - INDEX `idx_gmt_create`(`gmt_create`) USING BTREE, - INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE, - INDEX `idx_did`(`data_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of his_config_info --- ---------------------------- -INSERT INTO `his_config_info` VALUES (5, 1, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '', '# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: password\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.system\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '00678c89684ec0b825cb9b71e032db64', '2024-01-02 16:17:33', '2024-01-02 16:17:33', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (0, 2, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \r\n # spring配置\r\nspring:\r\n redis:\r\n host: 172.20.32.150\r\n port: 6379\r\n password:\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n # 主库数据源\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: 123456\r\n # 从库数据源\r\n # slave:\r\n # username: root\r\n # password: Trust_#%01\r\n # url: jdbc:mysql://173.15.15.83:3306/testjunkenewweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n # driver-class-name: com.mysql.cj.jdbc.Driver\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.pms\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\r\n\r\n# swagger配置\r\nswagger:\r\n title: 项目管理模块接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# argo\r\nargo:\r\n url: pipeline-convert-service.argo.svc:80\r\n convert: /api/v1/workflow/convert\r\n workflowRun: /api/v1/workflow/run\r\n workflowStatus: /api/v1/workflow/getWorkflow n\r\n workflowTermination: /api/v1/workflow/terminate\r\n workflowLog: /api/v1/workflow/getWorkflowLog\r\n\r\n\r\n# 流水线配置\r\npipeline:\r\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\r\n\r\nk8s:\r\n storageClassName: storage-nfs\r\n http: apiserver.cluster.local:6443\r\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\r\n# jupyter配置\r\njupyter:\r\n image: jupyterlab:v1\r\n port: 8888\r\n namespace: default\r\n mountPath: /opt/notebooks/\r\n storage: 2Gi\r\n masterIp: http://172.20.32.181\r\n\r\nminio:\r\n endpoint: minio.argo.svc:9000\r\n accessKey: admin\r\n secretKey: qazxc123456.', '298e2940fed455199a54e56f92308580', '2024-01-03 16:34:18', '2024-01-03 16:34:18', NULL, '172.20.32.150', 'I', '', ''); -INSERT INTO `his_config_info` VALUES (11, 3, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \r\n # spring配置\r\nspring:\r\n redis:\r\n host: 172.20.32.150\r\n port: 6379\r\n password:\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n # 主库数据源\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: 123456\r\n # 从库数据源\r\n # slave:\r\n # username: root\r\n # password: Trust_#%01\r\n # url: jdbc:mysql://173.15.15.83:3306/testjunkenewweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n # driver-class-name: com.mysql.cj.jdbc.Driver\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.pms\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\r\n\r\n# swagger配置\r\nswagger:\r\n title: 项目管理模块接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# argo\r\nargo:\r\n url: pipeline-convert-service.argo.svc:80\r\n convert: /api/v1/workflow/convert\r\n workflowRun: /api/v1/workflow/run\r\n workflowStatus: /api/v1/workflow/getWorkflow n\r\n workflowTermination: /api/v1/workflow/terminate\r\n workflowLog: /api/v1/workflow/getWorkflowLog\r\n\r\n\r\n# 流水线配置\r\npipeline:\r\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\r\n\r\nk8s:\r\n storageClassName: storage-nfs\r\n http: apiserver.cluster.local:6443\r\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\r\n# jupyter配置\r\njupyter:\r\n image: jupyterlab:v1\r\n port: 8888\r\n namespace: default\r\n mountPath: /opt/notebooks/\r\n storage: 2Gi\r\n masterIp: http://172.20.32.181\r\n\r\nminio:\r\n endpoint: minio.argo.svc:9000\r\n accessKey: admin\r\n secretKey: qazxc123456.', '298e2940fed455199a54e56f92308580', '2024-01-04 09:26:10', '2024-01-04 09:26:10', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 4, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \n # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n \n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n druid:\n # 主库数据源\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n slave:\n # 从数据源开关/默认关闭\n enabled: false\n url: \n username: \n password: \n # 初始连接数\n initialSize: 5\n # 最小连接池数量\n minIdle: 10\n # 最大连接池数量\n maxActive: 20\n # 配置获取连接等待超时的时间\n maxWait: 60000\n # 配置连接超时时间\n connectTimeout: 30000\n # 配置网络超时时间\n socketTimeout: 60000\n # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n timeBetweenEvictionRunsMillis: 60000\n # 配置一个连接在池中最小生存的时间,单位是毫秒\n minEvictableIdleTimeMillis: 300000\n # 配置一个连接在池中最大生存的时间,单位是毫秒\n maxEvictableIdleTimeMillis: 900000\n # 配置检测连接是否有效\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n webStatFilter: \n enabled: true\n statViewServlet:\n enabled: true\n # 设置白名单,不填则允许所有访问\n allow:\n url-pattern: /druid/*\n # 控制台管理用户名和密码\n login-username: ruoyi\n login-password: 123456\n filter:\n stat:\n enabled: true\n # 慢SQL记录\n log-slow-sql: true\n slow-sql-millis: 1000\n merge-sql: true\n wall:\n config:\n multi-statement-allow: true\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.pms\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\n\n# swagger配置\nswagger:\n title: 项目管理模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', 'f2708f00bb12925d37d6a4ad06f360f9', '2024-01-04 09:40:36', '2024-01-04 09:40:36', NULL, '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 5, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \r\n # spring配置\r\nspring:\r\n redis:\r\n host: 172.20.32.150\r\n port: 6379\r\n password:\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n # 主库数据源\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: 123456\r\n # 从库数据源\r\n # slave:\r\n # username: root\r\n # password: Trust_#%01\r\n # url: jdbc:mysql://173.15.15.83:3306/testjunkenewweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n # driver-class-name: com.mysql.cj.jdbc.Driver\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.pms\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\r\n\r\n# swagger配置\r\nswagger:\r\n title: 项目管理模块接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# argo\r\nargo:\r\n url: pipeline-convert-service.argo.svc:80\r\n convert: /api/v1/workflow/convert\r\n workflowRun: /api/v1/workflow/run\r\n workflowStatus: /api/v1/workflow/getWorkflow n\r\n workflowTermination: /api/v1/workflow/terminate\r\n workflowLog: /api/v1/workflow/getWorkflowLog\r\n\r\n\r\n# 流水线配置\r\npipeline:\r\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\r\n\r\nk8s:\r\n storageClassName: storage-nfs\r\n http: apiserver.cluster.local:6443\r\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\r\n# jupyter配置\r\njupyter:\r\n image: jupyterlab:v1\r\n port: 8888\r\n namespace: default\r\n mountPath: /opt/notebooks/\r\n storage: 2Gi\r\n masterIp: http://172.20.32.181\r\n\r\nminio:\r\n endpoint: minio.argo.svc:9000\r\n accessKey: admin\r\n secretKey: qazxc123456.', '298e2940fed455199a54e56f92308580', '2024-01-04 09:41:16', '2024-01-04 09:41:16', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 6, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \n # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n # slave:\n # username: root\n # password: Trust_#%01\n # url: jdbc:mysql://173.15.15.83:3306/testjunkenewweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n # driver-class-name: com.mysql.cj.jdbc.Driver\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.pms\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\n\n# swagger配置\nswagger:\n title: 项目管理模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '2c0efa56ca82e967fc532e934e13f180', '2024-01-04 09:42:07', '2024-01-04 09:42:07', NULL, '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 7, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \n # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n \n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n druid:\n # 主库数据源\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n slave:\n # 从数据源开关/默认关闭\n enabled: false\n url: \n username: \n password: \n # 初始连接数\n initialSize: 5\n # 最小连接池数量\n minIdle: 10\n # 最大连接池数量\n maxActive: 20\n # 配置获取连接等待超时的时间\n maxWait: 60000\n # 配置连接超时时间\n connectTimeout: 30000\n # 配置网络超时时间\n socketTimeout: 60000\n # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n timeBetweenEvictionRunsMillis: 60000\n # 配置一个连接在池中最小生存的时间,单位是毫秒\n minEvictableIdleTimeMillis: 300000\n # 配置一个连接在池中最大生存的时间,单位是毫秒\n maxEvictableIdleTimeMillis: 900000\n # 配置检测连接是否有效\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n webStatFilter: \n enabled: true\n statViewServlet:\n enabled: true\n # 设置白名单,不填则允许所有访问\n allow:\n url-pattern: /druid/*\n # 控制台管理用户名和密码\n login-username: ruoyi\n login-password: 123456\n filter:\n stat:\n enabled: true\n # 慢SQL记录\n log-slow-sql: true\n slow-sql-millis: 1000\n merge-sql: true\n wall:\n config:\n multi-statement-allow: true\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.pms\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\n\n# swagger配置\nswagger:\n title: 项目管理模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', 'f2708f00bb12925d37d6a4ad06f360f9', '2024-01-04 09:45:17', '2024-01-04 09:45:17', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 8, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' \n # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n \n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n druid:\n # 主库数据源\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n slave:\n # 从数据源开关/默认关闭\n enabled: false\n url: \n username: \n password: \n # 初始连接数\n initialSize: 5\n # 最小连接池数量\n minIdle: 10\n # 最大连接池数量\n maxActive: 20\n # 配置获取连接等待超时的时间\n maxWait: 60000\n # 配置连接超时时间\n connectTimeout: 30000\n # 配置网络超时时间\n socketTimeout: 60000\n # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n timeBetweenEvictionRunsMillis: 60000\n # 配置一个连接在池中最小生存的时间,单位是毫秒\n minEvictableIdleTimeMillis: 300000\n # 配置一个连接在池中最大生存的时间,单位是毫秒\n maxEvictableIdleTimeMillis: 900000\n # 配置检测连接是否有效\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n webStatFilter: \n enabled: true\n statViewServlet:\n enabled: true\n # 设置白名单,不填则允许所有访问\n allow:\n url-pattern: /druid/*\n # 控制台管理用户名和密码\n login-username: ruoyi\n login-password: 123456\n filter:\n stat:\n enabled: true\n # 慢SQL记录\n log-slow-sql: true\n slow-sql-millis: 1000\n merge-sql: true\n wall:\n config:\n multi-statement-allow: true\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.pms\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\n\n# swagger配置\nswagger:\n title: 项目管理模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', 'f2708f00bb12925d37d6a4ad06f360f9', '2024-01-04 10:19:51', '2024-01-04 10:19:51', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 9, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '93cc7f4352ad6aa9078f2268921105a5', '2024-01-04 10:30:29', '2024-01-04 10:30:29', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 10, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.jdbc.Driver\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '28c94736019221e4f39a8c433d76cc90', '2024-01-04 10:31:35', '2024-01-04 10:31:35', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 11, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '93cc7f4352ad6aa9078f2268921105a5', '2024-01-04 10:35:13', '2024-01-04 10:35:14', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 12, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' # 数据源配置\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n druid:\n # 主库数据源\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n slave:\n # 从数据源开关/默认关闭\n enabled: false\n url: \n username: \n password: \n # 初始连接数\n initialSize: 5\n # 最小连接池数量\n minIdle: 10\n # 最大连接池数量\n maxActive: 20\n # 配置获取连接等待超时的时间\n maxWait: 60000\n # 配置连接超时时间\n connectTimeout: 30000\n # 配置网络超时时间\n socketTimeout: 60000\n # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n timeBetweenEvictionRunsMillis: 60000\n # 配置一个连接在池中最小生存的时间,单位是毫秒\n minEvictableIdleTimeMillis: 300000\n # 配置一个连接在池中最大生存的时间,单位是毫秒\n maxEvictableIdleTimeMillis: 900000\n # 配置检测连接是否有效\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n webStatFilter: \n enabled: true\n statViewServlet:\n enabled: true\n # 设置白名单,不填则允许所有访问\n allow:\n url-pattern: /druid/*\n # 控制台管理用户名和密码\n login-username: ruoyi\n login-password: 123456\n filter:\n stat:\n enabled: true\n # 慢SQL记录\n log-slow-sql: true\n slow-sql-millis: 1000\n merge-sql: true\n wall:\n config:\n multi-statement-allow: true\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '734cfe074dd269b987d0b96a55beeb0e', '2024-01-04 10:52:02', '2024-01-04 10:52:03', NULL, '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 13, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' # spring配置\nspring:\n redis:\n host: 172.20.32.150\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n connectTimeout: 30000\n socketTimeout: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '93cc7f4352ad6aa9078f2268921105a5', '2024-01-04 10:59:15', '2024-01-04 10:59:15', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 14, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow n\n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', 'f1d959c6087506249a3e234d57a55ce5', '2024-01-04 11:01:18', '2024-01-04 11:01:18', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 15, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '6c8eeab8975d8063d2aeb004cef6b74d', '2024-01-04 11:03:47', '2024-01-04 11:03:47', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 16, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: nms\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '9b0447e9cf407f3677f6de5da9d3f315', '2024-01-04 11:04:21', '2024-01-04 11:04:22', NULL, '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 17, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', ' spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.', '6c8eeab8975d8063d2aeb004cef6b74d', '2024-01-04 11:17:46', '2024-01-04 11:17:46', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 18, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', '\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n \nspring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver', '9b9a74b1d494fc235ae5f6964b9b0079', '2024-01-04 11:23:26', '2024-01-04 11:23:27', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 19, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver', '541115dc21d4098b785343d5e7ea7ab2', '2024-01-04 11:24:27', '2024-01-04 11:24:28', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 20, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', '# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\nspring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: false\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n config:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver', 'b29634dfb89190c9647a597b0b5e73bc', '2024-01-04 11:38:52', '2024-01-04 11:38:53', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 21, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', '# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\nspring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver', 'dc763d5da4a27a4b1f20caf32ef7c591', '2024-01-04 13:45:44', '2024-01-04 13:45:44', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 22, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n', 'd6ad4d958f194135071640cba1478216', '2024-01-04 14:16:13', '2024-01-04 14:16:13', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (11, 23, 'management-platform-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n main:\n allow-circular-references: true #允\n # 数据源\n datasource:\n # Druid StatViewServlet配置\n druid:\n stat-view-servlet:\n # 默认true 内置监控页面首页/druid/index.html\n enabled: true\n initial-size: 20\n max-active: 60\n min-idle: 20\n max-wait: 30000\n dynamic:\n primary: master\n datasource:\n master:\n url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true\n username: root\n password: 123456\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.ruoyi.management-platform\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n# argo\nargo:\n url: pipeline-convert-service.argo.svc:80\n convert: /api/v1/workflow/convert\n workflowRun: /api/v1/workflow/run\n workflowStatus: /api/v1/workflow/getWorkflow \n workflowTermination: /api/v1/workflow/terminate\n workflowLog: /api/v1/workflow/getWorkflowLog\n\n\n# 流水线配置\npipeline:\n control_strategy: \'[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]\'\n\nk8s:\n storageClassName: storage-nfs\n http: apiserver.cluster.local:6443\n token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXNteGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZWY1ZjdkMC0zMTdkLTQxN2UtOWY4Ni1mYjA1OTFhYWVhZDQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.GMpReYK7YJ0nNy-F6VrUJQzjWQiSauAOeq0-DT8ik2Lx8f2eznYEm_3cHX4kIn_nYgfxo857urcHt4Ft6IgVtWzxLzVTCQVaNP_H2J8bnJn8W2tUKXzF_3d_GwO75H7kN8P3aoShULrOLpiIf3o3Az28_gwHkwCnd42npcKrCXfAKj8A2U7-KUFQXXA-etrWSw81C5t8ziL-2xaiDgwD3ewH-TNYsOpyWjGopNTxJn1F7GyJ7xDlmMJOaZhSnOrDggB7lqDEsE68YmZtqB7lcSaZHnKzvNhEdbKri4R7_urpjttz_k6qcfIi-l6GwPtJLatsPDg3OL3FFnzjvArJ-A\n# jupyter配置\njupyter:\n image: jupyterlab:v1\n port: 8888\n namespace: default\n mountPath: /opt/notebooks/\n storage: 2Gi\n masterIp: http://172.20.32.181\n\nminio:\n endpoint: minio.argo.svc:9000\n accessKey: admin\n secretKey: qazxc123456.\n', '0103470e46879d72ca41cebfc8f068af', '2024-01-04 14:18:33', '2024-01-04 14:18:33', 'nacos', '172.20.32.150', 'U', '', ''); -INSERT INTO `his_config_info` VALUES (2, 24, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', '', 'spring:\n redis:\n host: localhost\n port: 6379\n password:\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n\n# 安全配置\nsecurity:\n # 验证码\n captcha:\n enabled: true\n type: math\n # 防止XSS攻击\n xss:\n enabled: true\n excludeUrls:\n - /system/notice\n # 不校验白名单\n ignore:\n whites:\n - /auth/logout\n - /auth/login\n - /auth/register\n - /*/v2/api-docs\n - /csrf\n', '57cec5abd0e0a6b77d853750344a9dc0', '2024-01-04 15:16:15', '2024-01-04 15:16:15', 'nacos', '172.20.32.150', 'U', '', ''); - --- ---------------------------- --- Table structure for permissions --- ---------------------------- -DROP TABLE IF EXISTS `permissions`; -CREATE TABLE `permissions` ( - `role` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - `resource` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - `action` varchar(8) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of permissions --- ---------------------------- - --- ---------------------------- --- Table structure for roles --- ---------------------------- -DROP TABLE IF EXISTS `roles`; -CREATE TABLE `roles` ( - `username` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - `role` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - UNIQUE INDEX `idx_user_role`(`username`, `role`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of roles --- ---------------------------- -INSERT INTO `roles` VALUES ('nacos', 'ROLE_ADMIN'); - --- ---------------------------- --- Table structure for tenant_capacity --- ---------------------------- -DROP TABLE IF EXISTS `tenant_capacity`; -CREATE TABLE `tenant_capacity` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID', - `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值', - `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量', - `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', - `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数', - `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', - `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of tenant_capacity --- ---------------------------- - --- ---------------------------- --- Table structure for tenant_info --- ---------------------------- -DROP TABLE IF EXISTS `tenant_info`; -CREATE TABLE `tenant_info` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp', - `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', - `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name', - `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc', - `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source', - `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', - `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE, - INDEX `idx_tenant_id`(`tenant_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of tenant_info --- ---------------------------- - --- ---------------------------- --- Table structure for users --- ---------------------------- -DROP TABLE IF EXISTS `users`; -CREATE TABLE `users` ( - `username` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - `password` varchar(500) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, - `enabled` tinyint(1) NOT NULL, - PRIMARY KEY (`username`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of users --- ---------------------------- -INSERT INTO `users` VALUES ('nacos', '$2a$10$3IlH08injUAkk5yuIFV39.MCkOXLFOeAXsAeStT65xMZqZ9ZkyvXm', 1); - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/ry-ci4s-20240126.sql b/sql/ry-ci4s.sql similarity index 51% rename from sql/ry-ci4s-20240126.sql rename to sql/ry-ci4s.sql index 5b5621db..2fb8ae1d 100644 --- a/sql/ry-ci4s-20240126.sql +++ b/sql/ry-ci4s.sql @@ -1,29 +1,117 @@ /* Navicat Premium Data Transfer - Source Server : localhost + Source Server : test-ci4s185 Source Server Type : MySQL - Source Server Version : 50721 - Source Host : 172.20.32.150:3306 + Source Server Version : 50730 + Source Host : 172.20.32.185:31201 Source Schema : ry-ci4s Target Server Type : MySQL - Target Server Version : 50721 + Target Server Version : 50730 File Encoding : 65001 - Date: 26/01/2024 09:43:55 + Date: 02/04/2024 14:18:00 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; +-- ---------------------------- +-- Table structure for asset_icon +-- ---------------------------- +DROP TABLE IF EXISTS `asset_icon`; +CREATE TABLE `asset_icon` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '资产图标名称', + `category_id` int(11) NULL DEFAULT NULL COMMENT '分类id ,1数据集 2模型', + `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路径', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL, + `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `state` int(11) NULL DEFAULT NULL COMMENT '0失效,1生效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 67 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of asset_icon +-- ---------------------------- +INSERT INTO `asset_icon` VALUES (1, '计算机视觉', 1, '101', '计算机视觉', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (2, '自然语言处理', 1, '102', '自然语言处理', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (3, '计算机视觉、自然语言处理', 1, '103', '计算机视觉、自然语言处理', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (4, '机器翻译', 1, '104', '机器翻译', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (5, '医学影像', 1, '105', '医学影像', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (6, '机器翻译', 2, '201', '机器翻译', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (7, '问答系统', 2, '202', '问答系统', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (8, '信息检索', 2, '203', '信息检索', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (9, '知识图谱', 2, '204', '知识图谱', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (10, '文本标注', 2, '205', '文本标注', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (11, '文本分类', 2, '206', '文本分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (12, '语言建模', 2, '207', '语言建模', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (13, '语音识别', 2, '208', '语音识别', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (14, '信息抽取', 2, '209', '信息抽取', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (15, '说明生成', 2, '210', '说明生成', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (16, '图像分类', 2, '211', '图像分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (17, '人脸识别', 2, '212', '人脸识别', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (18, '图像搜索', 2, '213', '图像搜索', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (19, '目标检测', 2, '214', '目标检测', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (20, '图像描述生成', 2, '215', '图像描述生成', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (21, '车辆车牌识别', 2, '216', '车辆车牌识别', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (22, '医学图像分析', 2, '217', '医学图像分析', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (23, '无人驾驶', 2, '218', '无人驾驶', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (24, '无人安防', 2, '219', '无人安防', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (25, '无人机', 2, '220', '无人机', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (26, 'VR/AR', 2, '221', 'VR/AR', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (27, '2-D视觉', 2, '222', '2-D视觉', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (28, '2.5-D视觉', 2, '223', '2.5-D视觉', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (29, '3D重构', 2, '224', '3D重构', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (30, '图像处理', 2, '225', '图像处理', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (31, '视频处理', 2, '226', '视频处理', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (32, '视觉输入系统', 2, '227', '视觉输入系统', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (33, '语音编码', 2, '228', '语音编码', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (34, '语言增强', 2, '229', '语言增强', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (35, '语音合成', 2, '230', '语音合成', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (36, '开源开放社区', 2, '231', '开源开放社区', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (37, 'PyTorch', 3, '301', 'PyTorch', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (38, 'MindSpore', 3, '302', 'MindSpore', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (39, 'TensorFlow', 3, '303', 'TensorFlow', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (40, 'PaddlePaddle', 3, '304', 'PaddlePaddle', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (41, 'MXNet', 3, '305', 'MXNet', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (42, 'OneFlow', 3, '306', 'oneFlow', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (43, 'Other', 3, '307', 'Other', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (44, '特征提取', 4, '401', '特征提取', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (45, '文本到图像', 4, '402', '文本到图像', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (46, '图像转文本', 4, '403', '图像转文本', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (47, '主文本转视频', 4, '404', '主文本转视频', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (48, '视觉问答', 4, '405', '视觉问答', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (49, '文档问答', 4, '406', '文档问答', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (50, '图形机器学习', 4, '407', '图形机器学习', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (51, '图像分类', 4, '408', '图像分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (52, '物体检测', 4, '409', '物体检测', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (53, '深度估计', 4, '410', '深度估计', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (54, '图像分割', 4, '411', '图像分割', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (55, '文本分类', 4, '412', '文本分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (56, '代币分类', 4, '413', '代币分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (57, '文本生成', 4, '414', '文本生成', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (58, '句子相似性', 4, '415', '句子相似性', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (59, '文本转语音', 4, '416', '文本转语音', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (60, '自动语音识别', 4, '417', '自动语音识别', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (61, '音频分类', 4, '418', '音频分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (62, '语音活动检测', 4, '419', '语音活动检测', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (63, '表格分类', 4, '420', '表格分类', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (64, '表格回归', 4, '421', '表格回归', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (65, '强化学习', 4, '422', '强化学习', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); +INSERT INTO `asset_icon` VALUES (66, '机器人', 4, '423', '机器人', 'admin', '2024-03-14 17:07:49', 'admin', '2024-03-14 17:07:56', 1); + -- ---------------------------- -- Table structure for component -- ---------------------------- DROP TABLE IF EXISTS `component`; CREATE TABLE `component` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '主键', - `category_id` int(4) NOT NULL COMMENT '类别ID,数据字典配置', + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `category_id` int(11) NOT NULL COMMENT '类别ID,数据字典配置', `component_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件name', `component_label` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件面板名', `images` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像', @@ -41,9 +129,9 @@ CREATE TABLE `component` ( `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', + `state` int(11) NULL DEFAULT 1 COMMENT '0,失效 1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 39 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of component @@ -55,8 +143,9 @@ INSERT INTO `component` VALUES (33, 2, 'model-train', '通用模型训练组件' INSERT INTO `component` VALUES (34, 1, 'git-clone', '代码拉取组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"\"}}', '{\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}}', '代码拉取组件', '', 'admin', '2024-01-18 08:45:10', 'admin', '2024-01-18 08:45:10', 0); INSERT INTO `component` VALUES (35, 2, '通用模型训练', '通用模型训练组件介绍', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{\"--dataset\":{\"type\":\"ref\",\"item_type\":\"dataset\",\"label\":\"选择数据集\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"\",\"describe\":\"选择数据集\",\"editable\":1,\"condition\":\"\"},\"--model_name\":{\"type\":\"ref\",\"item_type\":\"model\",\"label\":\"选择模型\",\"require\":0,\"choice\":[],\"range\":\"$min,$max\",\"default\":\"\",\"placeholder\":\"\",\"describe\":\"这里是这个参数的描述和备注\",\"editable\":1,\"condition\":\"\",\"form_info\":{\"name\":\"mnist\",\"path\":\"/mnt/e/xxxx\"}}}', '{\"--model_output\":{\"type\":\"str\",\"path\":\"/model\"}}', '通用模型训练组件介绍', NULL, 'admin', '2024-01-15 14:00:34', 'admin', '2024-01-15 14:00:29', 0); INSERT INTO `component` VALUES (36, 1, 'git-clone', '代码拉取组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"\"}}', '{\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}}', '代码拉取组件', NULL, 'admin', '2024-01-16 11:22:04', 'admin', '2024-01-16 11:22:04', 0); -INSERT INTO `component` VALUES (37, 1, 'git-clone', '代码拉取组件', '镜像', '工作目录', '启动命令', '{}', NULL, '{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}', '挂载目录', '{\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"\"}}', '{\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}}', '代码拉取组件', 'component-icon-1', 'admin', '2024-01-18 08:45:11', 'admin', '2024-01-18 08:45:11', 1); +INSERT INTO `component` VALUES (37, 1, 'git-clone', '代码拉取', '镜像', '工作目录', '启动命令', '{}', NULL, '{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}', '挂载目录', '{\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"1\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"\"}}', '{\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}}', '代码拉取组件', 'component-icon-1', 'admin', '2024-03-02 13:41:25', 'admin', '2024-03-02 13:41:25', 1); INSERT INTO `component` VALUES (38, 2, 'model-train', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}', '挂载目录', '{\"--dataset\":{\"type\":\"ref\",\"item_type\":\"dataset\",\"label\":\"选择数据集\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"\",\"describe\":\"选择数据集\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--model_name\":{\"type\":\"ref\",\"item_type\":\"model\",\"label\":\"选择模型\",\"require\":0,\"choice\":[],\"range\":\"$min,$max\",\"default\":\"\",\"placeholder\":\"\",\"describe\":\"这里是这个参数的描述和备注\",\"editable\":1,\"condition\":\"\",\"value\":\"\"}}', '{\"--model_output\":{\"type\":\"str\",\"label\":\"模型输出路径\",\"path\":\"/model\",\"require\":1}}', '通用模型训练组件介绍', 'component-icon-2', 'admin', '2024-01-18 08:45:14', 'admin', '2024-01-18 08:45:14', 1); +INSERT INTO `component` VALUES (39, 2, 'distributed-model-train', '分布式训练', '', '', '', '{}', NULL, '{\"max_run_time\":{\"type\":\"str\",\"label\":\"超时中断\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"重试次数\",\"value\":\"1\"}}', '', '{\"--dataset\":{\"type\":\"ref\",\"item_type\":\"dataset\",\"label\":\"选择数据集\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"\",\"describe\":\"选择数据集\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--model_name\":{\"type\":\"ref\",\"item_type\":\"model\",\"label\":\"选择模型\",\"require\":0,\"choice\":[],\"range\":\"$min,$max\",\"default\":\"\",\"placeholder\":\"\",\"describe\":\"这里是这个参数的描述和备注\",\"editable\":1,\"condition\":\"\",\"value\":\"\"},\"--worker_num\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"分布式训练work数量\",\"require\":1,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"分布式训练work数量\",\"editable\":1,\"condition\":\"\",\"value\":\"\"}}', '{\"--model_output\":{\"type\":\"str\",\"label\":\"模型输出路径\",\"path\":\"/model\",\"require\":1}}', '分布式模型训练组件,支持deepspeed, metatron, horovod', NULL, 'admin', '2024-03-07 15:47:37', 'admin', '2024-03-07 15:47:39', 1); -- ---------------------------- -- Table structure for computing_resource @@ -71,7 +160,7 @@ CREATE TABLE `computing_resource` ( `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT NULL COMMENT '0,失效 1, 生效', + `state` int(11) NULL DEFAULT NULL COMMENT '0,失效 1, 生效', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; @@ -86,70 +175,46 @@ DROP TABLE IF EXISTS `dataset`; CREATE TABLE `dataset` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `data_type` int(11) NULL DEFAULT NULL, + `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `available_range` int(11) NULL DEFAULT NULL COMMENT '1公开,0私有', + `data_type` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据集类别', + `data_tag` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据集tag', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', + `state` int(11) NULL DEFAULT 1 COMMENT '0,失效 1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of dataset -- ---------------------------- -INSERT INTO `dataset` VALUES (1, 'MNIST', 'SDSDS', NULL, '', '2023-12-28 13:54:20', '', '2023-12-28 13:54:20', 0); -INSERT INTO `dataset` VALUES (2, '鸢尾花', 'sdasdsa', NULL, '', '2023-12-26 14:18:21', '', '2023-12-26 14:18:21', 0); -INSERT INTO `dataset` VALUES (4, 'start_workflow.json', NULL, NULL, '苏影城', '2023-12-26 16:01:45', '苏影城', '2023-12-26 16:01:45', 0); -INSERT INTO `dataset` VALUES (5, 'start_workflow.json', NULL, NULL, 'admin', '2023-12-27 09:16:59', 'admin', '2023-12-27 09:16:59', 0); -INSERT INTO `dataset` VALUES (6, 'workspace.postman_globals.json', NULL, NULL, '苏影城', '2023-12-27 11:30:16', '苏影城', '2023-12-27 11:30:16', 0); -INSERT INTO `dataset` VALUES (7, 'mnist', '计算机视觉手写体识别mnist数据集 二次修改', 1, 'admin', '2023-12-28 09:37:14', '苏影城', '2023-12-28 09:37:12', 0); -INSERT INTO `dataset` VALUES (8, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-27 15:21:02', 'admin', '2023-12-27 15:21:02', 0); -INSERT INTO `dataset` VALUES (9, 'mnist', '计算机视觉手写体识别mnist数据集XXXX', 2, 'admin', '2023-12-28 13:57:42', 'admin', '2023-12-28 14:03:22', 0); -INSERT INTO `dataset` VALUES (10, 'mnist', '计算机视觉手写体识别mnist数据集XXXX', 2, 'admin', '2023-12-28 14:34:30', 'admin', '2023-12-28 15:32:00', 0); -INSERT INTO `dataset` VALUES (11, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-28 14:34:04', 'admin', '2023-12-28 14:34:04', 0); -INSERT INTO `dataset` VALUES (12, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-28 16:03:51', 'admin', '2023-12-29 09:00:22', 0); -INSERT INTO `dataset` VALUES (13, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-28 16:05:41', 'admin', '2023-12-28 16:05:41', 1); -INSERT INTO `dataset` VALUES (14, 'mnist', '计算机视觉手写体识别mnist数据集2-24', 1, 'admin', '2024-01-02 15:43:14', 'admin', '2024-01-02 15:44:02', 1); -INSERT INTO `dataset` VALUES (15, 'new-mnist', '20240117测试数据集', 0, 'admin', '2024-01-17 09:38:08', 'admin', '2024-01-17 09:38:08', 1); -- ---------------------------- -- Table structure for dataset_version -- ---------------------------- DROP TABLE IF EXISTS `dataset_version`; CREATE TABLE `dataset_version` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '主键', - `dataset_id` int(4) NOT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `dataset_id` int(11) NOT NULL, `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '版本', `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据集存储地址', - `file_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名', - `file_size` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', + `file_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名', + `file_size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', `available_cluster` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '可用集群', - `status` int(4) NULL DEFAULT NULL COMMENT '状态', + `status` int(11) NULL DEFAULT NULL COMMENT '状态', `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT NULL COMMENT '0失效,1生效', + `state` int(11) NULL DEFAULT NULL COMMENT '0失效,1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of dataset_version -- ---------------------------- -INSERT INTO `dataset_version` VALUES (1, 12, '1.0', 'datasets/admin/mnist-20231228-160351/v1.0/comonent-register.json', 'gasdfas.csv', '1MB', NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `dataset_version` VALUES (2, 14, 'v0.1.0', 'datasets/admin/mnist-20240113-164025/v0.1.0/MnistDataset_torch.zip', 'MnistDataset_torch.zip', '42032.4765625', 'GPU', 0, 'admin', '2024-01-13 16:40:25', 'admin', '2024-01-13 16:40:25', 1); -INSERT INTO `dataset_version` VALUES (3, 12, '2.0', 'datasets/admin/mnist-20240115-164032/2.0/xxxx.tar', 'xxxx.tar', '122312', NULL, 1, 'admin', '2024-01-15 16:40:33', 'admin', '2024-01-15 16:40:33', 0); -INSERT INTO `dataset_version` VALUES (4, 15, 'v0.1.0', 'datasets/admin/new-mnist-20240117-134614/v0.1.0/new-mnist.zip', 'new-mnist.zip', '2.7 KiB', 'GPU', 0, 'admin', '2024-01-17 13:46:14', 'admin', '2024-01-17 17:00:03', 1); -INSERT INTO `dataset_version` VALUES (5, 13, '2.0', 'datasets/admin/mnist-20240117-142058/2.0/xxxx.tar', 'xxxx.tar', '122312', NULL, 1, 'admin', '2024-01-17 14:20:58', 'admin', '2024-01-17 14:27:51', 1); -INSERT INTO `dataset_version` VALUES (6, 15, 'v0.2.0', 'datasets/admin/new-mnist-20240117-162229/v0.2.0/new-mnist.zip', 'new-mnist.zip', '655 Bytes', 'GPU', 0, 'admin', '2024-01-17 16:22:30', 'admin', '2024-01-17 16:22:30', 1); -INSERT INTO `dataset_version` VALUES (7, 15, 'v0.3.0', 'datasets/admin/new-mnist-20240117-162949/v0.3.0/new-mnist.zip', 'new-mnist.zip', '655 Bytes', 'GPU', 0, 'admin', '2024-01-17 16:29:49', 'admin', '2024-01-17 16:29:49', 1); -INSERT INTO `dataset_version` VALUES (8, 15, 'v0.4.0', 'datasets/admin/new-mnist-20240117-164246/v0.4.0/new-mnist.zip', 'new-mnist.zip', '655 Bytes', 'GPU', 0, 'admin', '2024-01-17 16:42:47', 'admin', '2024-01-17 16:42:47', 1); -INSERT INTO `dataset_version` VALUES (9, 15, 'v0.5.0', 'datasets/admin/new-mnist-20240117-165815/v0.5.0/new-mnist.zip', 'new-mnist.zip', '2.7 KiB', 'GPU', 0, 'admin', '2024-01-17 16:58:15', 'admin', '2024-01-17 16:58:15', 1); -INSERT INTO `dataset_version` VALUES (10, 14, 'v0.2.0', 'datasets/admin/mnist-20240118-114611/v0.2.0/MnistDataset_torch.zip', 'MnistDataset_torch.zip', '42032.4765625', 'GPU', 0, 'admin', '2024-01-18 11:46:11', 'admin', '2024-01-18 11:46:11', 0); -INSERT INTO `dataset_version` VALUES (11, 14, 'v0.3.0', NULL, NULL, NULL, 'GPU', 0, 'admin', '2024-01-18 11:47:57', 'admin', '2024-01-18 11:47:57', 1); -INSERT INTO `dataset_version` VALUES (12, 14, 'v0.2.0', 'datasets/admin/mnist-20240118-114804/v0.2.0/MnistDataset_torch.zip', 'MnistDataset_torch.zip', '42032.4765625', 'GPU', 0, 'admin', '2024-01-18 11:48:05', 'admin', '2024-01-18 11:48:05', 1); -- ---------------------------- -- Table structure for experiment @@ -160,53 +225,19 @@ CREATE TABLE `experiment` ( `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实验名称', `workflow_id` bigint(20) NULL DEFAULT NULL, `global_param` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '全局参数', + `status_list` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态列表', `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', + `state` int(11) NULL DEFAULT 1 COMMENT '0,失效 1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 356 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of experiment -- ---------------------------- -INSERT INTO `experiment` VALUES (321, NULL, 1, '{}', 'test', 'admin', '2023-11-06 16:34:48', 'admin', '2023-11-06 16:34:51', 0); -INSERT INTO `experiment` VALUES (322, NULL, 26, NULL, 'pytorch小模型训练实验做简单的测试', 'admin', '2023-11-15 15:27:33', 'admin', '2023-11-15 15:27:33', 0); -INSERT INTO `experiment` VALUES (323, NULL, 26, NULL, 'pytorch小模型训练实验做简单的测试', 'admin', '2023-11-15 16:26:03', 'admin', '2023-11-15 16:26:03', 0); -INSERT INTO `experiment` VALUES (324, NULL, 26, NULL, 'pytorch大模型训练实验做简单的测试', 'admin', '2023-11-16 10:17:59', 'admin', '2023-11-16 10:17:59', 0); -INSERT INTO `experiment` VALUES (325, NULL, 26, NULL, 'pytorch大模型训练实验做简单的测试', 'admin', '2023-11-16 10:18:49', 'admin', '2023-11-16 10:18:49', 0); -INSERT INTO `experiment` VALUES (326, NULL, 28, NULL, NULL, 'admin', '2023-11-17 09:52:05', 'admin', '2023-11-17 09:52:05', 0); -INSERT INTO `experiment` VALUES (327, NULL, 28, NULL, NULL, 'admin', '2023-11-17 09:53:38', 'admin', '2023-11-17 09:53:38', 0); -INSERT INTO `experiment` VALUES (328, NULL, 28, NULL, NULL, 'admin', '2023-11-17 14:09:11', 'admin', '2023-11-17 14:09:11', 0); -INSERT INTO `experiment` VALUES (329, 'tensorflow小模型训练实验做简单的测试', 28, NULL, NULL, 'admin', '2023-11-20 09:20:11', 'admin', '2023-11-20 09:20:11', 0); -INSERT INTO `experiment` VALUES (330, 'tensorflow小模型训练实验做简单的测试', 28, NULL, NULL, 'admin', '2023-11-17 14:13:43', 'admin', '2023-11-17 14:13:43', 0); -INSERT INTO `experiment` VALUES (331, 'tensorlfow大模型训练实验', 28, NULL, NULL, 'admin', '2023-11-17 14:14:33', 'admin', '2023-11-17 14:14:33', 0); -INSERT INTO `experiment` VALUES (332, NULL, 32, NULL, NULL, 'admin', '2023-11-18 15:56:31', 'admin', '2023-11-18 15:56:31', 0); -INSERT INTO `experiment` VALUES (333, 'pytorch手写体识别训练', NULL, NULL, 'pytorch手写体识别训练,参数非常少', 'admin', '2023-11-20 09:28:32', 'admin', '2023-11-20 09:28:32', 0); -INSERT INTO `experiment` VALUES (334, 'pytorch手写体识别训练-batchsize128', NULL, NULL, 'batchsize128', 'admin', '2023-11-20 09:36:03', 'admin', '2023-11-20 09:36:03', 0); -INSERT INTO `experiment` VALUES (335, 'pytorch手写体识别训练-batchsize128', NULL, NULL, 'batchsize128', 'admin', '2023-11-20 09:39:38', 'admin', '2023-11-20 09:39:38', 0); -INSERT INTO `experiment` VALUES (336, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 09:40:45', 'admin', '2023-11-20 09:40:45', 0); -INSERT INTO `experiment` VALUES (337, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 09:57:30', 'admin', '2023-11-20 09:57:30', 0); -INSERT INTO `experiment` VALUES (338, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:09:23', 'admin', '2023-11-20 10:09:23', 0); -INSERT INTO `experiment` VALUES (339, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:17:53', 'admin', '2023-11-20 10:17:53', 0); -INSERT INTO `experiment` VALUES (340, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:22:50', 'admin', '2023-11-20 10:22:50', 0); -INSERT INTO `experiment` VALUES (341, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (342, 'mindspore大模型训练实验-batcsize256', 35, NULL, 'batcsize256', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (343, '组件库方式tensorflow手写体识别训练-batchsize256', 40, NULL, 'batchsize256', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (344, '测试实验运行', NULL, NULL, 'mnist模型训练', 'admin', '2024-01-16 14:03:48', 'admin', '2024-01-16 14:03:48', 0); -INSERT INTO `experiment` VALUES (345, '测试实验运行', 61, NULL, 'mnist模型训练', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (346, '4234', NULL, NULL, '234', 'admin', '2024-01-17 16:47:02', 'admin', '2024-01-17 16:47:02', 0); -INSERT INTO `experiment` VALUES (347, '234', NULL, NULL, '234', 'admin', '2024-01-17 16:47:39', 'admin', '2024-01-17 16:47:39', 0); -INSERT INTO `experiment` VALUES (348, '测试实验运行', 61, NULL, 'mnist模型训练', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (349, '测试实验运行', 64, NULL, 'mniss', 'admin', '2024-01-18 10:00:36', 'admin', '2024-01-18 10:00:36', 0); -INSERT INTO `experiment` VALUES (350, '测试实验运行0124', 70, NULL, '测试实验0124', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (351, '213123', 68, NULL, '1233213', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (352, '测试实验运行0125', 70, NULL, '测试实验运行0125', 'admin', '2024-01-25 16:44:43', 'admin', '2024-01-25 16:44:43', 0); -INSERT INTO `experiment` VALUES (353, 'mnist-0125', 70, NULL, 'mnist 训练', 'admin', '2024-01-25 16:45:52', 'admin', '2024-01-25 16:45:52', 1); -INSERT INTO `experiment` VALUES (354, 'mnist-0125-error-test', 75, NULL, 'mnist模型训练', 'admin', '2024-01-25 16:57:19', 'admin', '2024-01-25 16:57:19', 1); -INSERT INTO `experiment` VALUES (355, 'erwerwer', 75, NULL, 'werwe', 'admin', '2024-01-26 09:27:13', 'admin', '2024-01-26 09:27:13', 0); -- ---------------------------- -- Table structure for experiment_ins @@ -219,144 +250,22 @@ CREATE TABLE `experiment_ins` ( `argo_ins_ns` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'argo返回命名空间', `status` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实例运行状态', `nodes_status` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '节点状态', + `nodes_result` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '节点运行产生的结果,制品地址', `nodes_logs` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '节点日志', + `global_param` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '全局参数', `start_time` datetime NULL DEFAULT NULL COMMENT '实验开始时间', `finish_time` datetime NULL DEFAULT NULL COMMENT '实验结束时间', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', + `state` int(11) NULL DEFAULT 1 COMMENT '0,失效 1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 128 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of experiment_ins -- ---------------------------- -INSERT INTO `experiment_ins` VALUES (1, 321, 'workflow-cgtld', 'argo', 'Terminated', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (2, 321, 'workflow-hwb7n', 'argo', 'Terminated', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (3, 321, 'workflow-ttshq', 'argo', 'Terminated', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (4, 321, 'workflow-vws9k', 'argo', 'Terminated', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (6, 323, 'workflow-lrb2s', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-15 16:44:39', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (7, 323, 'workflow-25qkl', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 09:11:17', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (8, 323, 'workflow-bjqrm', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 09:27:29', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (9, 323, 'workflow-hs4mq', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 09:43:17', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (10, 321, 'workflow-zsprx', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 10:11:29', 'admin', '2023-11-17 09:26:09', 0); -INSERT INTO `experiment_ins` VALUES (11, 322, 'workflow-bwxvs', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 10:12:59', 'admin', '2023-11-16 15:21:16', 0); -INSERT INTO `experiment_ins` VALUES (12, 322, 'workflow-jmk7l', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 10:13:31', 'admin', '2023-11-16 16:14:07', 0); -INSERT INTO `experiment_ins` VALUES (13, 321, 'workflow-jsbmn', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 10:13:47', 'admin', '2023-11-17 13:40:32', 0); -INSERT INTO `experiment_ins` VALUES (14, 325, 'workflow-7zdpd', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-16 10:18:50', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (15, 327, 'workflow-9gf62', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-11-17 09:53:39', 'admin', '2023-11-17 14:22:32', 0); -INSERT INTO `experiment_ins` VALUES (16, 331, 'workflow-dcchw', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-17 14:14:34', 'admin', '2023-11-17 14:16:48', 0); -INSERT INTO `experiment_ins` VALUES (17, 331, 'workflow-64qv8', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-17 14:15:33', 'admin', '2023-11-17 14:22:32', 0); -INSERT INTO `experiment_ins` VALUES (18, 336, 'workflow-kknnq', 'argo', 'Running', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 09:41:28', 'admin', '2023-11-20 09:51:20', 0); -INSERT INTO `experiment_ins` VALUES (19, 337, 'workflow-spwqx', 'argo', 'Succeeded', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 09:57:43', 'admin', '2023-11-20 10:08:52', 0); -INSERT INTO `experiment_ins` VALUES (20, 338, 'workflow-rpvmj', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 10:09:39', 'admin', '2023-11-20 10:14:45', 0); -INSERT INTO `experiment_ins` VALUES (21, 339, 'workflow-vqxwn', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 10:18:02', 'admin', '2023-11-20 10:18:17', 0); -INSERT INTO `experiment_ins` VALUES (22, 340, 'workflow-p4m58', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 10:23:13', 'admin', '2023-11-20 10:23:26', 0); -INSERT INTO `experiment_ins` VALUES (23, 341, 'workflow-ffd7k', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 10:28:47', 'admin', '2023-11-20 10:28:57', 0); -INSERT INTO `experiment_ins` VALUES (24, 341, 'workflow-psd6l', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 10:29:39', 'admin', '2023-11-20 10:29:52', 0); -INSERT INTO `experiment_ins` VALUES (25, 342, 'workflow-h2nww', 'argo', 'Terminated', NULL, NULL, NULL, NULL, 'admin', '2023-11-20 10:32:40', 'admin', '2023-11-20 10:32:50', 0); -INSERT INTO `experiment_ins` VALUES (27, 343, 'workflow-9xp9x', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-12-21 14:31:27', 'admin', '2023-12-21 14:35:39', 0); -INSERT INTO `experiment_ins` VALUES (28, 343, 'workflow-kf77h', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-12-21 14:37:21', 'admin', '2023-12-21 14:58:43', 0); -INSERT INTO `experiment_ins` VALUES (29, 343, 'workflow-9gb7r', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-12-21 14:59:34', 'admin', '2023-12-21 15:00:10', 0); -INSERT INTO `experiment_ins` VALUES (30, 343, 'workflow-n8ffg', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-12-21 15:31:56', 'admin', '2023-12-21 15:46:49', 0); -INSERT INTO `experiment_ins` VALUES (31, 343, 'workflow-8tclj', 'argo', 'Failed', NULL, NULL, NULL, NULL, 'admin', '2023-12-21 15:49:08', '苏影城', '2023-12-21 15:56:57', 0); -INSERT INTO `experiment_ins` VALUES (32, 343, 'workflow-ng98b', 'argo', 'Failed', '{\"workflow-ng98b\":{\"id\":\"workflow-ng98b\",\"name\":\"workflow-ng98b\",\"displayName\":\"workflow-ng98b\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-ng98b\",\"phase\":\"Running\",\"startedAt\":\"2023-12-21T07:58:55Z\",\"finishedAt\":null,\"progress\":\"1/2\",\"children\":[\"workflow-ng98b-904177022\"]},\"workflow-ng98b-763759812\":{\"id\":\"workflow-ng98b-763759812\",\"name\":\"workflow-ng98b.train-091bb1e\",\"displayName\":\"train-091bb1e\",\"type\":\"Pod\",\"templateName\":\"train-091bb1e\",\"templateScope\":\"local/workflow-ng98b\",\"phase\":\"Running\",\"boundaryID\":\"workflow-ng98b\",\"startedAt\":\"2023-12-21T08:00:05Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-node-01\"},\"workflow-ng98b-904177022\":{\"id\":\"workflow-ng98b-904177022\",\"name\":\"workflow-ng98b.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-ng98b\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ng98b\",\"startedAt\":\"2023-12-21T07:58:55Z\",\"finishedAt\":\"2023-12-21T07:59:55Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":108,\"memory\":1119},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ng98b/workflow-ng98b-git-clone-010ee3-904177022/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ng98b-763759812\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, NULL, NULL, '苏影城', '2023-12-21 15:58:53', '苏影城', '2023-12-21 16:22:40', 0); -INSERT INTO `experiment_ins` VALUES (33, 343, 'workflow-cf7zb', 'argo', 'Failed', '{\"workflow-cf7zb\":{\"id\":\"workflow-cf7zb\",\"name\":\"workflow-cf7zb\",\"displayName\":\"workflow-cf7zb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-cf7zb\",\"phase\":\"Running\",\"startedAt\":\"2023-12-21T08:26:43Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-cf7zb-965299672\"]},\"workflow-cf7zb-965299672\":{\"id\":\"workflow-cf7zb-965299672\",\"name\":\"workflow-cf7zb.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-cf7zb\",\"phase\":\"Running\",\"boundaryID\":\"workflow-cf7zb\",\"startedAt\":\"2023-12-21T08:26:43Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"}}', NULL, NULL, NULL, '苏影城', '2023-12-21 16:26:41', '苏影城', '2023-12-21 16:26:52', 0); -INSERT INTO `experiment_ins` VALUES (34, 343, 'workflow-99gxn', 'argo', 'Failed', '{\"workflow-99gxn\":{\"id\":\"workflow-99gxn\",\"name\":\"workflow-99gxn\",\"displayName\":\"workflow-99gxn\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-99gxn\",\"phase\":\"Running\",\"startedAt\":\"2023-12-22T01:06:42Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-99gxn-1702733061\"]},\"workflow-99gxn-1702733061\":{\"id\":\"workflow-99gxn-1702733061\",\"name\":\"workflow-99gxn.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-99gxn\",\"phase\":\"Running\",\"boundaryID\":\"workflow-99gxn\",\"startedAt\":\"2023-12-22T01:06:42Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"}}', NULL, NULL, NULL, 'admin', '2023-12-22 09:06:42', 'admin', '2023-12-22 09:16:38', 0); -INSERT INTO `experiment_ins` VALUES (35, 343, 'workflow-vkjff', 'argo', 'Failed', '{\"workflow-vkjff\":{\"id\":\"workflow-vkjff\",\"name\":\"workflow-vkjff\",\"displayName\":\"workflow-vkjff\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Running\",\"startedAt\":\"2023-12-25T06:25:52Z\",\"finishedAt\":null,\"progress\":\"1/2\",\"children\":[\"workflow-vkjff-4159113811\"]},\"workflow-vkjff-1017537614\":{\"id\":\"workflow-vkjff-1017537614\",\"name\":\"workflow-vkjff.train-091bb1e(0)\",\"displayName\":\"train-091bb1e(0)\",\"type\":\"Pod\",\"templateName\":\"train-091bb1e\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:27:05Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-vkjff-2814105347\":{\"id\":\"workflow-vkjff-2814105347\",\"name\":\"workflow-vkjff.train-091bb1e\",\"displayName\":\"train-091bb1e\",\"type\":\"Retry\",\"templateName\":\"train-091bb1e\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:27:05Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-vkjff-1017537614\"]},\"workflow-vkjff-4159113811\":{\"id\":\"workflow-vkjff-4159113811\",\"name\":\"workflow-vkjff.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Retry\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:25:52Z\",\"finishedAt\":\"2023-12-25T06:27:05Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":116,\"memory\":1183},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vkjff/workflow-vkjff-git-clone-010ee3-677292510/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vkjff-677292510\"]},\"workflow-vkjff-677292510\":{\"id\":\"workflow-vkjff-677292510\",\"name\":\"workflow-vkjff.git-clone-010ee3(0)\",\"displayName\":\"git-clone-010ee3(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:25:52Z\",\"finishedAt\":\"2023-12-25T06:26:55Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":116,\"memory\":1183},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vkjff/workflow-vkjff-git-clone-010ee3-677292510/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vkjff-2814105347\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, NULL, NULL, '苏影城', '2023-12-25 14:25:52', '苏影城', '2023-12-25 14:31:39', 0); -INSERT INTO `experiment_ins` VALUES (36, 345, 'workflow-nvdkn', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (37, 345, 'workflow-7jw9c', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (38, 345, 'workflow-854lx', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (39, 345, 'workflow-h8ppx', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (40, 345, 'workflow-kt579', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (41, 345, 'workflow-rlqbb', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (42, 345, 'workflow-fxq5v', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (43, 345, 'workflow-7sl42', 'argo', 'Succeeded', '{\"workflow-7sl42\":{\"id\":\"workflow-7sl42\",\"name\":\"workflow-7sl42\",\"displayName\":\"workflow-7sl42\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-17T07:48:33Z\",\"finishedAt\":\"2024-01-17T07:51:57Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":348,\"memory\":3670},\"children\":[\"workflow-7sl42-3833375571\"],\"outboundNodes\":[\"workflow-7sl42-1254924323\",\"workflow-7sl42-3816696960\"]},\"workflow-7sl42-1254924323\":{\"id\":\"workflow-7sl42-1254924323\",\"name\":\"workflow-7sl42.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:51:26Z\",\"finishedAt\":\"2024-01-17T07:51:47Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-model-train-4d6cc04-1254924323/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-7sl42-1256981056\":{\"id\":\"workflow-7sl42-1256981056\",\"name\":\"workflow-7sl42.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:51:26Z\",\"finishedAt\":\"2024-01-17T07:51:57Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-model-train-4d6cc04-1254924323/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7sl42-1254924323\"]},\"workflow-7sl42-3183989982\":{\"id\":\"workflow-7sl42-3183989982\",\"name\":\"workflow-7sl42.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:48:33Z\",\"finishedAt\":\"2024-01-17T07:50:51Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":266,\"memory\":2788},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-git-clone-35e4b7b7-3183989982/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7sl42-989961273\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-7sl42-3816696960\":{\"id\":\"workflow-7sl42-3816696960\",\"name\":\"workflow-7sl42.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:51:26Z\",\"finishedAt\":\"2024-01-17T07:51:47Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-model-train-f5e8375-3816696960/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-7sl42-3833375571\":{\"id\":\"workflow-7sl42-3833375571\",\"name\":\"workflow-7sl42.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:48:33Z\",\"finishedAt\":\"2024-01-17T07:51:01Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":348,\"memory\":3670},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-git-clone-35e4b7b7-3183989982/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7sl42-3183989982\"]},\"workflow-7sl42-4132811744\":{\"id\":\"workflow-7sl42-4132811744\",\"name\":\"workflow-7sl42.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:51:01Z\",\"finishedAt\":\"2024-01-17T07:51:16Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":374},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-model-train-0798f5f-4132811744/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7sl42-1256981056\",\"workflow-7sl42-671981273\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-7sl42-671981273\":{\"id\":\"workflow-7sl42-671981273\",\"name\":\"workflow-7sl42.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:51:26Z\",\"finishedAt\":\"2024-01-17T07:51:57Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-model-train-f5e8375-3816696960/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7sl42-3816696960\"]},\"workflow-7sl42-989961273\":{\"id\":\"workflow-7sl42-989961273\",\"name\":\"workflow-7sl42.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-7sl42\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7sl42\",\"startedAt\":\"2024-01-17T07:51:01Z\",\"finishedAt\":\"2024-01-17T07:51:26Z\",\"progress\":\"3/3\",\"resourcesDuration\":{\"cpu\":82,\"memory\":882},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7sl42/workflow-7sl42-model-train-0798f5f-4132811744/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7sl42-4132811744\"]}}', NULL, '2024-01-17 07:48:33', '2024-01-17 07:51:57', NULL, NULL, 'admin', '2024-01-17 20:49:42', 0); -INSERT INTO `experiment_ins` VALUES (44, 345, 'workflow-x2c9w', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (45, 348, 'workflow-tdq9x', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (46, 348, 'workflow-cstcz', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (47, 348, 'workflow-9j5qp', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (48, 348, 'workflow-w5wt7', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -INSERT INTO `experiment_ins` VALUES (49, 348, 'workflow-th6jg', 'argo', 'Succeeded', '{\"workflow-th6jg\":{\"id\":\"workflow-th6jg\",\"name\":\"workflow-th6jg\",\"displayName\":\"workflow-th6jg\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-th6jg\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T01:03:38Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-th6jg-40415408\"]},\"workflow-th6jg-1512880851\":{\"id\":\"workflow-th6jg-1512880851\",\"name\":\"workflow-th6jg.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-th6jg\",\"phase\":\"Pending\",\"boundaryID\":\"workflow-th6jg\",\"startedAt\":\"2024-01-18T01:03:38Z\",\"finishedAt\":null,\"progress\":\"0/1\"},\"workflow-th6jg-40415408\":{\"id\":\"workflow-th6jg-40415408\",\"name\":\"workflow-th6jg.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-th6jg\",\"phase\":\"Running\",\"boundaryID\":\"workflow-th6jg\",\"startedAt\":\"2024-01-18T01:03:38Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-th6jg-1512880851\"]}}', NULL, '2024-01-18 01:03:38', '2024-01-18 01:06:08', 'admin', '2024-01-18 09:03:40', 'admin', '2024-01-18 10:07:46', 0); -INSERT INTO `experiment_ins` VALUES (50, 348, 'workflow-dl4nb', 'argo', 'Succeeded', '{\"workflow-dl4nb\":{\"id\":\"workflow-dl4nb\",\"name\":\"workflow-dl4nb\",\"displayName\":\"workflow-dl4nb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-dl4nb\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T01:25:27Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-dl4nb-347060911\"]},\"workflow-dl4nb-347060911\":{\"id\":\"workflow-dl4nb-347060911\",\"name\":\"workflow-dl4nb.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-dl4nb\",\"phase\":\"Running\",\"boundaryID\":\"workflow-dl4nb\",\"startedAt\":\"2024-01-18T01:25:27Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-dl4nb-766033330\"]},\"workflow-dl4nb-766033330\":{\"id\":\"workflow-dl4nb-766033330\",\"name\":\"workflow-dl4nb.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-dl4nb\",\"phase\":\"Pending\",\"boundaryID\":\"workflow-dl4nb\",\"startedAt\":\"2024-01-18T01:25:27Z\",\"finishedAt\":null,\"progress\":\"0/1\"}}', NULL, '2024-01-18 01:25:27', '2024-01-18 01:29:48', 'admin', '2024-01-18 09:25:29', 'admin', '2024-01-18 10:43:23', 0); -INSERT INTO `experiment_ins` VALUES (51, 348, 'workflow-86m9s', 'argo', 'Succeeded', '{\"workflow-86m9s\":{\"id\":\"workflow-86m9s\",\"name\":\"workflow-86m9s\",\"displayName\":\"workflow-86m9s\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-86m9s\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T01:25:29Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-86m9s-1852250796\"]},\"workflow-86m9s-1137565735\":{\"id\":\"workflow-86m9s-1137565735\",\"name\":\"workflow-86m9s.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-86m9s\",\"phase\":\"Running\",\"boundaryID\":\"workflow-86m9s\",\"startedAt\":\"2024-01-18T01:25:29Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-node-01\"},\"workflow-86m9s-1852250796\":{\"id\":\"workflow-86m9s-1852250796\",\"name\":\"workflow-86m9s.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-86m9s\",\"phase\":\"Running\",\"boundaryID\":\"workflow-86m9s\",\"startedAt\":\"2024-01-18T01:25:29Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-86m9s-1137565735\"]}}', NULL, '2024-01-18 01:25:29', '2024-01-18 01:29:31', 'admin', '2024-01-18 09:25:32', 'admin', '2024-01-18 10:43:23', 0); -INSERT INTO `experiment_ins` VALUES (52, 348, 'workflow-k46vb', 'argo', 'Succeeded', '{\"workflow-k46vb\":{\"id\":\"workflow-k46vb\",\"name\":\"workflow-k46vb\",\"displayName\":\"workflow-k46vb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-k46vb\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T01:42:49Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-k46vb-2911168278\"]},\"workflow-k46vb-2911168278\":{\"id\":\"workflow-k46vb-2911168278\",\"name\":\"workflow-k46vb.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-k46vb\",\"phase\":\"Running\",\"boundaryID\":\"workflow-k46vb\",\"startedAt\":\"2024-01-18T01:42:49Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-k46vb-41674517\"]},\"workflow-k46vb-41674517\":{\"id\":\"workflow-k46vb-41674517\",\"name\":\"workflow-k46vb.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-k46vb\",\"phase\":\"Running\",\"boundaryID\":\"workflow-k46vb\",\"startedAt\":\"2024-01-18T01:42:49Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-18 01:42:49', '2024-01-18 01:45:02', 'admin', '2024-01-18 09:42:52', 'admin', '2024-01-18 10:43:24', 0); -INSERT INTO `experiment_ins` VALUES (53, 348, 'workflow-np2mw', 'argo', 'Succeeded', '{\"workflow-np2mw\":{\"id\":\"workflow-np2mw\",\"name\":\"workflow-np2mw\",\"displayName\":\"workflow-np2mw\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-np2mw\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T01:54:33Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-np2mw-3676965211\"]},\"workflow-np2mw-3676965211\":{\"id\":\"workflow-np2mw-3676965211\",\"name\":\"workflow-np2mw.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-np2mw\",\"phase\":\"Running\",\"boundaryID\":\"workflow-np2mw\",\"startedAt\":\"2024-01-18T01:54:33Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-np2mw-3904168150\"]},\"workflow-np2mw-3904168150\":{\"id\":\"workflow-np2mw-3904168150\",\"name\":\"workflow-np2mw.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-np2mw\",\"phase\":\"Pending\",\"boundaryID\":\"workflow-np2mw\",\"startedAt\":\"2024-01-18T01:54:33Z\",\"finishedAt\":null,\"progress\":\"0/1\"}}', NULL, '2024-01-18 01:54:33', '2024-01-18 01:57:51', 'admin', '2024-01-18 09:54:35', 'admin', '2024-01-18 10:43:24', 0); -INSERT INTO `experiment_ins` VALUES (54, 348, 'workflow-82ml8', 'argo', NULL, NULL, NULL, NULL, NULL, 'admin', '2024-01-18 10:12:53', 'admin', '2024-01-18 10:12:53', 0); -INSERT INTO `experiment_ins` VALUES (55, 348, 'workflow-r2rjz', 'argo', NULL, NULL, NULL, NULL, NULL, 'admin', '2024-01-18 11:50:05', 'admin', '2024-01-18 11:50:05', 0); -INSERT INTO `experiment_ins` VALUES (56, 348, 'workflow-v5snb', 'argo', 'Succeeded', '{\"workflow-v5snb\":{\"id\":\"workflow-v5snb\",\"name\":\"workflow-v5snb\",\"displayName\":\"workflow-v5snb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-18T03:51:17Z\",\"finishedAt\":\"2024-01-18T03:55:33Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":417,\"memory\":4427},\"children\":[\"workflow-v5snb-1345256797\"],\"outboundNodes\":[\"workflow-v5snb-2593780041\",\"workflow-v5snb-3408111070\"]},\"workflow-v5snb-1345256797\":{\"id\":\"workflow-v5snb-1345256797\",\"name\":\"workflow-v5snb.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:51:17Z\",\"finishedAt\":\"2024-01-18T03:54:18Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":417,\"memory\":4427},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-git-clone-35e4b7b7-485723628/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-v5snb-485723628\"]},\"workflow-v5snb-152862291\":{\"id\":\"workflow-v5snb-152862291\",\"name\":\"workflow-v5snb.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:54:52Z\",\"finishedAt\":\"2024-01-18T03:55:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-model-train-f5e8375-3408111070/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-v5snb-3408111070\"]},\"workflow-v5snb-1731255762\":{\"id\":\"workflow-v5snb-1731255762\",\"name\":\"workflow-v5snb.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:54:52Z\",\"finishedAt\":\"2024-01-18T03:55:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-model-train-4d6cc04-2593780041/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-v5snb-2593780041\"]},\"workflow-v5snb-2498520971\":{\"id\":\"workflow-v5snb-2498520971\",\"name\":\"workflow-v5snb.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:54:18Z\",\"finishedAt\":\"2024-01-18T03:54:52Z\",\"progress\":\"3/3\",\"resourcesDuration\":{\"cpu\":84,\"memory\":922},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-model-train-0798f5f-4216529030/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-v5snb-4216529030\"]},\"workflow-v5snb-2593780041\":{\"id\":\"workflow-v5snb-2593780041\",\"name\":\"workflow-v5snb.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:54:52Z\",\"finishedAt\":\"2024-01-18T03:55:22Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-model-train-4d6cc04-2593780041/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-v5snb-3408111070\":{\"id\":\"workflow-v5snb-3408111070\",\"name\":\"workflow-v5snb.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:54:52Z\",\"finishedAt\":\"2024-01-18T03:55:22Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-model-train-f5e8375-3408111070/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-v5snb-4216529030\":{\"id\":\"workflow-v5snb-4216529030\",\"name\":\"workflow-v5snb.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:54:18Z\",\"finishedAt\":\"2024-01-18T03:54:42Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-model-train-0798f5f-4216529030/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-v5snb-1731255762\",\"workflow-v5snb-152862291\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-v5snb-485723628\":{\"id\":\"workflow-v5snb-485723628\",\"name\":\"workflow-v5snb.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-v5snb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-v5snb\",\"startedAt\":\"2024-01-18T03:51:17Z\",\"finishedAt\":\"2024-01-18T03:54:08Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":333,\"memory\":3505},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-v5snb/workflow-v5snb-git-clone-35e4b7b7-485723628/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-v5snb-2498520971\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-18 03:51:17', '2024-01-18 03:55:33', 'admin', '2024-01-18 11:51:20', 'admin', '2024-01-18 14:01:25', 0); -INSERT INTO `experiment_ins` VALUES (57, 348, 'workflow-wvdvc', 'argo', 'Succeeded', '{\"workflow-wvdvc\":{\"id\":\"workflow-wvdvc\",\"name\":\"workflow-wvdvc\",\"displayName\":\"workflow-wvdvc\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-18T05:38:58Z\",\"finishedAt\":\"2024-01-18T05:43:42Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":496,\"memory\":5272},\"children\":[\"workflow-wvdvc-1577038799\"],\"outboundNodes\":[\"workflow-wvdvc-3079793935\",\"workflow-wvdvc-3820305284\"]},\"workflow-wvdvc-1192283300\":{\"id\":\"workflow-wvdvc-1192283300\",\"name\":\"workflow-wvdvc.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:43:08Z\",\"finishedAt\":\"2024-01-18T05:43:42Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-model-train-4d6cc04-3079793935/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-wvdvc-3079793935\"]},\"workflow-wvdvc-1577038799\":{\"id\":\"workflow-wvdvc-1577038799\",\"name\":\"workflow-wvdvc.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:38:58Z\",\"finishedAt\":\"2024-01-18T05:42:39Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":496,\"memory\":5272},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-git-clone-35e4b7b7-2669066066/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-wvdvc-2669066066\"]},\"workflow-wvdvc-2025923877\":{\"id\":\"workflow-wvdvc-2025923877\",\"name\":\"workflow-wvdvc.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:43:08Z\",\"finishedAt\":\"2024-01-18T05:43:42Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":20,\"memory\":250},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-model-train-f5e8375-3820305284/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-wvdvc-3820305284\"]},\"workflow-wvdvc-2669066066\":{\"id\":\"workflow-wvdvc-2669066066\",\"name\":\"workflow-wvdvc.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:38:58Z\",\"finishedAt\":\"2024-01-18T05:42:29Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":414,\"memory\":4350},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-git-clone-35e4b7b7-2669066066/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-wvdvc-2930579149\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-wvdvc-2930579149\":{\"id\":\"workflow-wvdvc-2930579149\",\"name\":\"workflow-wvdvc.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:42:39Z\",\"finishedAt\":\"2024-01-18T05:43:08Z\",\"progress\":\"3/3\",\"resourcesDuration\":{\"cpu\":82,\"memory\":922},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-model-train-0798f5f-838796444/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-wvdvc-838796444\"]},\"workflow-wvdvc-3079793935\":{\"id\":\"workflow-wvdvc-3079793935\",\"name\":\"workflow-wvdvc.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:43:08Z\",\"finishedAt\":\"2024-01-18T05:43:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-model-train-4d6cc04-3079793935/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-wvdvc-3820305284\":{\"id\":\"workflow-wvdvc-3820305284\",\"name\":\"workflow-wvdvc.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:43:08Z\",\"finishedAt\":\"2024-01-18T05:43:26Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":20,\"memory\":250},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-model-train-f5e8375-3820305284/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-wvdvc-838796444\":{\"id\":\"workflow-wvdvc-838796444\",\"name\":\"workflow-wvdvc.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-wvdvc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-wvdvc\",\"startedAt\":\"2024-01-18T05:42:39Z\",\"finishedAt\":\"2024-01-18T05:42:59Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":418},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-wvdvc/workflow-wvdvc-model-train-0798f5f-838796444/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-wvdvc-1192283300\",\"workflow-wvdvc-2025923877\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-18 05:38:58', '2024-01-18 05:43:42', 'admin', '2024-01-18 13:39:01', 'admin', '2024-01-18 14:01:25', 0); -INSERT INTO `experiment_ins` VALUES (58, 348, 'workflow-hr47p', 'argo', 'Succeeded', '{\"workflow-hr47p\":{\"id\":\"workflow-hr47p\",\"name\":\"workflow-hr47p\",\"displayName\":\"workflow-hr47p\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-18T05:55:07Z\",\"finishedAt\":\"2024-01-18T05:59:40Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":453,\"memory\":4827},\"children\":[\"workflow-hr47p-2671992060\"],\"outboundNodes\":[\"workflow-hr47p-204891324\",\"workflow-hr47p-3932074503\"]},\"workflow-hr47p-1235572279\":{\"id\":\"workflow-hr47p-1235572279\",\"name\":\"workflow-hr47p.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:55:07Z\",\"finishedAt\":\"2024-01-18T05:58:13Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":361,\"memory\":3780},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-git-clone-35e4b7b7-1235572279/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-hr47p-3836304452\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-hr47p-204891324\":{\"id\":\"workflow-hr47p-204891324\",\"name\":\"workflow-hr47p.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:59:03Z\",\"finishedAt\":\"2024-01-18T05:59:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":21,\"memory\":250},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-model-train-4d6cc04-204891324/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-hr47p-2671992060\":{\"id\":\"workflow-hr47p-2671992060\",\"name\":\"workflow-hr47p.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:55:07Z\",\"finishedAt\":\"2024-01-18T05:58:23Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":453,\"memory\":4827},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-git-clone-35e4b7b7-1235572279/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-hr47p-1235572279\"]},\"workflow-hr47p-3387962508\":{\"id\":\"workflow-hr47p-3387962508\",\"name\":\"workflow-hr47p.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:59:04Z\",\"finishedAt\":\"2024-01-18T05:59:40Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-model-train-f5e8375-3932074503/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-hr47p-3932074503\"]},\"workflow-hr47p-3552359087\":{\"id\":\"workflow-hr47p-3552359087\",\"name\":\"workflow-hr47p.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:58:23Z\",\"finishedAt\":\"2024-01-18T05:58:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":44,\"memory\":543},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-model-train-0798f5f-3552359087/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-hr47p-799757037\",\"workflow-hr47p-3387962508\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-hr47p-3836304452\":{\"id\":\"workflow-hr47p-3836304452\",\"name\":\"workflow-hr47p.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:58:23Z\",\"finishedAt\":\"2024-01-18T05:59:03Z\",\"progress\":\"3/3\",\"resourcesDuration\":{\"cpu\":92,\"memory\":1047},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-model-train-0798f5f-3552359087/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-hr47p-3552359087\"]},\"workflow-hr47p-3932074503\":{\"id\":\"workflow-hr47p-3932074503\",\"name\":\"workflow-hr47p.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:59:04Z\",\"finishedAt\":\"2024-01-18T05:59:38Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-model-train-f5e8375-3932074503/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-hr47p-799757037\":{\"id\":\"workflow-hr47p-799757037\",\"name\":\"workflow-hr47p.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-hr47p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-hr47p\",\"startedAt\":\"2024-01-18T05:59:03Z\",\"finishedAt\":\"2024-01-18T05:59:40Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":21,\"memory\":250},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-hr47p/workflow-hr47p-model-train-4d6cc04-204891324/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-hr47p-204891324\"]}}', NULL, '2024-01-18 05:55:07', '2024-01-18 05:59:40', 'admin', '2024-01-18 13:55:11', 'admin', '2024-01-18 14:01:25', 0); -INSERT INTO `experiment_ins` VALUES (59, 348, 'workflow-z87vf', 'argo', 'Succeeded', '{\"workflow-z87vf\":{\"id\":\"workflow-z87vf\",\"name\":\"workflow-z87vf\",\"displayName\":\"workflow-z87vf\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-18T05:55:09Z\",\"finishedAt\":\"2024-01-18T05:59:03Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":389,\"memory\":4152},\"children\":[\"workflow-z87vf-3385298726\"],\"outboundNodes\":[\"workflow-z87vf-4127824130\",\"workflow-z87vf-3200044421\"]},\"workflow-z87vf-1365651071\":{\"id\":\"workflow-z87vf-1365651071\",\"name\":\"workflow-z87vf.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:58:22Z\",\"finishedAt\":\"2024-01-18T05:59:03Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":36,\"memory\":379},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-model-train-4d6cc04-4127824130/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-z87vf-4127824130\"]},\"workflow-z87vf-1879780870\":{\"id\":\"workflow-z87vf-1879780870\",\"name\":\"workflow-z87vf.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:58:22Z\",\"finishedAt\":\"2024-01-18T05:59:03Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":378},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-model-train-f5e8375-3200044421/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-z87vf-3200044421\"]},\"workflow-z87vf-3200044421\":{\"id\":\"workflow-z87vf-3200044421\",\"name\":\"workflow-z87vf.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:58:22Z\",\"finishedAt\":\"2024-01-18T05:58:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":378},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-model-train-f5e8375-3200044421/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-z87vf-3385298726\":{\"id\":\"workflow-z87vf-3385298726\",\"name\":\"workflow-z87vf.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:55:09Z\",\"finishedAt\":\"2024-01-18T05:57:47Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":389,\"memory\":4152},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-git-clone-35e4b7b7-3397963301/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-z87vf-3397963301\"]},\"workflow-z87vf-3397963301\":{\"id\":\"workflow-z87vf-3397963301\",\"name\":\"workflow-z87vf.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:55:09Z\",\"finishedAt\":\"2024-01-18T05:57:37Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":284,\"memory\":2978},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-git-clone-35e4b7b7-3397963301/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-z87vf-3540484030\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-z87vf-3473202413\":{\"id\":\"workflow-z87vf-3473202413\",\"name\":\"workflow-z87vf.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:57:47Z\",\"finishedAt\":\"2024-01-18T05:58:10Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-model-train-0798f5f-3473202413/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-z87vf-1365651071\",\"workflow-z87vf-1879780870\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-z87vf-3540484030\":{\"id\":\"workflow-z87vf-3540484030\",\"name\":\"workflow-z87vf.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:57:47Z\",\"finishedAt\":\"2024-01-18T05:58:22Z\",\"progress\":\"3/3\",\"resourcesDuration\":{\"cpu\":105,\"memory\":1174},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-model-train-0798f5f-3473202413/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-z87vf-3473202413\"]},\"workflow-z87vf-4127824130\":{\"id\":\"workflow-z87vf-4127824130\",\"name\":\"workflow-z87vf.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-z87vf\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-z87vf\",\"startedAt\":\"2024-01-18T05:58:22Z\",\"finishedAt\":\"2024-01-18T05:58:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":36,\"memory\":379},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-z87vf/workflow-z87vf-model-train-4d6cc04-4127824130/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-18 05:55:09', '2024-01-18 05:59:03', 'admin', '2024-01-18 13:55:12', 'admin', '2024-01-18 14:01:25', 0); -INSERT INTO `experiment_ins` VALUES (60, 348, 'workflow-cz44g', 'argo', 'Succeeded', '{\"workflow-cz44g\":{\"id\":\"workflow-cz44g\",\"name\":\"workflow-cz44g\",\"displayName\":\"workflow-cz44g\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-18T05:55:17Z\",\"finishedAt\":\"2024-01-18T05:59:19Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":430,\"memory\":4814},\"children\":[\"workflow-cz44g-2242550157\"],\"outboundNodes\":[\"workflow-cz44g-862999513\",\"workflow-cz44g-636368654\"]},\"workflow-cz44g-1764791004\":{\"id\":\"workflow-cz44g-1764791004\",\"name\":\"workflow-cz44g.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:55:17Z\",\"finishedAt\":\"2024-01-18T05:58:03Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":322,\"memory\":3400},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-git-clone-35e4b7b7-1764791004/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cz44g-4275555771\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-cz44g-2242550157\":{\"id\":\"workflow-cz44g-2242550157\",\"name\":\"workflow-cz44g.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:55:17Z\",\"finishedAt\":\"2024-01-18T05:58:13Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":430,\"memory\":4814},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-git-clone-35e4b7b7-1764791004/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cz44g-1764791004\"]},\"workflow-cz44g-2430697654\":{\"id\":\"workflow-cz44g-2430697654\",\"name\":\"workflow-cz44g.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:58:13Z\",\"finishedAt\":\"2024-01-18T05:58:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-model-train-0798f5f-2430697654/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cz44g-581539298\",\"workflow-cz44g-447534915\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-cz44g-4275555771\":{\"id\":\"workflow-cz44g-4275555771\",\"name\":\"workflow-cz44g.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:58:13Z\",\"finishedAt\":\"2024-01-18T05:58:40Z\",\"progress\":\"3/3\",\"resourcesDuration\":{\"cpu\":108,\"memory\":1414},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-model-train-0798f5f-2430697654/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cz44g-2430697654\"]},\"workflow-cz44g-447534915\":{\"id\":\"workflow-cz44g-447534915\",\"name\":\"workflow-cz44g.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:58:46Z\",\"finishedAt\":\"2024-01-18T05:59:19Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":38,\"memory\":499},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-model-train-f5e8375-636368654/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cz44g-636368654\"]},\"workflow-cz44g-581539298\":{\"id\":\"workflow-cz44g-581539298\",\"name\":\"workflow-cz44g.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:58:40Z\",\"finishedAt\":\"2024-01-18T05:59:19Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":38,\"memory\":499},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-model-train-4d6cc04-862999513/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cz44g-862999513\"]},\"workflow-cz44g-636368654\":{\"id\":\"workflow-cz44g-636368654\",\"name\":\"workflow-cz44g.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:58:46Z\",\"finishedAt\":\"2024-01-18T05:59:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":38,\"memory\":499},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-model-train-f5e8375-636368654/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"workflow-cz44g-862999513\":{\"id\":\"workflow-cz44g-862999513\",\"name\":\"workflow-cz44g.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-cz44g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cz44g\",\"startedAt\":\"2024-01-18T05:58:40Z\",\"finishedAt\":\"2024-01-18T05:59:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":38,\"memory\":499},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cz44g/workflow-cz44g-model-train-4d6cc04-862999513/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-18 05:55:17', '2024-01-18 05:59:19', 'admin', '2024-01-18 13:55:20', 'admin', '2024-01-18 14:01:24', 0); -INSERT INTO `experiment_ins` VALUES (61, 348, 'workflow-ppxds', 'argo', 'Succeeded', '{\"workflow-ppxds\":{\"id\":\"workflow-ppxds\",\"name\":\"workflow-ppxds\",\"displayName\":\"workflow-ppxds\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T06:02:32Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-ppxds-742590120\"]},\"workflow-ppxds-1886518888\":{\"id\":\"workflow-ppxds-1886518888\",\"name\":\"workflow-ppxds.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Running\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:04:23Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-ppxds-3710087419\"]},\"workflow-ppxds-3354536904\":{\"id\":\"workflow-ppxds-3354536904\",\"name\":\"workflow-ppxds.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:03:56Z\",\"finishedAt\":\"2024-01-18T06:04:23Z\",\"progress\":\"1/3\",\"resourcesDuration\":{\"cpu\":31,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ppxds/workflow-ppxds-model-train-0798f5f-481865691/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ppxds-481865691\"]},\"workflow-ppxds-3710087419\":{\"id\":\"workflow-ppxds-3710087419\",\"name\":\"workflow-ppxds.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Running\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:04:23Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-ppxds-4121271227\":{\"id\":\"workflow-ppxds-4121271227\",\"name\":\"workflow-ppxds.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:02:32Z\",\"finishedAt\":\"2024-01-18T06:03:46Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":139,\"memory\":1457},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ppxds/workflow-ppxds-git-clone-35e4b7b7-4121271227/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ppxds-3354536904\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-ppxds-481865691\":{\"id\":\"workflow-ppxds-481865691\",\"name\":\"workflow-ppxds.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:03:56Z\",\"finishedAt\":\"2024-01-18T06:04:14Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ppxds/workflow-ppxds-model-train-0798f5f-481865691/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ppxds-50818065\",\"workflow-ppxds-1886518888\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-ppxds-50818065\":{\"id\":\"workflow-ppxds-50818065\",\"name\":\"workflow-ppxds.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Running\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:04:23Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-ppxds-597154152\"]},\"workflow-ppxds-597154152\":{\"id\":\"workflow-ppxds-597154152\",\"name\":\"workflow-ppxds.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Running\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:04:23Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-ppxds-742590120\":{\"id\":\"workflow-ppxds-742590120\",\"name\":\"workflow-ppxds.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-ppxds\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ppxds\",\"startedAt\":\"2024-01-18T06:02:32Z\",\"finishedAt\":\"2024-01-18T06:03:56Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":170,\"memory\":1833},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ppxds/workflow-ppxds-git-clone-35e4b7b7-4121271227/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ppxds-4121271227\"]}}', NULL, '2024-01-18 06:02:32', '2024-01-18 06:04:53', 'admin', '2024-01-18 14:02:36', 'admin', '2024-01-18 14:04:56', 0); -INSERT INTO `experiment_ins` VALUES (62, 348, 'workflow-zm746', 'argo', 'Succeeded', '{\"workflow-zm746\":{\"id\":\"workflow-zm746\",\"name\":\"workflow-zm746\",\"displayName\":\"workflow-zm746\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T06:09:55Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-zm746-2225630043\"]},\"workflow-zm746-1164610472\":{\"id\":\"workflow-zm746-1164610472\",\"name\":\"workflow-zm746.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Running\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:13:30Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-zm746-1949864635\"]},\"workflow-zm746-1949864635\":{\"id\":\"workflow-zm746-1949864635\",\"name\":\"workflow-zm746.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Running\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:13:30Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zm746/workflow-zm746-model-train-4d6cc04-1949864635/main.log\"}}]},\"hostNodeName\":\"k8s-master-01\"},\"workflow-zm746-2113386056\":{\"id\":\"workflow-zm746-2113386056\",\"name\":\"workflow-zm746.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Running\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:13:31Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zm746/workflow-zm746-model-train-f5e8375-2113386056/main.log\"}}]},\"hostNodeName\":\"k8s-master-01\"},\"workflow-zm746-2225630043\":{\"id\":\"workflow-zm746-2225630043\",\"name\":\"workflow-zm746.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:09:55Z\",\"finishedAt\":\"2024-01-18T06:13:00Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":376,\"memory\":4028},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zm746/workflow-zm746-git-clone-35e4b7b7-4215379670/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-zm746-4215379670\"]},\"workflow-zm746-2506629249\":{\"id\":\"workflow-zm746-2506629249\",\"name\":\"workflow-zm746.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:13:00Z\",\"finishedAt\":\"2024-01-18T06:13:30Z\",\"progress\":\"1/3\",\"resourcesDuration\":{\"cpu\":34,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zm746/workflow-zm746-model-train-0798f5f-3785656536/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-zm746-3785656536\"]},\"workflow-zm746-3758384753\":{\"id\":\"workflow-zm746-3758384753\",\"name\":\"workflow-zm746.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Running\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:13:31Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-zm746-2113386056\"]},\"workflow-zm746-3785656536\":{\"id\":\"workflow-zm746-3785656536\",\"name\":\"workflow-zm746.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:13:00Z\",\"finishedAt\":\"2024-01-18T06:13:20Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zm746/workflow-zm746-model-train-0798f5f-3785656536/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-zm746-1164610472\",\"workflow-zm746-3758384753\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-zm746-4215379670\":{\"id\":\"workflow-zm746-4215379670\",\"name\":\"workflow-zm746.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-zm746\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-zm746\",\"startedAt\":\"2024-01-18T06:09:55Z\",\"finishedAt\":\"2024-01-18T06:12:50Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":342,\"memory\":3611},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zm746/workflow-zm746-git-clone-35e4b7b7-4215379670/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-zm746-2506629249\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-18 14:09:55', '2024-01-18 14:14:03', 'admin', '2024-01-18 14:09:59', 'admin', '2024-01-18 14:14:07', 0); -INSERT INTO `experiment_ins` VALUES (63, 348, 'workflow-mvzdp', 'argo', 'Succeeded', '{\"workflow-mvzdp\":{\"id\":\"workflow-mvzdp\",\"name\":\"workflow-mvzdp\",\"displayName\":\"workflow-mvzdp\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T06:10:14Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-mvzdp-306736606\"]},\"workflow-mvzdp-1154199709\":{\"id\":\"workflow-mvzdp-1154199709\",\"name\":\"workflow-mvzdp.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Running\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:14:16Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-mvzdp-1735490122\":{\"id\":\"workflow-mvzdp-1735490122\",\"name\":\"workflow-mvzdp.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Running\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:14:16Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-mvzdp-1754663053\":{\"id\":\"workflow-mvzdp-1754663053\",\"name\":\"workflow-mvzdp.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:10:14Z\",\"finishedAt\":\"2024-01-18T06:13:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":387,\"memory\":4076},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mvzdp/workflow-mvzdp-git-clone-35e4b7b7-1754663053/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-mvzdp-3354798230\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-mvzdp-2360215150\":{\"id\":\"workflow-mvzdp-2360215150\",\"name\":\"workflow-mvzdp.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Running\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:14:16Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-mvzdp-1154199709\"]},\"workflow-mvzdp-306736606\":{\"id\":\"workflow-mvzdp-306736606\",\"name\":\"workflow-mvzdp.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:10:14Z\",\"finishedAt\":\"2024-01-18T06:13:43Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":416,\"memory\":4451},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mvzdp/workflow-mvzdp-git-clone-35e4b7b7-1754663053/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-mvzdp-1754663053\"]},\"workflow-mvzdp-3354798230\":{\"id\":\"workflow-mvzdp-3354798230\",\"name\":\"workflow-mvzdp.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:13:43Z\",\"finishedAt\":\"2024-01-18T06:14:16Z\",\"progress\":\"1/3\",\"resourcesDuration\":{\"cpu\":29,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mvzdp/workflow-mvzdp-model-train-0798f5f-3413546901/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-mvzdp-3413546901\"]},\"workflow-mvzdp-3413546901\":{\"id\":\"workflow-mvzdp-3413546901\",\"name\":\"workflow-mvzdp.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:13:43Z\",\"finishedAt\":\"2024-01-18T06:14:07Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":29,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mvzdp/workflow-mvzdp-model-train-0798f5f-3413546901/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-mvzdp-883376727\",\"workflow-mvzdp-2360215150\"],\"hostNodeName\":\"k8s-master-01\"},\"workflow-mvzdp-883376727\":{\"id\":\"workflow-mvzdp-883376727\",\"name\":\"workflow-mvzdp.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-mvzdp\",\"phase\":\"Running\",\"boundaryID\":\"workflow-mvzdp\",\"startedAt\":\"2024-01-18T06:14:16Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-mvzdp-1735490122\"]}}', NULL, '2024-01-18 14:10:14', '2024-01-18 14:14:45', 'admin', '2024-01-18 14:10:17', 'admin', '2024-01-18 14:14:48', 0); -INSERT INTO `experiment_ins` VALUES (64, 348, 'workflow-7ssxl', 'argo', 'Succeeded', '{\"workflow-7ssxl\":{\"id\":\"workflow-7ssxl\",\"name\":\"workflow-7ssxl\",\"displayName\":\"workflow-7ssxl\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T06:12:01Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-7ssxl-1811389814\"]},\"workflow-7ssxl-1521645590\":{\"id\":\"workflow-7ssxl-1521645590\",\"name\":\"workflow-7ssxl.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Running\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:15:54Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-7ssxl-3778568725\"]},\"workflow-7ssxl-1811389814\":{\"id\":\"workflow-7ssxl-1811389814\",\"name\":\"workflow-7ssxl.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:12:01Z\",\"finishedAt\":\"2024-01-18T06:15:27Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":416,\"memory\":4450},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7ssxl/workflow-7ssxl-git-clone-35e4b7b7-2744165237/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7ssxl-2744165237\"]},\"workflow-7ssxl-1987735474\":{\"id\":\"workflow-7ssxl-1987735474\",\"name\":\"workflow-7ssxl.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Running\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:15:54Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-7ssxl-2065292942\":{\"id\":\"workflow-7ssxl-2065292942\",\"name\":\"workflow-7ssxl.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:15:27Z\",\"finishedAt\":\"2024-01-18T06:15:54Z\",\"progress\":\"1/3\",\"resourcesDuration\":{\"cpu\":33,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7ssxl/workflow-7ssxl-model-train-0798f5f-3985519549/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7ssxl-3985519549\"]},\"workflow-7ssxl-2744165237\":{\"id\":\"workflow-7ssxl-2744165237\",\"name\":\"workflow-7ssxl.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:12:01Z\",\"finishedAt\":\"2024-01-18T06:15:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":383,\"memory\":4033},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7ssxl/workflow-7ssxl-git-clone-35e4b7b7-2744165237/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7ssxl-2065292942\"],\"hostNodeName\":\"k8s-node-01\"},\"workflow-7ssxl-3655569583\":{\"id\":\"workflow-7ssxl-3655569583\",\"name\":\"workflow-7ssxl.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Running\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:15:54Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-7ssxl-1987735474\"]},\"workflow-7ssxl-3778568725\":{\"id\":\"workflow-7ssxl-3778568725\",\"name\":\"workflow-7ssxl.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Running\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:15:54Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-7ssxl-3985519549\":{\"id\":\"workflow-7ssxl-3985519549\",\"name\":\"workflow-7ssxl.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-7ssxl\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7ssxl\",\"startedAt\":\"2024-01-18T06:15:27Z\",\"finishedAt\":\"2024-01-18T06:15:45Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":33,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7ssxl/workflow-7ssxl-model-train-0798f5f-3985519549/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7ssxl-3655569583\",\"workflow-7ssxl-1521645590\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-18 14:12:01', '2024-01-18 14:16:26', 'admin', '2024-01-18 14:12:04', 'admin', '2024-01-18 14:16:30', 0); -INSERT INTO `experiment_ins` VALUES (65, 348, 'workflow-95hf2', 'argo', 'Succeeded', '{\"ml-workflow\":{\"id\":\"workflow-95hf2\",\"name\":\"workflow-95hf2\",\"displayName\":\"workflow-95hf2\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-95hf2\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T07:35:58Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-95hf2-4126002561\"]},\"model-train-4d6cc04\":{\"id\":\"workflow-95hf2-3368071325\",\"name\":\"workflow-95hf2.model-train-4d6cc04(0)\",\"displayName\":\"model-train-4d6cc04(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-95hf2\",\"phase\":\"Running\",\"boundaryID\":\"workflow-95hf2\",\"startedAt\":\"2024-01-18T07:37:43Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"model-train-f5e8375\":{\"id\":\"workflow-95hf2-641386167\",\"name\":\"workflow-95hf2.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-95hf2\",\"phase\":\"Running\",\"boundaryID\":\"workflow-95hf2\",\"startedAt\":\"2024-01-18T07:37:43Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-95hf2-2288684714\"]},\"git-clone-35e4b7b7\":{\"id\":\"workflow-95hf2-4126002561\",\"name\":\"workflow-95hf2.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-95hf2\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-95hf2\",\"startedAt\":\"2024-01-18T07:35:58Z\",\"finishedAt\":\"2024-01-18T07:37:23Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":170,\"memory\":1852},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-95hf2/workflow-95hf2-git-clone-35e4b7b7-247805912/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-95hf2-247805912\"]},\"model-train-0798f5f\":{\"id\":\"workflow-95hf2-4248573767\",\"name\":\"workflow-95hf2.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-95hf2\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-95hf2\",\"startedAt\":\"2024-01-18T07:37:23Z\",\"finishedAt\":\"2024-01-18T07:37:43Z\",\"progress\":\"1/3\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-95hf2/workflow-95hf2-model-train-0798f5f-3946864506/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-95hf2-3946864506\"]}}', NULL, '2024-01-18 15:35:58', '2024-01-18 15:38:16', 'admin', '2024-01-18 15:36:01', 'admin', '2024-01-18 15:38:38', 0); -INSERT INTO `experiment_ins` VALUES (66, 348, 'workflow-bts8p', 'argo', 'Succeeded', '{\"ml-workflow\":{\"id\":\"workflow-bts8p\",\"name\":\"workflow-bts8p\",\"displayName\":\"workflow-bts8p\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-bts8p\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T07:39:38Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-bts8p-2780312994\"]},\"model-train-f5e8375\":{\"id\":\"workflow-bts8p-2051469826\",\"name\":\"workflow-bts8p.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Retry\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-bts8p\",\"phase\":\"Running\",\"boundaryID\":\"workflow-bts8p\",\"startedAt\":\"2024-01-18T07:41:33Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-bts8p-1694480761\"]},\"model-train-4d6cc04\":{\"id\":\"workflow-bts8p-3928295571\",\"name\":\"workflow-bts8p.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-bts8p\",\"phase\":\"Running\",\"boundaryID\":\"workflow-bts8p\",\"startedAt\":\"2024-01-18T07:41:33Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-bts8p-1724835486\"]},\"model-train-0798f5f\":{\"id\":\"workflow-bts8p-2576777730\",\"name\":\"workflow-bts8p.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-bts8p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bts8p\",\"startedAt\":\"2024-01-18T07:41:04Z\",\"finishedAt\":\"2024-01-18T07:41:33Z\",\"progress\":\"1/3\",\"resourcesDuration\":{\"cpu\":35,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bts8p/workflow-bts8p-model-train-0798f5f-2466179449/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bts8p-2466179449\"]},\"git-clone-35e4b7b7\":{\"id\":\"workflow-bts8p-3639370009\",\"name\":\"workflow-bts8p.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-bts8p\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bts8p\",\"startedAt\":\"2024-01-18T07:39:38Z\",\"finishedAt\":\"2024-01-18T07:40:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bts8p/workflow-bts8p-git-clone-35e4b7b7-3639370009/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bts8p-2576777730\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-18 15:39:38', '2024-01-18 15:42:04', 'admin', '2024-01-18 15:39:41', 'admin', '2024-01-18 15:42:23', 0); -INSERT INTO `experiment_ins` VALUES (67, 348, 'workflow-cjbx8', 'argo', 'Succeeded', '{\"ml-workflow\":{\"id\":\"workflow-cjbx8\",\"name\":\"workflow-cjbx8\",\"displayName\":\"workflow-cjbx8\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-cjbx8\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T07:44:49Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-cjbx8-6888392\"]},\"model-train-4d6cc04\":{\"id\":\"workflow-cjbx8-431706289\",\"name\":\"workflow-cjbx8.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Retry\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-cjbx8\",\"phase\":\"Running\",\"boundaryID\":\"workflow-cjbx8\",\"startedAt\":\"2024-01-18T07:46:39Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-cjbx8-1104746248\"]},\"model-train-f5e8375\":{\"id\":\"workflow-cjbx8-4194891547\",\"name\":\"workflow-cjbx8.model-train-f5e8375(0)\",\"displayName\":\"model-train-f5e8375(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-cjbx8\",\"phase\":\"Running\",\"boundaryID\":\"workflow-cjbx8\",\"startedAt\":\"2024-01-18T07:46:39Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"git-clone-35e4b7b7\":{\"id\":\"workflow-cjbx8-6888392\",\"name\":\"workflow-cjbx8.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Retry\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-cjbx8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cjbx8\",\"startedAt\":\"2024-01-18T07:44:49Z\",\"finishedAt\":\"2024-01-18T07:46:13Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":171,\"memory\":1873},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cjbx8/workflow-cjbx8-git-clone-35e4b7b7-1902182363/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cjbx8-1902182363\"]},\"model-train-0798f5f\":{\"id\":\"workflow-cjbx8-2864657403\",\"name\":\"workflow-cjbx8.model-train-0798f5f(0)\",\"displayName\":\"model-train-0798f5f(0)\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-cjbx8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cjbx8\",\"startedAt\":\"2024-01-18T07:46:13Z\",\"finishedAt\":\"2024-01-18T07:46:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cjbx8/workflow-cjbx8-model-train-0798f5f-2864657403/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cjbx8-431706289\",\"workflow-cjbx8-119486856\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-18 15:44:49', '2024-01-18 15:47:10', 'admin', '2024-01-18 15:44:52', 'admin', '2024-01-18 15:47:23', 0); -INSERT INTO `experiment_ins` VALUES (68, 348, 'workflow-vb7l5', 'argo', 'Succeeded', '{\"ml-workflow\":{\"id\":\"workflow-vb7l5\",\"name\":\"workflow-vb7l5\",\"displayName\":\"workflow-vb7l5\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vb7l5\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T07:56:09Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-vb7l5-3763467133\"]},\"model-train-0798f5f\":{\"id\":\"workflow-vb7l5-1622848683\",\"name\":\"workflow-vb7l5.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-vb7l5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vb7l5\",\"startedAt\":\"2024-01-18T07:57:49Z\",\"finishedAt\":\"2024-01-18T07:58:06Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":374},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vb7l5/workflow-vb7l5-model-train-0798f5f-1622848683/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vb7l5-3255901170\",\"workflow-vb7l5-2120015347\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-f5e8375\":{\"id\":\"workflow-vb7l5-2120015347\",\"name\":\"workflow-vb7l5.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-vb7l5\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vb7l5\",\"startedAt\":\"2024-01-18T07:58:09Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vb7l5/workflow-vb7l5-model-train-f5e8375-2120015347/main.log\"}}]},\"hostNodeName\":\"k8s-master-01\"},\"model-train-4d6cc04\":{\"id\":\"workflow-vb7l5-3255901170\",\"name\":\"workflow-vb7l5.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-vb7l5\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vb7l5\",\"startedAt\":\"2024-01-18T07:58:09Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"git-clone-35e4b7b7\":{\"id\":\"workflow-vb7l5-3763467133\",\"name\":\"workflow-vb7l5.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-vb7l5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vb7l5\",\"startedAt\":\"2024-01-18T07:56:09Z\",\"finishedAt\":\"2024-01-18T07:57:39Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":172,\"memory\":1795},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vb7l5/workflow-vb7l5-git-clone-35e4b7b7-3763467133/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vb7l5-1622848683\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-18 15:56:09', '2024-01-18 15:58:43', 'admin', '2024-01-18 15:56:12', 'admin', '2024-01-18 15:58:47', 0); -INSERT INTO `experiment_ins` VALUES (69, 348, 'workflow-84vnv', 'argo', 'Succeeded', '{\"ml-workflow\":{\"id\":\"workflow-84vnv\",\"name\":\"workflow-84vnv\",\"displayName\":\"workflow-84vnv\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-84vnv\",\"phase\":\"Running\",\"startedAt\":\"2024-01-18T08:23:33Z\",\"finishedAt\":null,\"progress\":\"1/2\",\"children\":[\"workflow-84vnv-2566359989\"]},\"git-clone-35e4b7b7\":{\"id\":\"workflow-84vnv-3809140756\",\"name\":\"workflow-84vnv.git-clone-35e4b7b7(0)\",\"displayName\":\"git-clone-35e4b7b7(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-84vnv\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-84vnv\",\"startedAt\":\"2024-01-18T08:23:33Z\",\"finishedAt\":\"2024-01-18T08:24:47Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-84vnv/workflow-84vnv-git-clone-35e4b7b7-3809140756/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-84vnv-94712355\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-0798f5f\":{\"id\":\"workflow-84vnv-94712355\",\"name\":\"workflow-84vnv.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Retry\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-84vnv\",\"phase\":\"Running\",\"boundaryID\":\"workflow-84vnv\",\"startedAt\":\"2024-01-18T08:24:57Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-84vnv-275569006\"]}}', NULL, '2024-01-18 16:23:33', '2024-01-18 16:25:57', 'admin', '2024-01-18 16:23:36', 'admin', '2024-01-18 16:26:06', 0); -INSERT INTO `experiment_ins` VALUES (71, 348, 'workflow-xv2kg', 'argo', 'Succeeded', '{\"ml-workflow\":{\"id\":\"workflow-xv2kg\",\"name\":\"workflow-xv2kg\",\"displayName\":\"workflow-xv2kg\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-xv2kg\",\"phase\":\"Running\",\"startedAt\":\"2024-01-19T00:49:11Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-xv2kg-1143639577\"]},\"model-train-0798f5f\":{\"id\":\"workflow-xv2kg-1140792383\",\"name\":\"workflow-xv2kg.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-xv2kg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-xv2kg\",\"startedAt\":\"2024-01-19T00:50:59Z\",\"finishedAt\":\"2024-01-19T00:51:15Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-xv2kg/workflow-xv2kg-model-train-0798f5f-1140792383/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-xv2kg-1324266534\",\"workflow-xv2kg-1915620447\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-35e4b7b7\":{\"id\":\"workflow-xv2kg-1143639577\",\"name\":\"workflow-xv2kg.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-xv2kg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-xv2kg\",\"startedAt\":\"2024-01-19T00:49:11Z\",\"finishedAt\":\"2024-01-19T00:50:49Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":184,\"memory\":1922},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-xv2kg/workflow-xv2kg-git-clone-35e4b7b7-1143639577/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-xv2kg-1140792383\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-4d6cc04\":{\"id\":\"workflow-xv2kg-1324266534\",\"name\":\"workflow-xv2kg.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-xv2kg\",\"phase\":\"Running\",\"boundaryID\":\"workflow-xv2kg\",\"startedAt\":\"2024-01-19T00:51:24Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"model-train-f5e8375\":{\"id\":\"workflow-xv2kg-1915620447\",\"name\":\"workflow-xv2kg.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-xv2kg\",\"phase\":\"Running\",\"boundaryID\":\"workflow-xv2kg\",\"startedAt\":\"2024-01-19T00:51:24Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-19 08:49:11', '2024-01-19 08:51:54', 'admin', '2024-01-19 08:49:13', 'admin', '2024-01-19 08:51:58', 0); -INSERT INTO `experiment_ins` VALUES (72, 348, 'workflow-vnt9q', 'argo', 'Succeeded', '{\"workflow-vnt9q\":{\"id\":\"workflow-vnt9q\",\"name\":\"workflow-vnt9q\",\"displayName\":\"workflow-vnt9q\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vnt9q\",\"phase\":\"Running\",\"startedAt\":\"2024-01-19T00:53:54Z\",\"finishedAt\":null,\"progress\":\"2/4\",\"children\":[\"workflow-vnt9q-3439064361\"]},\"model-train-f5e8375\":{\"id\":\"workflow-vnt9q-3318822639\",\"name\":\"workflow-vnt9q.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-vnt9q\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vnt9q\",\"startedAt\":\"2024-01-19T00:56:29Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"git-clone-35e4b7b7\":{\"id\":\"workflow-vnt9q-3439064361\",\"name\":\"workflow-vnt9q.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-vnt9q\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vnt9q\",\"startedAt\":\"2024-01-19T00:53:54Z\",\"finishedAt\":\"2024-01-19T00:55:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":230,\"memory\":2408},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vnt9q/workflow-vnt9q-git-clone-35e4b7b7-3439064361/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vnt9q-514464847\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-4d6cc04\":{\"id\":\"workflow-vnt9q-481348374\",\"name\":\"workflow-vnt9q.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-vnt9q\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vnt9q\",\"startedAt\":\"2024-01-19T00:56:29Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"model-train-0798f5f\":{\"id\":\"workflow-vnt9q-514464847\",\"name\":\"workflow-vnt9q.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-vnt9q\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vnt9q\",\"startedAt\":\"2024-01-19T00:56:03Z\",\"finishedAt\":\"2024-01-19T00:56:20Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":415},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vnt9q/workflow-vnt9q-model-train-0798f5f-514464847/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vnt9q-481348374\",\"workflow-vnt9q-3318822639\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-19 08:53:54', '2024-01-19 08:56:59', 'admin', '2024-01-19 08:53:56', 'admin', '2024-01-19 08:57:03', 0); -INSERT INTO `experiment_ins` VALUES (73, 348, 'workflow-8vzlq', 'argo', 'Failed', '{\"workflow-8vzlq\":{\"id\":\"workflow-8vzlq\",\"name\":\"workflow-8vzlq\",\"displayName\":\"workflow-8vzlq\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-8vzlq\",\"phase\":\"Running\",\"startedAt\":\"2024-01-19T02:26:03Z\",\"finishedAt\":null,\"progress\":\"1/2\",\"children\":[\"workflow-8vzlq-1138672478\"]},\"git-clone-35e4b7b7\":{\"id\":\"workflow-8vzlq-1138672478\",\"name\":\"workflow-8vzlq.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-8vzlq\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-8vzlq\",\"startedAt\":\"2024-01-19T02:26:03Z\",\"finishedAt\":\"2024-01-19T02:26:46Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":77,\"memory\":802},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-8vzlq/workflow-8vzlq-git-clone-35e4b7b7-1138672478/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-8vzlq-1470021910\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-0798f5f\":{\"id\":\"workflow-8vzlq-1470021910\",\"name\":\"workflow-8vzlq.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-8vzlq\",\"phase\":\"Pending\",\"boundaryID\":\"workflow-8vzlq\",\"startedAt\":\"2024-01-19T02:26:56Z\",\"finishedAt\":null,\"progress\":\"0/1\"}}', NULL, '2024-01-19 10:26:03', '2024-01-19 10:27:06', 'admin', '2024-01-19 10:26:05', 'admin', '2024-01-19 10:27:09', 0); -INSERT INTO `experiment_ins` VALUES (74, 348, 'workflow-2q6jm', 'argo', 'Succeeded', '{\"workflow-2q6jm\":{\"id\":\"workflow-2q6jm\",\"name\":\"workflow-2q6jm\",\"displayName\":\"workflow-2q6jm\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-2q6jm\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-22T05:53:39Z\",\"finishedAt\":\"2024-01-22T05:56:08Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":241,\"memory\":2630},\"children\":[\"workflow-2q6jm-1393951367\"],\"outboundNodes\":[\"workflow-2q6jm-3594640380\",\"workflow-2q6jm-1995803661\"]},\"git-clone-35e4b7b7\":{\"id\":\"workflow-2q6jm-1393951367\",\"name\":\"workflow-2q6jm.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-2q6jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2q6jm\",\"startedAt\":\"2024-01-22T05:53:39Z\",\"finishedAt\":\"2024-01-22T05:55:07Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":164,\"memory\":1711},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2q6jm/workflow-2q6jm-git-clone-35e4b7b7-1393951367/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-2q6jm-1776035749\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-0798f5f\":{\"id\":\"workflow-2q6jm-1776035749\",\"name\":\"workflow-2q6jm.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-2q6jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2q6jm\",\"startedAt\":\"2024-01-22T05:55:17Z\",\"finishedAt\":\"2024-01-22T05:55:37Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2q6jm/workflow-2q6jm-model-train-0798f5f-1776035749/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-2q6jm-3594640380\",\"workflow-2q6jm-1995803661\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-f5e8375\":{\"id\":\"workflow-2q6jm-1995803661\",\"name\":\"workflow-2q6jm.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-2q6jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2q6jm\",\"startedAt\":\"2024-01-22T05:55:46Z\",\"finishedAt\":\"2024-01-22T05:56:07Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":23,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2q6jm/workflow-2q6jm-model-train-f5e8375-1995803661/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-4d6cc04\":{\"id\":\"workflow-2q6jm-3594640380\",\"name\":\"workflow-2q6jm.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-2q6jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2q6jm\",\"startedAt\":\"2024-01-22T05:55:46Z\",\"finishedAt\":\"2024-01-22T05:56:02Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":24,\"memory\":292},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2q6jm/workflow-2q6jm-model-train-4d6cc04-3594640380/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-22 13:53:39', '2024-01-22 13:56:08', 'admin', '2024-01-22 13:53:40', 'admin', '2024-01-22 14:22:14', 0); -INSERT INTO `experiment_ins` VALUES (75, 348, 'workflow-5lnrj', 'argo', 'Succeeded', '{\"workflow-5lnrj\":{\"id\":\"workflow-5lnrj\",\"name\":\"workflow-5lnrj\",\"displayName\":\"workflow-5lnrj\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-5lnrj\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-22T06:22:17Z\",\"finishedAt\":\"2024-01-22T06:28:19Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":633,\"memory\":6548},\"children\":[\"workflow-5lnrj-3393703972\"],\"outboundNodes\":[\"workflow-5lnrj-2522249205\",\"workflow-5lnrj-39342564\"]},\"model-train-4d6cc04\":{\"id\":\"workflow-5lnrj-2522249205\",\"name\":\"workflow-5lnrj.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-5lnrj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5lnrj\",\"startedAt\":\"2024-01-22T06:27:33Z\",\"finishedAt\":\"2024-01-22T06:28:09Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":298},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5lnrj/workflow-5lnrj-model-train-4d6cc04-2522249205/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-35e4b7b7\":{\"id\":\"workflow-5lnrj-3393703972\",\"name\":\"workflow-5lnrj.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-5lnrj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5lnrj\",\"startedAt\":\"2024-01-22T06:22:17Z\",\"finishedAt\":\"2024-01-22T06:26:51Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":529,\"memory\":5535},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5lnrj/workflow-5lnrj-git-clone-35e4b7b7-3393703972/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-5lnrj-624427308\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-f5e8375\":{\"id\":\"workflow-5lnrj-39342564\",\"name\":\"workflow-5lnrj.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-5lnrj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5lnrj\",\"startedAt\":\"2024-01-22T06:27:33Z\",\"finishedAt\":\"2024-01-22T06:28:09Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":298},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5lnrj/workflow-5lnrj-model-train-f5e8375-39342564/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-0798f5f\":{\"id\":\"workflow-5lnrj-624427308\",\"name\":\"workflow-5lnrj.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-5lnrj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5lnrj\",\"startedAt\":\"2024-01-22T06:27:01Z\",\"finishedAt\":\"2024-01-22T06:27:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5lnrj/workflow-5lnrj-model-train-0798f5f-624427308/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-5lnrj-2522249205\",\"workflow-5lnrj-39342564\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-22 14:22:17', '2024-01-22 14:28:19', 'admin', '2024-01-22 14:22:17', 'admin', '2024-01-22 14:48:50', 0); -INSERT INTO `experiment_ins` VALUES (76, 348, 'workflow-9tjb7', 'argo', 'Succeeded', '{\"workflow-9tjb7\":{\"id\":\"workflow-9tjb7\",\"name\":\"workflow-9tjb7\",\"displayName\":\"workflow-9tjb7\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-9tjb7\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-22T07:25:12Z\",\"finishedAt\":\"2024-01-22T07:27:28Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":238,\"memory\":2508},\"children\":[\"workflow-9tjb7-3577464297\"],\"outboundNodes\":[\"workflow-9tjb7-2243376214\",\"workflow-9tjb7-4172600495\"]},\"model-train-4d6cc04\":{\"id\":\"workflow-9tjb7-2243376214\",\"name\":\"workflow-9tjb7.model-train-4d6cc04\",\"displayName\":\"model-train-4d6cc04\",\"type\":\"Pod\",\"templateName\":\"model-train-4d6cc04\",\"templateScope\":\"local/workflow-9tjb7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9tjb7\",\"startedAt\":\"2024-01-22T07:27:05Z\",\"finishedAt\":\"2024-01-22T07:27:26Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9tjb7/workflow-9tjb7-model-train-4d6cc04-2243376214/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-35e4b7b7\":{\"id\":\"workflow-9tjb7-3577464297\",\"name\":\"workflow-9tjb7.git-clone-35e4b7b7\",\"displayName\":\"git-clone-35e4b7b7\",\"type\":\"Pod\",\"templateName\":\"git-clone-35e4b7b7\",\"templateScope\":\"local/workflow-9tjb7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9tjb7\",\"startedAt\":\"2024-01-22T07:25:12Z\",\"finishedAt\":\"2024-01-22T07:26:35Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":156,\"memory\":1626},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9tjb7/workflow-9tjb7-git-clone-35e4b7b7-3577464297/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-9tjb7-3756059663\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-0798f5f\":{\"id\":\"workflow-9tjb7-3756059663\",\"name\":\"workflow-9tjb7.model-train-0798f5f\",\"displayName\":\"model-train-0798f5f\",\"type\":\"Pod\",\"templateName\":\"model-train-0798f5f\",\"templateScope\":\"local/workflow-9tjb7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9tjb7\",\"startedAt\":\"2024-01-22T07:26:45Z\",\"finishedAt\":\"2024-01-22T07:27:04Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9tjb7/workflow-9tjb7-model-train-0798f5f-3756059663/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-9tjb7-2243376214\",\"workflow-9tjb7-4172600495\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-f5e8375\":{\"id\":\"workflow-9tjb7-4172600495\",\"name\":\"workflow-9tjb7.model-train-f5e8375\",\"displayName\":\"model-train-f5e8375\",\"type\":\"Pod\",\"templateName\":\"model-train-f5e8375\",\"templateScope\":\"local/workflow-9tjb7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9tjb7\",\"startedAt\":\"2024-01-22T07:27:05Z\",\"finishedAt\":\"2024-01-22T07:27:26Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9tjb7/workflow-9tjb7-model-train-f5e8375-4172600495/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-22 15:25:12', '2024-01-22 15:27:28', 'admin', '2024-01-22 15:25:12', 'admin', '2024-01-22 15:37:31', 0); -INSERT INTO `experiment_ins` VALUES (77, 350, 'workflow-srkdp', 'argo', 'Failed', '{\"workflow-srkdp\":{\"id\":\"workflow-srkdp\",\"name\":\"workflow-srkdp\",\"displayName\":\"workflow-srkdp\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-srkdp\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T01:37:22Z\",\"finishedAt\":\"2024-01-24T01:39:01Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":154,\"memory\":1584},\"children\":[\"workflow-srkdp-2073280069\"],\"outboundNodes\":[\"workflow-srkdp-2688055206\",\"workflow-srkdp-3036811733\"]},\"model-train-7064f00\":{\"id\":\"workflow-srkdp-1055252599\",\"name\":\"workflow-srkdp.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-srkdp\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-srkdp\",\"message\":\"Error (exit code 2)\",\"startedAt\":\"2024-01-24T01:38:51Z\",\"finishedAt\":\"2024-01-24T01:38:59Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":5,\"memory\":41},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-srkdp/workflow-srkdp-model-train-7064f00-1055252599/main.log\"}}],\"exitCode\":\"2\"},\"children\":[\"workflow-srkdp-2688055206\",\"workflow-srkdp-3036811733\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-srkdp-2073280069\",\"name\":\"workflow-srkdp.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-srkdp\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-srkdp\",\"startedAt\":\"2024-01-24T01:37:22Z\",\"finishedAt\":\"2024-01-24T01:38:41Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":149,\"memory\":1543},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-srkdp/workflow-srkdp-git-clone-58252975-2073280069/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-srkdp-1055252599\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-srkdp-2688055206\",\"name\":\"workflow-srkdp.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-srkdp\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-srkdp\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:39:01Z\",\"finishedAt\":\"2024-01-24T01:39:01Z\"},\"model-train-afcf186\":{\"id\":\"workflow-srkdp-3036811733\",\"name\":\"workflow-srkdp.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-srkdp\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-srkdp\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:39:01Z\",\"finishedAt\":\"2024-01-24T01:39:01Z\"}}', NULL, '2024-01-24 09:37:22', '2024-01-24 09:39:01', 'admin', '2024-01-24 09:37:33', 'admin', '2024-01-24 09:41:38', 0); -INSERT INTO `experiment_ins` VALUES (78, 350, 'workflow-ql88g', 'argo', 'Failed', '{\"workflow-ql88g\":{\"id\":\"workflow-ql88g\",\"name\":\"workflow-ql88g\",\"displayName\":\"workflow-ql88g\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-ql88g\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T01:48:27Z\",\"finishedAt\":\"2024-01-24T01:50:50Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":212,\"memory\":2137},\"children\":[\"workflow-ql88g-1929959837\"],\"outboundNodes\":[\"workflow-ql88g-3766561502\",\"workflow-ql88g-352798237\"]},\"git-clone-58252975\":{\"id\":\"workflow-ql88g-1929959837\",\"name\":\"workflow-ql88g.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-ql88g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ql88g\",\"startedAt\":\"2024-01-24T01:48:27Z\",\"finishedAt\":\"2024-01-24T01:50:21Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":203,\"memory\":2093},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ql88g/workflow-ql88g-git-clone-58252975-1929959837/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ql88g-584140207\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-ql88g-352798237\",\"name\":\"workflow-ql88g.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-ql88g\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-ql88g\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:50:50Z\",\"finishedAt\":\"2024-01-24T01:50:50Z\"},\"model-train-7fe21e4\":{\"id\":\"workflow-ql88g-3766561502\",\"name\":\"workflow-ql88g.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-ql88g\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-ql88g\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:50:50Z\",\"finishedAt\":\"2024-01-24T01:50:50Z\"},\"model-train-7064f00\":{\"id\":\"workflow-ql88g-584140207\",\"name\":\"workflow-ql88g.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-ql88g\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-ql88g\",\"message\":\"Error (exit code 2)\",\"startedAt\":\"2024-01-24T01:50:28Z\",\"finishedAt\":\"2024-01-24T01:50:46Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":9,\"memory\":44},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ql88g/workflow-ql88g-model-train-7064f00-584140207/main.log\"}}],\"exitCode\":\"2\"},\"children\":[\"workflow-ql88g-3766561502\",\"workflow-ql88g-352798237\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-24 09:48:27', '2024-01-24 09:50:50', 'admin', '2024-01-24 09:48:30', 'admin', '2024-01-24 09:51:06', 0); -INSERT INTO `experiment_ins` VALUES (79, 350, 'workflow-zgh2s', 'argo', 'Failed', '{\"workflow-zgh2s\":{\"id\":\"workflow-zgh2s\",\"name\":\"workflow-zgh2s\",\"displayName\":\"workflow-zgh2s\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-zgh2s\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T01:53:33Z\",\"finishedAt\":\"2024-01-24T01:55:07Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":145,\"memory\":1499},\"children\":[\"workflow-zgh2s-2165276109\"],\"outboundNodes\":[\"workflow-zgh2s-2670907982\",\"workflow-zgh2s-971797869\"]},\"model-train-7064f00\":{\"id\":\"workflow-zgh2s-2114295199\",\"name\":\"workflow-zgh2s.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-zgh2s\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-zgh2s\",\"message\":\"Error (exit code 2)\",\"startedAt\":\"2024-01-24T01:54:57Z\",\"finishedAt\":\"2024-01-24T01:55:06Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":6,\"memory\":42},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zgh2s/workflow-zgh2s-model-train-7064f00-2114295199/main.log\"}}],\"exitCode\":\"2\"},\"children\":[\"workflow-zgh2s-2670907982\",\"workflow-zgh2s-971797869\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-zgh2s-2165276109\",\"name\":\"workflow-zgh2s.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-zgh2s\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-zgh2s\",\"startedAt\":\"2024-01-24T01:53:33Z\",\"finishedAt\":\"2024-01-24T01:54:47Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":139,\"memory\":1457},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-zgh2s/workflow-zgh2s-git-clone-58252975-2165276109/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-zgh2s-2114295199\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-zgh2s-2670907982\",\"name\":\"workflow-zgh2s.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-zgh2s\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-zgh2s\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:55:07Z\",\"finishedAt\":\"2024-01-24T01:55:07Z\"},\"model-train-afcf186\":{\"id\":\"workflow-zgh2s-971797869\",\"name\":\"workflow-zgh2s.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-zgh2s\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-zgh2s\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:55:07Z\",\"finishedAt\":\"2024-01-24T01:55:07Z\"}}', NULL, '2024-01-24 09:53:33', '2024-01-24 09:55:07', 'admin', '2024-01-24 09:53:37', 'admin', '2024-01-24 09:55:26', 0); -INSERT INTO `experiment_ins` VALUES (80, 350, 'workflow-bs4cq', 'argo', 'Failed', '{\"workflow-bs4cq\":{\"id\":\"workflow-bs4cq\",\"name\":\"workflow-bs4cq\",\"displayName\":\"workflow-bs4cq\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-bs4cq\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T01:55:40Z\",\"finishedAt\":\"2024-01-24T01:57:14Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":146,\"memory\":1499},\"children\":[\"workflow-bs4cq-1345468872\"],\"outboundNodes\":[\"workflow-bs4cq-3095790193\",\"workflow-bs4cq-2356603694\"]},\"git-clone-58252975\":{\"id\":\"workflow-bs4cq-1345468872\",\"name\":\"workflow-bs4cq.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-bs4cq\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bs4cq\",\"startedAt\":\"2024-01-24T01:55:40Z\",\"finishedAt\":\"2024-01-24T01:56:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":139,\"memory\":1457},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bs4cq/workflow-bs4cq-git-clone-58252975-1345468872/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bs4cq-413716424\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-bs4cq-2356603694\",\"name\":\"workflow-bs4cq.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-bs4cq\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-bs4cq\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:57:14Z\",\"finishedAt\":\"2024-01-24T01:57:14Z\"},\"model-train-7fe21e4\":{\"id\":\"workflow-bs4cq-3095790193\",\"name\":\"workflow-bs4cq.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-bs4cq\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-bs4cq\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T01:57:14Z\",\"finishedAt\":\"2024-01-24T01:57:14Z\"},\"model-train-7064f00\":{\"id\":\"workflow-bs4cq-413716424\",\"name\":\"workflow-bs4cq.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-bs4cq\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-bs4cq\",\"message\":\"Error (exit code 2)\",\"startedAt\":\"2024-01-24T01:57:04Z\",\"finishedAt\":\"2024-01-24T01:57:13Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":7,\"memory\":42},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bs4cq/workflow-bs4cq-model-train-7064f00-413716424/main.log\"}}],\"exitCode\":\"2\"},\"children\":[\"workflow-bs4cq-3095790193\",\"workflow-bs4cq-2356603694\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-24 09:55:40', '2024-01-24 09:57:14', 'admin', '2024-01-24 09:55:43', 'admin', '2024-01-24 09:58:56', 0); -INSERT INTO `experiment_ins` VALUES (81, 350, 'workflow-nzgjk', 'argo', 'Failed', '{\"workflow-nzgjk\":{\"id\":\"workflow-nzgjk\",\"name\":\"workflow-nzgjk\",\"displayName\":\"workflow-nzgjk\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-nzgjk\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T02:21:35Z\",\"finishedAt\":\"2024-01-24T02:23:24Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":148,\"memory\":1521},\"children\":[\"workflow-nzgjk-1568105953\"],\"outboundNodes\":[\"workflow-nzgjk-145385050\",\"workflow-nzgjk-187859785\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-nzgjk-145385050\",\"name\":\"workflow-nzgjk.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-nzgjk\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-nzgjk\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T02:23:24Z\",\"finishedAt\":\"2024-01-24T02:23:24Z\"},\"git-clone-58252975\":{\"id\":\"workflow-nzgjk-1568105953\",\"name\":\"workflow-nzgjk.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-nzgjk\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nzgjk\",\"startedAt\":\"2024-01-24T02:21:35Z\",\"finishedAt\":\"2024-01-24T02:22:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":144,\"memory\":1480},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nzgjk/workflow-nzgjk-git-clone-58252975-1568105953/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nzgjk-932052915\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-nzgjk-187859785\",\"name\":\"workflow-nzgjk.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-nzgjk\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-nzgjk\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-24T02:23:24Z\",\"finishedAt\":\"2024-01-24T02:23:24Z\"},\"model-train-7064f00\":{\"id\":\"workflow-nzgjk-932052915\",\"name\":\"workflow-nzgjk.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-nzgjk\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-nzgjk\",\"message\":\"Error (exit code 2)\",\"startedAt\":\"2024-01-24T02:23:03Z\",\"finishedAt\":\"2024-01-24T02:23:13Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":4,\"memory\":41},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nzgjk/workflow-nzgjk-model-train-7064f00-932052915/main.log\"}}],\"exitCode\":\"2\"},\"children\":[\"workflow-nzgjk-145385050\",\"workflow-nzgjk-187859785\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-24 10:21:35', '2024-01-24 10:23:24', 'admin', '2024-01-24 10:21:39', 'admin', '2024-01-24 10:31:20', 0); -INSERT INTO `experiment_ins` VALUES (82, 350, 'workflow-cln5w', 'argo', 'Failed', '{\"workflow-cln5w\":{\"id\":\"workflow-cln5w\",\"name\":\"workflow-cln5w\",\"displayName\":\"workflow-cln5w\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-cln5w\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T05:50:28Z\",\"finishedAt\":\"2024-01-24T05:52:56Z\",\"progress\":\"2/4\",\"resourcesDuration\":{\"cpu\":199,\"memory\":2187},\"children\":[\"workflow-cln5w-2580362250\"],\"outboundNodes\":[\"workflow-cln5w-166980355\",\"workflow-cln5w-2436397060\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-cln5w-166980355\",\"name\":\"workflow-cln5w.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-cln5w\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-cln5w\",\"message\":\"Error (exit code 64): failed to find name in PATH: exec: \\\"--dataset=/workflow-cln5w/dataset/MnistDataset_torch.zip\\\": stat --dataset=/workflow-cln5w/dataset/MnistDataset_torch.zip: no such file or directory\",\"startedAt\":\"2024-01-24T05:52:30Z\",\"finishedAt\":\"2024-01-24T05:52:42Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":2,\"memory\":1},\"outputs\":{\"exitCode\":\"64\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-cln5w-2026228698\",\"name\":\"workflow-cln5w.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-cln5w\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cln5w\",\"startedAt\":\"2024-01-24T05:52:03Z\",\"finishedAt\":\"2024-01-24T05:52:20Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cln5w/workflow-cln5w-model-train-7064f00-2026228698/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cln5w-166980355\",\"workflow-cln5w-2436397060\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-cln5w-2436397060\",\"name\":\"workflow-cln5w.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-cln5w\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-cln5w\",\"message\":\"Error (exit code 1)\",\"startedAt\":\"2024-01-24T05:52:30Z\",\"finishedAt\":\"2024-01-24T05:52:47Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":6,\"memory\":122},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cln5w/workflow-cln5w-model-train-afcf186-2436397060/main.log\"}}],\"exitCode\":\"1\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-cln5w-2580362250\",\"name\":\"workflow-cln5w.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-cln5w\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-cln5w\",\"startedAt\":\"2024-01-24T05:50:28Z\",\"finishedAt\":\"2024-01-24T05:51:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":161,\"memory\":1689},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-cln5w/workflow-cln5w-git-clone-58252975-2580362250/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-cln5w-2026228698\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-24 13:50:28', '2024-01-24 13:52:56', 'admin', '2024-01-24 13:50:31', 'admin', '2024-01-24 13:59:53', 0); -INSERT INTO `experiment_ins` VALUES (83, 350, 'workflow-gwgcd', 'argo', 'Failed', '{\"workflow-gwgcd\":{\"id\":\"workflow-gwgcd\",\"name\":\"workflow-gwgcd\",\"displayName\":\"workflow-gwgcd\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-gwgcd\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T05:59:51Z\",\"finishedAt\":\"2024-01-24T06:02:14Z\",\"progress\":\"3/4\",\"resourcesDuration\":{\"cpu\":200,\"memory\":2147},\"children\":[\"workflow-gwgcd-3052277803\"],\"outboundNodes\":[\"workflow-gwgcd-3136026492\",\"workflow-gwgcd-2296769791\"]},\"model-train-7064f00\":{\"id\":\"workflow-gwgcd-1237614669\",\"name\":\"workflow-gwgcd.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-gwgcd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-gwgcd\",\"startedAt\":\"2024-01-24T06:01:14Z\",\"finishedAt\":\"2024-01-24T06:01:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-gwgcd/workflow-gwgcd-model-train-7064f00-1237614669/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-gwgcd-3136026492\",\"workflow-gwgcd-2296769791\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-gwgcd-2296769791\",\"name\":\"workflow-gwgcd.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-gwgcd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-gwgcd\",\"startedAt\":\"2024-01-24T06:01:42Z\",\"finishedAt\":\"2024-01-24T06:02:02Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":293},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-gwgcd/workflow-gwgcd-model-train-afcf186-2296769791/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-gwgcd-3052277803\",\"name\":\"workflow-gwgcd.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-gwgcd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-gwgcd\",\"startedAt\":\"2024-01-24T05:59:51Z\",\"finishedAt\":\"2024-01-24T06:01:04Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-gwgcd/workflow-gwgcd-git-clone-58252975-3052277803/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-gwgcd-1237614669\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-gwgcd-3136026492\",\"name\":\"workflow-gwgcd.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-gwgcd\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-gwgcd\",\"message\":\"Error (exit code 64): failed to find name in PATH: exec: \\\"--dataset=/workflow-gwgcd/dataset/MnistDataset_torch.zip\\\": stat --dataset=/workflow-gwgcd/dataset/MnistDataset_torch.zip: no such file or directory\",\"startedAt\":\"2024-01-24T06:01:42Z\",\"finishedAt\":\"2024-01-24T06:01:50Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":2,\"memory\":1},\"outputs\":{\"exitCode\":\"64\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-24 13:59:51', '2024-01-24 14:02:14', 'admin', '2024-01-24 13:59:54', 'admin', '2024-01-24 14:03:18', 0); -INSERT INTO `experiment_ins` VALUES (84, 350, 'workflow-xqcwz', 'argo', 'Failed', '{\"workflow-xqcwz\":{\"id\":\"workflow-xqcwz\",\"name\":\"workflow-xqcwz\",\"displayName\":\"workflow-xqcwz\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-xqcwz\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-24T06:38:20Z\",\"finishedAt\":\"2024-01-24T06:40:32Z\",\"progress\":\"3/4\",\"resourcesDuration\":{\"cpu\":195,\"memory\":2065},\"children\":[\"workflow-xqcwz-2297266756\"],\"outboundNodes\":[\"workflow-xqcwz-1807568181\",\"workflow-xqcwz-2875005138\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-xqcwz-1807568181\",\"name\":\"workflow-xqcwz.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-xqcwz\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-xqcwz\",\"message\":\"Error (exit code 64): failed to find name in PATH: exec: \\\"--dataset=/workflow-xqcwz/dataset/MnistDataset_torch.zip\\\": stat --dataset=/workflow-xqcwz/dataset/MnistDataset_torch.zip: no such file or directory\",\"startedAt\":\"2024-01-24T06:40:12Z\",\"finishedAt\":\"2024-01-24T06:40:21Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":3,\"memory\":1},\"outputs\":{\"exitCode\":\"64\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-xqcwz-2297266756\",\"name\":\"workflow-xqcwz.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-xqcwz\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-xqcwz\",\"startedAt\":\"2024-01-24T06:38:20Z\",\"finishedAt\":\"2024-01-24T06:39:34Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":139,\"memory\":1437},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-xqcwz/workflow-xqcwz-git-clone-58252975-2297266756/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-xqcwz-253089172\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-xqcwz-253089172\",\"name\":\"workflow-xqcwz.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-xqcwz\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-xqcwz\",\"startedAt\":\"2024-01-24T06:39:43Z\",\"finishedAt\":\"2024-01-24T06:40:03Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-xqcwz/workflow-xqcwz-model-train-7064f00-253089172/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-xqcwz-1807568181\",\"workflow-xqcwz-2875005138\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-xqcwz-2875005138\",\"name\":\"workflow-xqcwz.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-xqcwz\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-xqcwz\",\"startedAt\":\"2024-01-24T06:40:12Z\",\"finishedAt\":\"2024-01-24T06:40:31Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":22,\"memory\":251},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-xqcwz/workflow-xqcwz-model-train-afcf186-2875005138/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-24 14:38:20', '2024-01-24 14:40:32', 'admin', '2024-01-24 14:38:23', 'admin', '2024-01-24 14:42:14', 0); -INSERT INTO `experiment_ins` VALUES (85, 350, 'workflow-7v558', 'argo', 'Succeeded', '{\"workflow-7v558\":{\"id\":\"workflow-7v558\",\"name\":\"workflow-7v558\",\"displayName\":\"workflow-7v558\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-7v558\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-24T06:42:35Z\",\"finishedAt\":\"2024-01-24T06:44:56Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":221,\"memory\":2358},\"children\":[\"workflow-7v558-1697077000\"],\"outboundNodes\":[\"workflow-7v558-3137130673\",\"workflow-7v558-3396426222\"]},\"git-clone-58252975\":{\"id\":\"workflow-7v558-1697077000\",\"name\":\"workflow-7v558.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-7v558\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7v558\",\"startedAt\":\"2024-01-24T06:42:35Z\",\"finishedAt\":\"2024-01-24T06:43:49Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7v558/workflow-7v558-git-clone-58252975-1697077000/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7v558-3476072712\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-7v558-3137130673\",\"name\":\"workflow-7v558.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-7v558\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7v558\",\"startedAt\":\"2024-01-24T06:44:27Z\",\"finishedAt\":\"2024-01-24T06:44:46Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7v558/workflow-7v558-model-train-7fe21e4-3137130673/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-7v558-3396426222\",\"name\":\"workflow-7v558.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-7v558\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7v558\",\"startedAt\":\"2024-01-24T06:44:27Z\",\"finishedAt\":\"2024-01-24T06:44:46Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":24,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7v558/workflow-7v558-model-train-afcf186-3396426222/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-7v558-3476072712\",\"name\":\"workflow-7v558.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-7v558\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7v558\",\"startedAt\":\"2024-01-24T06:43:59Z\",\"finishedAt\":\"2024-01-24T06:44:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7v558/workflow-7v558-model-train-7064f00-3476072712/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7v558-3137130673\",\"workflow-7v558-3396426222\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-24 14:42:35', '2024-01-24 14:44:56', 'admin', '2024-01-24 14:42:38', 'admin', '2024-01-24 14:47:19', 0); -INSERT INTO `experiment_ins` VALUES (86, 350, 'workflow-k6p67', 'argo', 'Succeeded', '{\"workflow-k6p67\":{\"id\":\"workflow-k6p67\",\"name\":\"workflow-k6p67\",\"displayName\":\"workflow-k6p67\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-k6p67\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T00:51:23Z\",\"finishedAt\":\"2024-01-25T00:53:58Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":241,\"memory\":2550},\"children\":[\"workflow-k6p67-1814369963\"],\"outboundNodes\":[\"workflow-k6p67-327889660\",\"workflow-k6p67-3783600255\"]},\"git-clone-58252975\":{\"id\":\"workflow-k6p67-1814369963\",\"name\":\"workflow-k6p67.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-k6p67\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-k6p67\",\"startedAt\":\"2024-01-25T00:51:23Z\",\"finishedAt\":\"2024-01-25T00:52:46Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":156,\"memory\":1626},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-k6p67/workflow-k6p67-git-clone-58252975-1814369963/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-k6p67-2724445133\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-k6p67-2724445133\",\"name\":\"workflow-k6p67.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-k6p67\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-k6p67\",\"startedAt\":\"2024-01-25T00:52:56Z\",\"finishedAt\":\"2024-01-25T00:53:16Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":418},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-k6p67/workflow-k6p67-model-train-7064f00-2724445133/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-k6p67-327889660\",\"workflow-k6p67-3783600255\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-k6p67-327889660\",\"name\":\"workflow-k6p67.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-k6p67\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-k6p67\",\"startedAt\":\"2024-01-25T00:53:26Z\",\"finishedAt\":\"2024-01-25T00:53:48Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-k6p67/workflow-k6p67-model-train-7fe21e4-327889660/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-k6p67-3783600255\",\"name\":\"workflow-k6p67.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-k6p67\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-k6p67\",\"startedAt\":\"2024-01-25T00:53:26Z\",\"finishedAt\":\"2024-01-25T00:53:48Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-k6p67/workflow-k6p67-model-train-afcf186-3783600255/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 08:51:23', '2024-01-25 08:53:58', 'admin', '2024-01-25 08:51:27', 'admin', '2024-01-25 08:54:08', 0); -INSERT INTO `experiment_ins` VALUES (87, 350, 'workflow-7g9kj', 'argo', 'Succeeded', '{\"workflow-7g9kj\":{\"id\":\"workflow-7g9kj\",\"name\":\"workflow-7g9kj\",\"displayName\":\"workflow-7g9kj\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-7g9kj\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T01:13:47Z\",\"finishedAt\":\"2024-01-25T01:16:03Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":224,\"memory\":2401},\"children\":[\"workflow-7g9kj-2861213695\"],\"outboundNodes\":[\"workflow-7g9kj-2952971864\",\"workflow-7g9kj-3600559275\"]},\"model-train-7064f00\":{\"id\":\"workflow-7g9kj-16052321\",\"name\":\"workflow-7g9kj.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-7g9kj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7g9kj\",\"startedAt\":\"2024-01-25T01:15:11Z\",\"finishedAt\":\"2024-01-25T01:15:31Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":33,\"memory\":377},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7g9kj/workflow-7g9kj-model-train-7064f00-16052321/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7g9kj-2952971864\",\"workflow-7g9kj-3600559275\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-7g9kj-2861213695\",\"name\":\"workflow-7g9kj.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-7g9kj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7g9kj\",\"startedAt\":\"2024-01-25T01:13:47Z\",\"finishedAt\":\"2024-01-25T01:15:01Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7g9kj/workflow-7g9kj-git-clone-58252975-2861213695/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7g9kj-16052321\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-7g9kj-2952971864\",\"name\":\"workflow-7g9kj.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-7g9kj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7g9kj\",\"startedAt\":\"2024-01-25T01:15:31Z\",\"finishedAt\":\"2024-01-25T01:15:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7g9kj/workflow-7g9kj-model-train-7fe21e4-2952971864/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-7g9kj-3600559275\",\"name\":\"workflow-7g9kj.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-7g9kj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7g9kj\",\"startedAt\":\"2024-01-25T01:15:31Z\",\"finishedAt\":\"2024-01-25T01:15:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7g9kj/workflow-7g9kj-model-train-afcf186-3600559275/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 09:13:47', '2024-01-25 09:16:03', 'admin', '2024-01-25 09:13:52', 'admin', '2024-01-25 09:17:20', 0); -INSERT INTO `experiment_ins` VALUES (88, 350, 'workflow-9lbgp', 'argo', 'Succeeded', '{\"workflow-9lbgp\":{\"id\":\"workflow-9lbgp\",\"name\":\"workflow-9lbgp\",\"displayName\":\"workflow-9lbgp\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-9lbgp\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T01:17:20Z\",\"finishedAt\":\"2024-01-25T01:18:35Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":139,\"memory\":1457},\"children\":[\"workflow-9lbgp-3441363877\"],\"outboundNodes\":[\"workflow-9lbgp-1051056646\",\"workflow-9lbgp-2429941301\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-9lbgp-1051056646\",\"name\":\"workflow-9lbgp.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-9lbgp\",\"phase\":\"Skipped\",\"boundaryID\":\"workflow-9lbgp\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T01:18:35Z\",\"finishedAt\":\"2024-01-25T01:18:35Z\",\"progress\":\"1/1\"},\"model-train-afcf186\":{\"id\":\"workflow-9lbgp-2429941301\",\"name\":\"workflow-9lbgp.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-9lbgp\",\"phase\":\"Skipped\",\"boundaryID\":\"workflow-9lbgp\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T01:18:35Z\",\"finishedAt\":\"2024-01-25T01:18:35Z\",\"progress\":\"1/1\"},\"model-train-7064f00\":{\"id\":\"workflow-9lbgp-3418061399\",\"name\":\"workflow-9lbgp.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-9lbgp\",\"phase\":\"Skipped\",\"boundaryID\":\"workflow-9lbgp\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T01:18:35Z\",\"finishedAt\":\"2024-01-25T01:18:35Z\",\"progress\":\"1/1\",\"children\":[\"workflow-9lbgp-1051056646\",\"workflow-9lbgp-2429941301\"]},\"git-clone-58252975\":{\"id\":\"workflow-9lbgp-3441363877\",\"name\":\"workflow-9lbgp.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-9lbgp\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9lbgp\",\"startedAt\":\"2024-01-25T01:17:20Z\",\"finishedAt\":\"2024-01-25T01:18:34Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":139,\"memory\":1457},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9lbgp/workflow-9lbgp-git-clone-58252975-3441363877/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-9lbgp-3418061399\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-25 09:17:20', '2024-01-25 09:18:35', 'admin', '2024-01-25 09:17:25', 'admin', '2024-01-25 09:19:29', 0); -INSERT INTO `experiment_ins` VALUES (89, 350, 'workflow-9569f', 'argo', 'Succeeded', '{\"workflow-9569f\":{\"id\":\"workflow-9569f\",\"name\":\"workflow-9569f\",\"displayName\":\"workflow-9569f\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-9569f\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T01:34:06Z\",\"finishedAt\":\"2024-01-25T01:38:02Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":429,\"memory\":4515},\"children\":[\"workflow-9569f-2871002694\"],\"outboundNodes\":[\"workflow-9569f-2669171511\",\"workflow-9569f-3926960696\"]},\"model-train-7064f00\":{\"id\":\"workflow-9569f-1833159430\",\"name\":\"workflow-9569f.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-9569f\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9569f\",\"startedAt\":\"2024-01-25T01:37:11Z\",\"finishedAt\":\"2024-01-25T01:37:28Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9569f/workflow-9569f-model-train-7064f00-1833159430/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-9569f-2669171511\",\"workflow-9569f-3926960696\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-9569f-2669171511\",\"name\":\"workflow-9569f.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-9569f\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9569f\",\"startedAt\":\"2024-01-25T01:37:32Z\",\"finishedAt\":\"2024-01-25T01:37:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9569f/workflow-9569f-model-train-7fe21e4-2669171511/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-9569f-2871002694\",\"name\":\"workflow-9569f.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-9569f\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9569f\",\"startedAt\":\"2024-01-25T01:34:06Z\",\"finishedAt\":\"2024-01-25T01:37:01Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":342,\"memory\":3591},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9569f/workflow-9569f-git-clone-58252975-2871002694/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-9569f-1833159430\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-9569f-3926960696\",\"name\":\"workflow-9569f.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-9569f\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-9569f\",\"startedAt\":\"2024-01-25T01:37:32Z\",\"finishedAt\":\"2024-01-25T01:37:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":29,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-9569f/workflow-9569f-model-train-afcf186-3926960696/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 09:34:06', '2024-01-25 09:38:02', 'admin', '2024-01-25 09:34:10', 'admin', '2024-01-25 09:39:09', 0); -INSERT INTO `experiment_ins` VALUES (90, 350, 'workflow-w99b5', 'argo', 'Succeeded', '{\"workflow-w99b5\":{\"id\":\"workflow-w99b5\",\"name\":\"workflow-w99b5\",\"displayName\":\"workflow-w99b5\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-w99b5\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T01:42:37Z\",\"finishedAt\":\"2024-01-25T01:52:32Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":1112,\"memory\":11798},\"children\":[\"workflow-w99b5-2057966001\"],\"outboundNodes\":[\"workflow-w99b5-3861117674\",\"workflow-w99b5-4189640953\"]},\"git-clone-58252975\":{\"id\":\"workflow-w99b5-2057966001\",\"name\":\"workflow-w99b5.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-w99b5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w99b5\",\"startedAt\":\"2024-01-25T01:42:37Z\",\"finishedAt\":\"2024-01-25T01:51:16Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":1028,\"memory\":10835},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w99b5/workflow-w99b5-git-clone-58252975-2057966001/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-w99b5-3392478147\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-w99b5-3392478147\",\"name\":\"workflow-w99b5.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-w99b5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w99b5\",\"startedAt\":\"2024-01-25T01:51:26Z\",\"finishedAt\":\"2024-01-25T01:51:50Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":33,\"memory\":377},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w99b5/workflow-w99b5-model-train-7064f00-3392478147/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-w99b5-3861117674\",\"workflow-w99b5-4189640953\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-w99b5-3861117674\",\"name\":\"workflow-w99b5.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-w99b5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w99b5\",\"startedAt\":\"2024-01-25T01:51:59Z\",\"finishedAt\":\"2024-01-25T01:52:22Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":293},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w99b5/workflow-w99b5-model-train-7fe21e4-3861117674/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-w99b5-4189640953\",\"name\":\"workflow-w99b5.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-w99b5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w99b5\",\"startedAt\":\"2024-01-25T01:51:59Z\",\"finishedAt\":\"2024-01-25T01:52:22Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":293},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w99b5/workflow-w99b5-model-train-afcf186-4189640953/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 09:42:37', '2024-01-25 09:52:32', 'admin', '2024-01-25 09:42:42', 'admin', '2024-01-25 09:56:30', 0); -INSERT INTO `experiment_ins` VALUES (91, 350, 'workflow-vls6g', 'argo', 'Succeeded', '{\"workflow-vls6g\":{\"id\":\"workflow-vls6g\",\"name\":\"workflow-vls6g\",\"displayName\":\"workflow-vls6g\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vls6g\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T01:43:17Z\",\"finishedAt\":\"2024-01-25T01:52:52Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":1069,\"memory\":11354},\"children\":[\"workflow-vls6g-2487770835\"],\"outboundNodes\":[\"workflow-vls6g-3037103812\",\"workflow-vls6g-89328727\"]},\"model-train-7064f00\":{\"id\":\"workflow-vls6g-2008920661\",\"name\":\"workflow-vls6g.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-vls6g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vls6g\",\"startedAt\":\"2024-01-25T01:51:48Z\",\"finishedAt\":\"2024-01-25T01:52:06Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vls6g/workflow-vls6g-model-train-7064f00-2008920661/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vls6g-3037103812\",\"workflow-vls6g-89328727\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-vls6g-2487770835\",\"name\":\"workflow-vls6g.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-vls6g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vls6g\",\"startedAt\":\"2024-01-25T01:43:17Z\",\"finishedAt\":\"2024-01-25T01:51:38Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":993,\"memory\":10476},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vls6g/workflow-vls6g-git-clone-58252975-2487770835/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vls6g-2008920661\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-vls6g-3037103812\",\"name\":\"workflow-vls6g.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-vls6g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vls6g\",\"startedAt\":\"2024-01-25T01:52:09Z\",\"finishedAt\":\"2024-01-25T01:52:41Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vls6g/workflow-vls6g-model-train-7fe21e4-3037103812/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-vls6g-89328727\",\"name\":\"workflow-vls6g.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-vls6g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vls6g\",\"startedAt\":\"2024-01-25T01:52:09Z\",\"finishedAt\":\"2024-01-25T01:52:35Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":20,\"memory\":250},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vls6g/workflow-vls6g-model-train-afcf186-89328727/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 09:43:17', '2024-01-25 09:52:52', 'admin', '2024-01-25 09:43:21', 'admin', '2024-01-25 09:57:47', 0); -INSERT INTO `experiment_ins` VALUES (92, 350, 'workflow-nc6d6', 'argo', 'Succeeded', '{\"workflow-nc6d6\":{\"id\":\"workflow-nc6d6\",\"name\":\"workflow-nc6d6\",\"displayName\":\"workflow-nc6d6\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-nc6d6\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T01:57:47Z\",\"finishedAt\":\"2024-01-25T02:00:11Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":223,\"memory\":2380},\"children\":[\"workflow-nc6d6-1366669332\"],\"outboundNodes\":[\"workflow-nc6d6-3822650949\",\"workflow-nc6d6-1661923586\"]},\"git-clone-58252975\":{\"id\":\"workflow-nc6d6-1366669332\",\"name\":\"workflow-nc6d6.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-nc6d6\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nc6d6\",\"startedAt\":\"2024-01-25T01:57:47Z\",\"finishedAt\":\"2024-01-25T01:59:00Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":135,\"memory\":1415},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nc6d6/workflow-nc6d6-git-clone-58252975-1366669332/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nc6d6-2371453540\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-nc6d6-1661923586\",\"name\":\"workflow-nc6d6.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-nc6d6\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nc6d6\",\"startedAt\":\"2024-01-25T01:59:39Z\",\"finishedAt\":\"2024-01-25T02:00:02Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nc6d6/workflow-nc6d6-model-train-afcf186-1661923586/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-nc6d6-2371453540\",\"name\":\"workflow-nc6d6.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-nc6d6\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nc6d6\",\"startedAt\":\"2024-01-25T01:59:10Z\",\"finishedAt\":\"2024-01-25T01:59:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nc6d6/workflow-nc6d6-model-train-7064f00-2371453540/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nc6d6-3822650949\",\"workflow-nc6d6-1661923586\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-nc6d6-3822650949\",\"name\":\"workflow-nc6d6.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-nc6d6\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nc6d6\",\"startedAt\":\"2024-01-25T01:59:39Z\",\"finishedAt\":\"2024-01-25T02:00:02Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nc6d6/workflow-nc6d6-model-train-7fe21e4-3822650949/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 09:57:47', '2024-01-25 10:00:11', 'admin', '2024-01-25 09:57:51', 'admin', '2024-01-25 10:00:26', 0); -INSERT INTO `experiment_ins` VALUES (93, 350, 'workflow-dxst9', 'argo', 'Succeeded', '{\"workflow-dxst9\":{\"id\":\"workflow-dxst9\",\"name\":\"workflow-dxst9\",\"displayName\":\"workflow-dxst9\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-dxst9\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:00:40Z\",\"finishedAt\":\"2024-01-25T02:03:03Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":223,\"memory\":2420},\"children\":[\"workflow-dxst9-2315949557\"],\"outboundNodes\":[\"workflow-dxst9-3827198166\",\"workflow-dxst9-1348691365\"]},\"model-train-afcf186\":{\"id\":\"workflow-dxst9-1348691365\",\"name\":\"workflow-dxst9.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-dxst9\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dxst9\",\"startedAt\":\"2024-01-25T02:02:31Z\",\"finishedAt\":\"2024-01-25T02:02:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":24,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dxst9/workflow-dxst9-model-train-afcf186-1348691365/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-dxst9-2315949557\",\"name\":\"workflow-dxst9.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-dxst9\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dxst9\",\"startedAt\":\"2024-01-25T02:00:40Z\",\"finishedAt\":\"2024-01-25T02:01:55Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":140,\"memory\":1458},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dxst9/workflow-dxst9-git-clone-58252975-2315949557/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-dxst9-450462311\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-dxst9-3827198166\",\"name\":\"workflow-dxst9.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-dxst9\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dxst9\",\"startedAt\":\"2024-01-25T02:02:31Z\",\"finishedAt\":\"2024-01-25T02:02:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dxst9/workflow-dxst9-model-train-7fe21e4-3827198166/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-dxst9-450462311\",\"name\":\"workflow-dxst9.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-dxst9\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dxst9\",\"startedAt\":\"2024-01-25T02:02:05Z\",\"finishedAt\":\"2024-01-25T02:02:22Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dxst9/workflow-dxst9-model-train-7064f00-450462311/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-dxst9-3827198166\",\"workflow-dxst9-1348691365\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:00:40', '2024-01-25 10:03:03', 'admin', '2024-01-25 10:00:44', 'admin', '2024-01-25 10:05:21', 0); -INSERT INTO `experiment_ins` VALUES (94, 350, 'workflow-nqqvv', 'argo', 'Succeeded', '{\"workflow-nqqvv\":{\"id\":\"workflow-nqqvv\",\"name\":\"workflow-nqqvv\",\"displayName\":\"workflow-nqqvv\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-nqqvv\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:05:19Z\",\"finishedAt\":\"2024-01-25T02:07:45Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":230,\"memory\":2384},\"children\":[\"workflow-nqqvv-3228662431\"],\"outboundNodes\":[\"workflow-nqqvv-2814760952\",\"workflow-nqqvv-4007937611\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-nqqvv-2814760952\",\"name\":\"workflow-nqqvv.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-nqqvv\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nqqvv\",\"startedAt\":\"2024-01-25T02:07:14Z\",\"finishedAt\":\"2024-01-25T02:07:36Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nqqvv/workflow-nqqvv-model-train-7fe21e4-2814760952/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-nqqvv-3228662431\",\"name\":\"workflow-nqqvv.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-nqqvv\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nqqvv\",\"startedAt\":\"2024-01-25T02:05:19Z\",\"finishedAt\":\"2024-01-25T02:06:36Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":144,\"memory\":1500},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nqqvv/workflow-nqqvv-git-clone-58252975-3228662431/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nqqvv-3843331329\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-nqqvv-3843331329\",\"name\":\"workflow-nqqvv.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-nqqvv\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nqqvv\",\"startedAt\":\"2024-01-25T02:06:46Z\",\"finishedAt\":\"2024-01-25T02:07:04Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nqqvv/workflow-nqqvv-model-train-7064f00-3843331329/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nqqvv-2814760952\",\"workflow-nqqvv-4007937611\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-nqqvv-4007937611\",\"name\":\"workflow-nqqvv.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-nqqvv\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nqqvv\",\"startedAt\":\"2024-01-25T02:07:14Z\",\"finishedAt\":\"2024-01-25T02:07:36Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nqqvv/workflow-nqqvv-model-train-afcf186-4007937611/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:05:19', '2024-01-25 10:07:45', 'admin', '2024-01-25 10:05:23', 'admin', '2024-01-25 10:08:10', 0); -INSERT INTO `experiment_ins` VALUES (95, 350, 'workflow-frkg5', 'argo', 'Succeeded', '{\"workflow-frkg5\":{\"id\":\"workflow-frkg5\",\"name\":\"workflow-frkg5\",\"displayName\":\"workflow-frkg5\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-frkg5\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:06:23Z\",\"finishedAt\":\"2024-01-25T02:08:58Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":236,\"memory\":2429},\"children\":[\"workflow-frkg5-4281602600\"],\"outboundNodes\":[\"workflow-frkg5-3900716241\",\"workflow-frkg5-993309326\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-frkg5-3900716241\",\"name\":\"workflow-frkg5.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-frkg5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-frkg5\",\"startedAt\":\"2024-01-25T02:08:25Z\",\"finishedAt\":\"2024-01-25T02:08:48Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-frkg5/workflow-frkg5-model-train-7fe21e4-3900716241/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-frkg5-4281602600\",\"name\":\"workflow-frkg5.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-frkg5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-frkg5\",\"startedAt\":\"2024-01-25T02:06:23Z\",\"finishedAt\":\"2024-01-25T02:07:48Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":150,\"memory\":1544},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-frkg5/workflow-frkg5-git-clone-58252975-4281602600/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-frkg5-985676968\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-frkg5-985676968\",\"name\":\"workflow-frkg5.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-frkg5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-frkg5\",\"startedAt\":\"2024-01-25T02:07:57Z\",\"finishedAt\":\"2024-01-25T02:08:15Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-frkg5/workflow-frkg5-model-train-7064f00-985676968/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-frkg5-3900716241\",\"workflow-frkg5-993309326\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-frkg5-993309326\",\"name\":\"workflow-frkg5.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-frkg5\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-frkg5\",\"startedAt\":\"2024-01-25T02:08:25Z\",\"finishedAt\":\"2024-01-25T02:08:48Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-frkg5/workflow-frkg5-model-train-afcf186-993309326/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:06:23', '2024-01-25 10:08:58', 'admin', '2024-01-25 10:06:27', 'admin', '2024-01-25 10:11:02', 0); -INSERT INTO `experiment_ins` VALUES (96, 350, 'workflow-5x4hb', 'argo', 'Succeeded', '{\"workflow-5x4hb\":{\"id\":\"workflow-5x4hb\",\"name\":\"workflow-5x4hb\",\"displayName\":\"workflow-5x4hb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-5x4hb\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:12:47Z\",\"finishedAt\":\"2024-01-25T02:15:04Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":221,\"memory\":2358},\"children\":[\"workflow-5x4hb-669312204\"],\"outboundNodes\":[\"workflow-5x4hb-2373399837\",\"workflow-5x4hb-2566522794\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-5x4hb-2373399837\",\"name\":\"workflow-5x4hb.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-5x4hb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5x4hb\",\"startedAt\":\"2024-01-25T02:14:39Z\",\"finishedAt\":\"2024-01-25T02:14:55Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":23,\"memory\":251},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5x4hb/workflow-5x4hb-model-train-7fe21e4-2373399837/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-5x4hb-2566522794\",\"name\":\"workflow-5x4hb.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-5x4hb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5x4hb\",\"startedAt\":\"2024-01-25T02:14:39Z\",\"finishedAt\":\"2024-01-25T02:15:02Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5x4hb/workflow-5x4hb-model-train-afcf186-2566522794/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-5x4hb-669312204\",\"name\":\"workflow-5x4hb.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-5x4hb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5x4hb\",\"startedAt\":\"2024-01-25T02:12:47Z\",\"finishedAt\":\"2024-01-25T02:14:02Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":141,\"memory\":1478},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5x4hb/workflow-5x4hb-git-clone-58252975-669312204/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-5x4hb-763187708\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-5x4hb-763187708\",\"name\":\"workflow-5x4hb.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-5x4hb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-5x4hb\",\"startedAt\":\"2024-01-25T02:14:12Z\",\"finishedAt\":\"2024-01-25T02:14:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-5x4hb/workflow-5x4hb-model-train-7064f00-763187708/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-5x4hb-2373399837\",\"workflow-5x4hb-2566522794\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:12:47', '2024-01-25 10:15:04', 'admin', '2024-01-25 10:12:51', 'admin', '2024-01-25 10:16:11', 0); -INSERT INTO `experiment_ins` VALUES (97, 350, 'workflow-lg2zb', 'argo', 'Succeeded', '{\"workflow-lg2zb\":{\"id\":\"workflow-lg2zb\",\"name\":\"workflow-lg2zb\",\"displayName\":\"workflow-lg2zb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-lg2zb\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:16:09Z\",\"finishedAt\":\"2024-01-25T02:18:41Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":231,\"memory\":2445},\"children\":[\"workflow-lg2zb-2614804196\"],\"outboundNodes\":[\"workflow-lg2zb-2507532629\",\"workflow-lg2zb-3658234226\"]},\"model-train-7064f00\":{\"id\":\"workflow-lg2zb-1174133044\",\"name\":\"workflow-lg2zb.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-lg2zb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-lg2zb\",\"startedAt\":\"2024-01-25T02:17:33Z\",\"finishedAt\":\"2024-01-25T02:17:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":35,\"memory\":418},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-lg2zb/workflow-lg2zb-model-train-7064f00-1174133044/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-lg2zb-2507532629\",\"workflow-lg2zb-3658234226\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-lg2zb-2507532629\",\"name\":\"workflow-lg2zb.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-lg2zb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-lg2zb\",\"startedAt\":\"2024-01-25T02:18:02Z\",\"finishedAt\":\"2024-01-25T02:18:19Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":293},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-lg2zb/workflow-lg2zb-model-train-7fe21e4-2507532629/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-lg2zb-2614804196\",\"name\":\"workflow-lg2zb.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-lg2zb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-lg2zb\",\"startedAt\":\"2024-01-25T02:16:09Z\",\"finishedAt\":\"2024-01-25T02:17:23Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-lg2zb/workflow-lg2zb-git-clone-58252975-2614804196/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-lg2zb-1174133044\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-lg2zb-3658234226\",\"name\":\"workflow-lg2zb.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-lg2zb\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-lg2zb\",\"startedAt\":\"2024-01-25T02:18:02Z\",\"finishedAt\":\"2024-01-25T02:18:28Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":33,\"memory\":298},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-lg2zb/workflow-lg2zb-model-train-afcf186-3658234226/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:16:09', '2024-01-25 10:18:41', 'admin', '2024-01-25 10:16:13', 'admin', '2024-01-25 10:20:00', 0); -INSERT INTO `experiment_ins` VALUES (98, 350, 'workflow-xw5jl', 'argo', NULL, NULL, NULL, NULL, NULL, 'admin', '2024-01-25 10:20:41', 'admin', '2024-01-25 10:20:41', 0); -INSERT INTO `experiment_ins` VALUES (99, 350, 'workflow-kw5dd', 'argo', 'Succeeded', '{\"workflow-kw5dd\":{\"id\":\"workflow-kw5dd\",\"name\":\"workflow-kw5dd\",\"displayName\":\"workflow-kw5dd\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-kw5dd\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:26:29Z\",\"finishedAt\":\"2024-01-25T02:29:51Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":328,\"memory\":3559},\"children\":[\"workflow-kw5dd-1823677084\"],\"outboundNodes\":[\"workflow-kw5dd-2609726381\",\"workflow-kw5dd-773892122\"]},\"model-train-7064f00\":{\"id\":\"workflow-kw5dd-1393657612\",\"name\":\"workflow-kw5dd.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-kw5dd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-kw5dd\",\"startedAt\":\"2024-01-25T02:28:54Z\",\"finishedAt\":\"2024-01-25T02:29:11Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-kw5dd/workflow-kw5dd-model-train-7064f00-1393657612/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-kw5dd-2609726381\",\"workflow-kw5dd-773892122\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-kw5dd-1823677084\",\"name\":\"workflow-kw5dd.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-kw5dd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-kw5dd\",\"startedAt\":\"2024-01-25T02:26:29Z\",\"finishedAt\":\"2024-01-25T02:28:44Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":242,\"memory\":2515},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-kw5dd/workflow-kw5dd-git-clone-58252975-1823677084/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-kw5dd-1393657612\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-kw5dd-2609726381\",\"name\":\"workflow-kw5dd.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-kw5dd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-kw5dd\",\"startedAt\":\"2024-01-25T02:29:17Z\",\"finishedAt\":\"2024-01-25T02:29:41Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":293},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-kw5dd/workflow-kw5dd-model-train-7fe21e4-2609726381/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-kw5dd-773892122\",\"name\":\"workflow-kw5dd.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-kw5dd\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-kw5dd\",\"startedAt\":\"2024-01-25T02:29:17Z\",\"finishedAt\":\"2024-01-25T02:29:41Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":29,\"memory\":335},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-kw5dd/workflow-kw5dd-model-train-afcf186-773892122/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:26:29', '2024-01-25 10:29:51', 'admin', '2024-01-25 10:26:33', 'admin', '2024-01-25 10:32:09', 0); -INSERT INTO `experiment_ins` VALUES (100, 350, 'workflow-fs6nj', 'argo', 'Succeeded', '{\"workflow-fs6nj\":{\"id\":\"workflow-fs6nj\",\"name\":\"workflow-fs6nj\",\"displayName\":\"workflow-fs6nj\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-fs6nj\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:26:32Z\",\"finishedAt\":\"2024-01-25T02:30:16Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":342,\"memory\":3587},\"children\":[\"workflow-fs6nj-1737030582\"],\"outboundNodes\":[\"workflow-fs6nj-2076685031\",\"workflow-fs6nj-3232181896\"]},\"git-clone-58252975\":{\"id\":\"workflow-fs6nj-1737030582\",\"name\":\"workflow-fs6nj.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-fs6nj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fs6nj\",\"startedAt\":\"2024-01-25T02:26:32Z\",\"finishedAt\":\"2024-01-25T02:28:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":254,\"memory\":2661},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fs6nj/workflow-fs6nj-git-clone-58252975-1737030582/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-fs6nj-2027109430\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-fs6nj-2027109430\",\"name\":\"workflow-fs6nj.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-fs6nj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fs6nj\",\"startedAt\":\"2024-01-25T02:29:03Z\",\"finishedAt\":\"2024-01-25T02:29:24Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fs6nj/workflow-fs6nj-model-train-7064f00-2027109430/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-fs6nj-2076685031\",\"workflow-fs6nj-3232181896\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-fs6nj-2076685031\",\"name\":\"workflow-fs6nj.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-fs6nj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fs6nj\",\"startedAt\":\"2024-01-25T02:29:34Z\",\"finishedAt\":\"2024-01-25T02:30:07Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fs6nj/workflow-fs6nj-model-train-7fe21e4-2076685031/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-fs6nj-3232181896\",\"name\":\"workflow-fs6nj.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-fs6nj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fs6nj\",\"startedAt\":\"2024-01-25T02:29:34Z\",\"finishedAt\":\"2024-01-25T02:30:07Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fs6nj/workflow-fs6nj-model-train-afcf186-3232181896/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:26:32', '2024-01-25 10:30:16', 'admin', '2024-01-25 10:26:36', 'admin', '2024-01-25 10:32:09', 0); -INSERT INTO `experiment_ins` VALUES (101, 350, 'workflow-vlhnj', 'argo', 'Succeeded', '{\"workflow-vlhnj\":{\"id\":\"workflow-vlhnj\",\"name\":\"workflow-vlhnj\",\"displayName\":\"workflow-vlhnj\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vlhnj\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:32:08Z\",\"finishedAt\":\"2024-01-25T02:34:42Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":243,\"memory\":2589},\"children\":[\"workflow-vlhnj-2743262337\"],\"outboundNodes\":[\"workflow-vlhnj-3399399418\",\"workflow-vlhnj-2269738217\"]},\"model-train-afcf186\":{\"id\":\"workflow-vlhnj-2269738217\",\"name\":\"workflow-vlhnj.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-vlhnj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vlhnj\",\"startedAt\":\"2024-01-25T02:34:12Z\",\"finishedAt\":\"2024-01-25T02:34:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":24,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vlhnj/workflow-vlhnj-model-train-afcf186-2269738217/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-vlhnj-2743262337\",\"name\":\"workflow-vlhnj.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-vlhnj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vlhnj\",\"startedAt\":\"2024-01-25T02:32:08Z\",\"finishedAt\":\"2024-01-25T02:33:34Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":162,\"memory\":1709},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vlhnj/workflow-vlhnj-git-clone-58252975-2743262337/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vlhnj-3363923283\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-vlhnj-3363923283\",\"name\":\"workflow-vlhnj.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-vlhnj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vlhnj\",\"startedAt\":\"2024-01-25T02:33:44Z\",\"finishedAt\":\"2024-01-25T02:34:03Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vlhnj/workflow-vlhnj-model-train-7064f00-3363923283/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vlhnj-3399399418\",\"workflow-vlhnj-2269738217\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-vlhnj-3399399418\",\"name\":\"workflow-vlhnj.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-vlhnj\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vlhnj\",\"startedAt\":\"2024-01-25T02:34:12Z\",\"finishedAt\":\"2024-01-25T02:34:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vlhnj/workflow-vlhnj-model-train-7fe21e4-3399399418/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:32:08', '2024-01-25 10:34:42', 'admin', '2024-01-25 10:32:13', 'admin', '2024-01-25 10:40:24', 0); -INSERT INTO `experiment_ins` VALUES (102, 350, 'workflow-bpjh4', 'argo', 'Succeeded', '{\"workflow-bpjh4\":{\"id\":\"workflow-bpjh4\",\"name\":\"workflow-bpjh4\",\"displayName\":\"workflow-bpjh4\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-bpjh4\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:40:23Z\",\"finishedAt\":\"2024-01-25T02:42:45Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":222,\"memory\":2379},\"children\":[\"workflow-bpjh4-3043496451\"],\"outboundNodes\":[\"workflow-bpjh4-2348035828\",\"workflow-bpjh4-3424985895\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-bpjh4-2348035828\",\"name\":\"workflow-bpjh4.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-bpjh4\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bpjh4\",\"startedAt\":\"2024-01-25T02:42:15Z\",\"finishedAt\":\"2024-01-25T02:42:35Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bpjh4/workflow-bpjh4-model-train-7fe21e4-2348035828/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-bpjh4-3043496451\",\"name\":\"workflow-bpjh4.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-bpjh4\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bpjh4\",\"startedAt\":\"2024-01-25T02:40:23Z\",\"finishedAt\":\"2024-01-25T02:41:37Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":140,\"memory\":1458},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bpjh4/workflow-bpjh4-git-clone-58252975-3043496451/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bpjh4-3413362117\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-bpjh4-3413362117\",\"name\":\"workflow-bpjh4.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-bpjh4\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bpjh4\",\"startedAt\":\"2024-01-25T02:41:47Z\",\"finishedAt\":\"2024-01-25T02:42:05Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bpjh4/workflow-bpjh4-model-train-7064f00-3413362117/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bpjh4-2348035828\",\"workflow-bpjh4-3424985895\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-bpjh4-3424985895\",\"name\":\"workflow-bpjh4.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-bpjh4\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bpjh4\",\"startedAt\":\"2024-01-25T02:42:15Z\",\"finishedAt\":\"2024-01-25T02:42:35Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":293},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bpjh4/workflow-bpjh4-model-train-afcf186-3424985895/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:40:23', '2024-01-25 10:42:45', 'admin', '2024-01-25 10:40:27', 'admin', '2024-01-25 10:43:49', 0); -INSERT INTO `experiment_ins` VALUES (103, 350, 'workflow-htbkc', 'argo', 'Succeeded', '{\"workflow-htbkc\":{\"id\":\"workflow-htbkc\",\"name\":\"workflow-htbkc\",\"displayName\":\"workflow-htbkc\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-htbkc\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:45:53Z\",\"finishedAt\":\"2024-01-25T02:48:26Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":240,\"memory\":2549},\"children\":[\"workflow-htbkc-234026067\"],\"outboundNodes\":[\"workflow-htbkc-3163545412\",\"workflow-htbkc-215770327\"]},\"model-train-7064f00\":{\"id\":\"workflow-htbkc-2135362261\",\"name\":\"workflow-htbkc.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-htbkc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-htbkc\",\"startedAt\":\"2024-01-25T02:47:23Z\",\"finishedAt\":\"2024-01-25T02:47:43Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-htbkc/workflow-htbkc-model-train-7064f00-2135362261/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-htbkc-3163545412\",\"workflow-htbkc-215770327\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-htbkc-215770327\",\"name\":\"workflow-htbkc.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-htbkc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-htbkc\",\"startedAt\":\"2024-01-25T02:47:54Z\",\"finishedAt\":\"2024-01-25T02:48:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":29,\"memory\":295},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-htbkc/workflow-htbkc-model-train-afcf186-215770327/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-htbkc-234026067\",\"name\":\"workflow-htbkc.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-htbkc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-htbkc\",\"startedAt\":\"2024-01-25T02:45:53Z\",\"finishedAt\":\"2024-01-25T02:47:13Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":151,\"memory\":1584},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-htbkc/workflow-htbkc-git-clone-58252975-234026067/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-htbkc-2135362261\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-htbkc-3163545412\",\"name\":\"workflow-htbkc.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-htbkc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-htbkc\",\"startedAt\":\"2024-01-25T02:47:54Z\",\"finishedAt\":\"2024-01-25T02:48:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":29,\"memory\":295},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-htbkc/workflow-htbkc-model-train-7fe21e4-3163545412/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:45:53', '2024-01-25 10:48:26', 'admin', '2024-01-25 10:45:58', 'admin', '2024-01-25 10:50:29', 0); -INSERT INTO `experiment_ins` VALUES (104, 350, 'workflow-7r88w', 'argo', 'Succeeded', '{\"workflow-7r88w\":{\"id\":\"workflow-7r88w\",\"name\":\"workflow-7r88w\",\"displayName\":\"workflow-7r88w\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-7r88w\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T02:53:04Z\",\"finishedAt\":\"2024-01-25T02:55:41Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":220,\"memory\":2300},\"children\":[\"workflow-7r88w-2547179209\"],\"outboundNodes\":[\"workflow-7r88w-3147079874\",\"workflow-7r88w-2341008513\"]},\"model-train-7064f00\":{\"id\":\"workflow-7r88w-1095423067\",\"name\":\"workflow-7r88w.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-7r88w\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7r88w\",\"startedAt\":\"2024-01-25T02:54:26Z\",\"finishedAt\":\"2024-01-25T02:55:00Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":378},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7r88w/workflow-7r88w-model-train-7064f00-1095423067/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7r88w-3147079874\",\"workflow-7r88w-2341008513\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-7r88w-2341008513\",\"name\":\"workflow-7r88w.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-7r88w\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7r88w\",\"startedAt\":\"2024-01-25T02:55:09Z\",\"finishedAt\":\"2024-01-25T02:55:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7r88w/workflow-7r88w-model-train-afcf186-2341008513/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-7r88w-2547179209\",\"name\":\"workflow-7r88w.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-7r88w\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7r88w\",\"startedAt\":\"2024-01-25T02:53:04Z\",\"finishedAt\":\"2024-01-25T02:54:16Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":136,\"memory\":1416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7r88w/workflow-7r88w-git-clone-58252975-2547179209/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-7r88w-1095423067\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-7r88w-3147079874\",\"name\":\"workflow-7r88w.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-7r88w\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-7r88w\",\"startedAt\":\"2024-01-25T02:55:09Z\",\"finishedAt\":\"2024-01-25T02:55:30Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":23,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-7r88w/workflow-7r88w-model-train-7fe21e4-3147079874/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 10:53:04', '2024-01-25 10:55:41', 'admin', '2024-01-25 10:53:08', 'admin', '2024-01-25 10:57:07', 0); -INSERT INTO `experiment_ins` VALUES (105, 350, 'workflow-dqwks', 'argo', 'Succeeded', '{\"workflow-dqwks\":{\"id\":\"workflow-dqwks\",\"name\":\"workflow-dqwks\",\"displayName\":\"workflow-dqwks\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-dqwks\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T03:24:02Z\",\"finishedAt\":\"2024-01-25T03:28:13Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":360,\"memory\":3717},\"children\":[\"workflow-dqwks-2949036025\"],\"outboundNodes\":[\"workflow-dqwks-2403941490\",\"workflow-dqwks-4063487633\"]},\"model-train-7064f00\":{\"id\":\"workflow-dqwks-1595446155\",\"name\":\"workflow-dqwks.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-dqwks\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dqwks\",\"startedAt\":\"2024-01-25T03:26:33Z\",\"finishedAt\":\"2024-01-25T03:27:05Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":40,\"memory\":461},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dqwks/workflow-dqwks-model-train-7064f00-1595446155/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-dqwks-2403941490\",\"workflow-dqwks-4063487633\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-dqwks-2403941490\",\"name\":\"workflow-dqwks.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-dqwks\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dqwks\",\"startedAt\":\"2024-01-25T03:27:12Z\",\"finishedAt\":\"2024-01-25T03:28:06Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":298},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dqwks/workflow-dqwks-model-train-7fe21e4-2403941490/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-dqwks-2949036025\",\"name\":\"workflow-dqwks.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-dqwks\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dqwks\",\"startedAt\":\"2024-01-25T03:24:02Z\",\"finishedAt\":\"2024-01-25T03:26:24Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":253,\"memory\":2621},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dqwks/workflow-dqwks-git-clone-58252975-2949036025/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-dqwks-1595446155\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-dqwks-4063487633\",\"name\":\"workflow-dqwks.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-dqwks\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-dqwks\",\"startedAt\":\"2024-01-25T03:27:12Z\",\"finishedAt\":\"2024-01-25T03:27:56Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":33,\"memory\":337},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-dqwks/workflow-dqwks-model-train-afcf186-4063487633/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 11:24:02', '2024-01-25 11:28:13', 'admin', '2024-01-25 11:24:06', 'admin', '2024-01-25 13:36:43', 0); -INSERT INTO `experiment_ins` VALUES (106, 350, 'workflow-ft8qr', 'argo', 'Succeeded', '{\"workflow-ft8qr\":{\"id\":\"workflow-ft8qr\",\"name\":\"workflow-ft8qr\",\"displayName\":\"workflow-ft8qr\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-ft8qr\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T03:24:05Z\",\"finishedAt\":\"2024-01-25T03:28:44Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":381,\"memory\":3948},\"children\":[\"workflow-ft8qr-2023447360\"],\"outboundNodes\":[\"workflow-ft8qr-3398365577\",\"workflow-ft8qr-4132545750\"]},\"git-clone-58252975\":{\"id\":\"workflow-ft8qr-2023447360\",\"name\":\"workflow-ft8qr.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-ft8qr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ft8qr\",\"startedAt\":\"2024-01-25T03:24:05Z\",\"finishedAt\":\"2024-01-25T03:26:46Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":286,\"memory\":2979},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ft8qr/workflow-ft8qr-git-clone-58252975-2023447360/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ft8qr-5283232\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-ft8qr-3398365577\",\"name\":\"workflow-ft8qr.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-ft8qr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ft8qr\",\"startedAt\":\"2024-01-25T03:27:44Z\",\"finishedAt\":\"2024-01-25T03:28:25Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ft8qr/workflow-ft8qr-model-train-7fe21e4-3398365577/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-ft8qr-4132545750\",\"name\":\"workflow-ft8qr.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-ft8qr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ft8qr\",\"startedAt\":\"2024-01-25T03:27:45Z\",\"finishedAt\":\"2024-01-25T03:28:35Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":29,\"memory\":255},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ft8qr/workflow-ft8qr-model-train-afcf186-4132545750/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-ft8qr-5283232\",\"name\":\"workflow-ft8qr.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-ft8qr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ft8qr\",\"startedAt\":\"2024-01-25T03:26:56Z\",\"finishedAt\":\"2024-01-25T03:27:32Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":40,\"memory\":461},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ft8qr/workflow-ft8qr-model-train-7064f00-5283232/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ft8qr-3398365577\",\"workflow-ft8qr-4132545750\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 11:24:05', '2024-01-25 11:28:44', 'admin', '2024-01-25 11:24:09', 'admin', '2024-01-25 13:36:43', 0); -INSERT INTO `experiment_ins` VALUES (107, 350, 'workflow-mqt8g', 'argo', 'Succeeded', '{\"workflow-mqt8g\":{\"id\":\"workflow-mqt8g\",\"name\":\"workflow-mqt8g\",\"displayName\":\"workflow-mqt8g\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-mqt8g\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:36:50Z\",\"finishedAt\":\"2024-01-25T05:39:28Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":252,\"memory\":2696},\"children\":[\"workflow-mqt8g-4111570102\"],\"outboundNodes\":[\"workflow-mqt8g-1238404583\",\"workflow-mqt8g-2393901448\"]},\"model-train-7064f00\":{\"id\":\"workflow-mqt8g-1188828982\",\"name\":\"workflow-mqt8g.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-mqt8g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mqt8g\",\"startedAt\":\"2024-01-25T05:38:30Z\",\"finishedAt\":\"2024-01-25T05:38:47Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":374},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mqt8g/workflow-mqt8g-model-train-7064f00-1188828982/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-mqt8g-1238404583\",\"workflow-mqt8g-2393901448\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-mqt8g-1238404583\",\"name\":\"workflow-mqt8g.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-mqt8g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mqt8g\",\"startedAt\":\"2024-01-25T05:38:56Z\",\"finishedAt\":\"2024-01-25T05:39:19Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mqt8g/workflow-mqt8g-model-train-7fe21e4-1238404583/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-mqt8g-2393901448\",\"name\":\"workflow-mqt8g.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-mqt8g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mqt8g\",\"startedAt\":\"2024-01-25T05:38:56Z\",\"finishedAt\":\"2024-01-25T05:39:19Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":25,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mqt8g/workflow-mqt8g-model-train-afcf186-2393901448/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-mqt8g-4111570102\",\"name\":\"workflow-mqt8g.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-mqt8g\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-mqt8g\",\"startedAt\":\"2024-01-25T05:36:50Z\",\"finishedAt\":\"2024-01-25T05:38:20Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":173,\"memory\":1816},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-mqt8g/workflow-mqt8g-git-clone-58252975-4111570102/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-mqt8g-1188828982\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-25 13:36:50', '2024-01-25 13:39:28', 'admin', '2024-01-25 13:36:53', 'admin', '2024-01-25 13:40:06', 0); -INSERT INTO `experiment_ins` VALUES (108, 350, 'workflow-vnmjw', 'argo', 'Succeeded', '{\"workflow-vnmjw\":{\"id\":\"workflow-vnmjw\",\"name\":\"workflow-vnmjw\",\"displayName\":\"workflow-vnmjw\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vnmjw\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:37:27Z\",\"finishedAt\":\"2024-01-25T05:41:21Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":378,\"memory\":3968},\"children\":[\"workflow-vnmjw-2923447819\"],\"outboundNodes\":[\"workflow-vnmjw-3753122652\",\"workflow-vnmjw-1179072735\"]},\"model-train-7064f00\":{\"id\":\"workflow-vnmjw-1154341933\",\"name\":\"workflow-vnmjw.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-vnmjw\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vnmjw\",\"startedAt\":\"2024-01-25T05:40:08Z\",\"finishedAt\":\"2024-01-25T05:40:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":378},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vnmjw/workflow-vnmjw-model-train-7064f00-1154341933/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vnmjw-3753122652\",\"workflow-vnmjw-1179072735\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-vnmjw-1179072735\",\"name\":\"workflow-vnmjw.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-vnmjw\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vnmjw\",\"startedAt\":\"2024-01-25T05:40:42Z\",\"finishedAt\":\"2024-01-25T05:41:11Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vnmjw/workflow-vnmjw-model-train-afcf186-1179072735/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-vnmjw-2923447819\",\"name\":\"workflow-vnmjw.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-vnmjw\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vnmjw\",\"startedAt\":\"2024-01-25T05:37:27Z\",\"finishedAt\":\"2024-01-25T05:39:59Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":291,\"memory\":3043},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vnmjw/workflow-vnmjw-git-clone-58252975-2923447819/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vnmjw-1154341933\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-vnmjw-3753122652\",\"name\":\"workflow-vnmjw.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-vnmjw\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vnmjw\",\"startedAt\":\"2024-01-25T05:40:42Z\",\"finishedAt\":\"2024-01-25T05:41:11Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vnmjw/workflow-vnmjw-model-train-7fe21e4-3753122652/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 13:37:27', '2024-01-25 13:41:21', 'admin', '2024-01-25 13:37:30', 'admin', '2024-01-25 13:42:06', 0); -INSERT INTO `experiment_ins` VALUES (109, 350, 'workflow-78c99', 'argo', 'Succeeded', '{\"workflow-78c99\":{\"id\":\"workflow-78c99\",\"name\":\"workflow-78c99\",\"displayName\":\"workflow-78c99\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-78c99\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:37:31Z\",\"finishedAt\":\"2024-01-25T05:40:52Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":342,\"memory\":3685},\"children\":[\"workflow-78c99-3292956409\"],\"outboundNodes\":[\"workflow-78c99-3564902770\",\"workflow-78c99-929481617\"]},\"model-train-7064f00\":{\"id\":\"workflow-78c99-2756407435\",\"name\":\"workflow-78c99.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-78c99\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-78c99\",\"startedAt\":\"2024-01-25T05:39:58Z\",\"finishedAt\":\"2024-01-25T05:40:18Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-78c99/workflow-78c99-model-train-7064f00-2756407435/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-78c99-3564902770\",\"workflow-78c99-929481617\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-78c99-3292956409\",\"name\":\"workflow-78c99.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-78c99\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-78c99\",\"startedAt\":\"2024-01-25T05:37:31Z\",\"finishedAt\":\"2024-01-25T05:39:48Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":264,\"memory\":2766},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-78c99/workflow-78c99-git-clone-58252975-3292956409/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-78c99-2756407435\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-78c99-3564902770\",\"name\":\"workflow-78c99.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-78c99\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-78c99\",\"startedAt\":\"2024-01-25T05:40:28Z\",\"finishedAt\":\"2024-01-25T05:40:50Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":24,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-78c99/workflow-78c99-model-train-7fe21e4-3564902770/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-78c99-929481617\",\"name\":\"workflow-78c99.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-78c99\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-78c99\",\"startedAt\":\"2024-01-25T05:40:32Z\",\"finishedAt\":\"2024-01-25T05:40:50Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":22,\"memory\":251},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-78c99/workflow-78c99-model-train-afcf186-929481617/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 13:37:31', '2024-01-25 13:40:52', 'admin', '2024-01-25 13:37:35', 'admin', '2024-01-25 13:42:06', 0); -INSERT INTO `experiment_ins` VALUES (110, 350, 'workflow-qj4sg', 'argo', 'Succeeded', '{\"workflow-qj4sg\":{\"id\":\"workflow-qj4sg\",\"name\":\"workflow-qj4sg\",\"displayName\":\"workflow-qj4sg\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-qj4sg\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:42:06Z\",\"finishedAt\":\"2024-01-25T05:44:27Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":224,\"memory\":2380},\"children\":[\"workflow-qj4sg-4251976642\"],\"outboundNodes\":[\"workflow-qj4sg-1519523739\",\"workflow-qj4sg-4082536556\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-qj4sg-1519523739\",\"name\":\"workflow-qj4sg.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-qj4sg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-qj4sg\",\"startedAt\":\"2024-01-25T05:43:56Z\",\"finishedAt\":\"2024-01-25T05:44:18Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-qj4sg/workflow-qj4sg-model-train-7fe21e4-1519523739/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-qj4sg-4082536556\",\"name\":\"workflow-qj4sg.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-qj4sg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-qj4sg\",\"startedAt\":\"2024-01-25T05:43:57Z\",\"finishedAt\":\"2024-01-25T05:44:18Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-qj4sg/workflow-qj4sg-model-train-afcf186-4082536556/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-qj4sg-4251976642\",\"name\":\"workflow-qj4sg.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-qj4sg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-qj4sg\",\"startedAt\":\"2024-01-25T05:42:06Z\",\"finishedAt\":\"2024-01-25T05:43:19Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-qj4sg/workflow-qj4sg-git-clone-58252975-4251976642/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-qj4sg-678509234\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-qj4sg-678509234\",\"name\":\"workflow-qj4sg.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-qj4sg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-qj4sg\",\"startedAt\":\"2024-01-25T05:43:29Z\",\"finishedAt\":\"2024-01-25T05:43:47Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":31,\"memory\":376},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-qj4sg/workflow-qj4sg-model-train-7064f00-678509234/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-qj4sg-1519523739\",\"workflow-qj4sg-4082536556\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 13:42:06', '2024-01-25 13:44:27', 'admin', '2024-01-25 13:42:10', 'admin', '2024-01-25 13:46:03', 0); -INSERT INTO `experiment_ins` VALUES (111, 350, 'workflow-rfncr', 'argo', 'Succeeded', '{\"workflow-rfncr\":{\"id\":\"workflow-rfncr\",\"name\":\"workflow-rfncr\",\"displayName\":\"workflow-rfncr\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-rfncr\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:47:00Z\",\"finishedAt\":\"2024-01-25T05:50:02Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":285,\"memory\":2995},\"children\":[\"workflow-rfncr-2769865998\"],\"outboundNodes\":[\"workflow-rfncr-2456496639\",\"workflow-rfncr-2258447440\"]},\"model-train-afcf186\":{\"id\":\"workflow-rfncr-2258447440\",\"name\":\"workflow-rfncr.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-rfncr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-rfncr\",\"startedAt\":\"2024-01-25T05:49:25Z\",\"finishedAt\":\"2024-01-25T05:49:52Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-rfncr/workflow-rfncr-model-train-afcf186-2258447440/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-rfncr-2456496639\",\"name\":\"workflow-rfncr.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-rfncr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-rfncr\",\"startedAt\":\"2024-01-25T05:49:25Z\",\"finishedAt\":\"2024-01-25T05:49:52Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-rfncr/workflow-rfncr-model-train-7fe21e4-2456496639/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-rfncr-2769865998\",\"name\":\"workflow-rfncr.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-rfncr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-rfncr\",\"startedAt\":\"2024-01-25T05:47:00Z\",\"finishedAt\":\"2024-01-25T05:48:44Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":197,\"memory\":2070},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-rfncr/workflow-rfncr-git-clone-58252975-2769865998/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-rfncr-3720831310\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-rfncr-3720831310\",\"name\":\"workflow-rfncr.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-rfncr\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-rfncr\",\"startedAt\":\"2024-01-25T05:48:54Z\",\"finishedAt\":\"2024-01-25T05:49:14Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":34,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-rfncr/workflow-rfncr-model-train-7064f00-3720831310/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-rfncr-2456496639\",\"workflow-rfncr-2258447440\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 13:47:00', '2024-01-25 13:50:02', 'admin', '2024-01-25 13:47:03', 'admin', '2024-01-25 13:50:29', 0); -INSERT INTO `experiment_ins` VALUES (112, 350, 'workflow-ckglm', 'argo', 'Succeeded', '{\"workflow-ckglm\":{\"id\":\"workflow-ckglm\",\"name\":\"workflow-ckglm\",\"displayName\":\"workflow-ckglm\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-ckglm\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:47:09Z\",\"finishedAt\":\"2024-01-25T05:50:26Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":311,\"memory\":3288},\"children\":[\"workflow-ckglm-2927300755\"],\"outboundNodes\":[\"workflow-ckglm-1273585540\",\"workflow-ckglm-3687233175\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-ckglm-1273585540\",\"name\":\"workflow-ckglm.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-ckglm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ckglm\",\"startedAt\":\"2024-01-25T05:49:46Z\",\"finishedAt\":\"2024-01-25T05:50:16Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":28,\"memory\":294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ckglm/workflow-ckglm-model-train-7fe21e4-1273585540/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-ckglm-2927300755\",\"name\":\"workflow-ckglm.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-ckglm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ckglm\",\"startedAt\":\"2024-01-25T05:47:09Z\",\"finishedAt\":\"2024-01-25T05:49:09Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":224,\"memory\":2324},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ckglm/workflow-ckglm-git-clone-58252975-2927300755/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ckglm-4284275221\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-ckglm-3687233175\",\"name\":\"workflow-ckglm.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-ckglm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ckglm\",\"startedAt\":\"2024-01-25T05:49:52Z\",\"finishedAt\":\"2024-01-25T05:50:16Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":27,\"memory\":254},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ckglm/workflow-ckglm-model-train-afcf186-3687233175/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-ckglm-4284275221\",\"name\":\"workflow-ckglm.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-ckglm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ckglm\",\"startedAt\":\"2024-01-25T05:49:19Z\",\"finishedAt\":\"2024-01-25T05:49:37Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":32,\"memory\":416},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ckglm/workflow-ckglm-model-train-7064f00-4284275221/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ckglm-1273585540\",\"workflow-ckglm-3687233175\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 13:47:09', '2024-01-25 13:50:26', 'admin', '2024-01-25 13:47:13', 'admin', '2024-01-25 13:50:31', 0); -INSERT INTO `experiment_ins` VALUES (113, 350, 'workflow-rmcbc', 'argo', NULL, NULL, NULL, NULL, NULL, 'admin', '2024-01-25 13:50:41', 'admin', '2024-01-25 13:50:41', 0); -INSERT INTO `experiment_ins` VALUES (114, 350, 'workflow-6k8s8', 'argo', 'Succeeded', '{\"workflow-6k8s8\":{\"id\":\"workflow-6k8s8\",\"name\":\"workflow-6k8s8\",\"displayName\":\"workflow-6k8s8\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-6k8s8\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:50:43Z\",\"finishedAt\":\"2024-01-25T05:53:38Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":332,\"memory\":3485},\"children\":[\"workflow-6k8s8-3557261561\"],\"outboundNodes\":[\"workflow-6k8s8-2705696626\",\"workflow-6k8s8-70275473\"]},\"model-train-7064f00\":{\"id\":\"workflow-6k8s8-1897201291\",\"name\":\"workflow-6k8s8.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-6k8s8\",\"phase\":\"Skipped\",\"boundaryID\":\"workflow-6k8s8\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T05:53:38Z\",\"finishedAt\":\"2024-01-25T05:53:38Z\",\"progress\":\"1/1\",\"children\":[\"workflow-6k8s8-2705696626\",\"workflow-6k8s8-70275473\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-6k8s8-2705696626\",\"name\":\"workflow-6k8s8.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-6k8s8\",\"phase\":\"Skipped\",\"boundaryID\":\"workflow-6k8s8\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T05:53:38Z\",\"finishedAt\":\"2024-01-25T05:53:38Z\",\"progress\":\"1/1\"},\"git-clone-58252975\":{\"id\":\"workflow-6k8s8-3557261561\",\"name\":\"workflow-6k8s8.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-6k8s8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-6k8s8\",\"startedAt\":\"2024-01-25T05:50:43Z\",\"finishedAt\":\"2024-01-25T05:53:34Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":332,\"memory\":3485},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-6k8s8/workflow-6k8s8-git-clone-58252975-3557261561/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-6k8s8-1897201291\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-6k8s8-70275473\",\"name\":\"workflow-6k8s8.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-6k8s8\",\"phase\":\"Skipped\",\"boundaryID\":\"workflow-6k8s8\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T05:53:38Z\",\"finishedAt\":\"2024-01-25T05:53:38Z\",\"progress\":\"1/1\"}}', NULL, '2024-01-25 13:50:43', '2024-01-25 13:53:38', 'admin', '2024-01-25 13:50:46', 'admin', '2024-01-25 13:55:11', 0); -INSERT INTO `experiment_ins` VALUES (115, 350, 'workflow-zkxgq', 'argo', 'Failed', '{\"workflow-zkxgq\":{\"id\":\"workflow-zkxgq\",\"name\":\"workflow-zkxgq\",\"displayName\":\"workflow-zkxgq\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-zkxgq\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-25T05:51:35Z\",\"finishedAt\":\"2024-01-25T05:53:15Z\",\"progress\":\"0/1\",\"children\":[\"workflow-zkxgq-2794765560\"],\"outboundNodes\":[\"workflow-zkxgq-1048252129\",\"workflow-zkxgq-3994576638\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-zkxgq-1048252129\",\"name\":\"workflow-zkxgq.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-zkxgq\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-zkxgq\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:15Z\",\"finishedAt\":\"2024-01-25T05:53:15Z\"},\"model-train-7064f00\":{\"id\":\"workflow-zkxgq-2684848184\",\"name\":\"workflow-zkxgq.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Skipped\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-zkxgq\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-zkxgq\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:15Z\",\"finishedAt\":\"2024-01-25T05:53:15Z\",\"children\":[\"workflow-zkxgq-1048252129\",\"workflow-zkxgq-3994576638\"]},\"git-clone-58252975\":{\"id\":\"workflow-zkxgq-2794765560\",\"name\":\"workflow-zkxgq.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-zkxgq\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-zkxgq\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T05:51:35Z\",\"finishedAt\":\"2024-01-25T05:53:15Z\",\"progress\":\"0/1\",\"children\":[\"workflow-zkxgq-2684848184\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-zkxgq-3994576638\",\"name\":\"workflow-zkxgq.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-zkxgq\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-zkxgq\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:15Z\",\"finishedAt\":\"2024-01-25T05:53:15Z\"}}', NULL, '2024-01-25 13:51:35', '2024-01-25 13:53:15', 'admin', '2024-01-25 13:51:38', 'admin', '2024-01-25 13:55:11', 0); -INSERT INTO `experiment_ins` VALUES (116, 350, 'workflow-brcnp', 'argo', 'Failed', '{\"workflow-brcnp\":{\"id\":\"workflow-brcnp\",\"name\":\"workflow-brcnp\",\"displayName\":\"workflow-brcnp\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-brcnp\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-25T05:51:52Z\",\"finishedAt\":\"2024-01-25T05:53:30Z\",\"progress\":\"0/1\",\"children\":[\"workflow-brcnp-296225742\"],\"outboundNodes\":[\"workflow-brcnp-3042073023\",\"workflow-brcnp-3224460944\"]},\"git-clone-58252975\":{\"id\":\"workflow-brcnp-296225742\",\"name\":\"workflow-brcnp.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-brcnp\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-brcnp\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T05:51:52Z\",\"finishedAt\":\"2024-01-25T05:53:30Z\",\"progress\":\"0/1\",\"children\":[\"workflow-brcnp-4096467982\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-brcnp-3042073023\",\"name\":\"workflow-brcnp.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-brcnp\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-brcnp\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:30Z\",\"finishedAt\":\"2024-01-25T05:53:30Z\"},\"model-train-afcf186\":{\"id\":\"workflow-brcnp-3224460944\",\"name\":\"workflow-brcnp.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-brcnp\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-brcnp\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:30Z\",\"finishedAt\":\"2024-01-25T05:53:30Z\"},\"model-train-7064f00\":{\"id\":\"workflow-brcnp-4096467982\",\"name\":\"workflow-brcnp.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Skipped\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-brcnp\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-brcnp\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:30Z\",\"finishedAt\":\"2024-01-25T05:53:30Z\",\"children\":[\"workflow-brcnp-3042073023\",\"workflow-brcnp-3224460944\"]}}', NULL, '2024-01-25 13:51:52', '2024-01-25 13:53:30', 'admin', '2024-01-25 13:51:56', 'admin', '2024-01-25 13:55:11', 0); -INSERT INTO `experiment_ins` VALUES (117, 350, 'workflow-vr5dh', 'argo', 'Failed', '{\"workflow-vr5dh\":{\"id\":\"workflow-vr5dh\",\"name\":\"workflow-vr5dh\",\"displayName\":\"workflow-vr5dh\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vr5dh\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-25T05:52:12Z\",\"finishedAt\":\"2024-01-25T05:53:06Z\",\"progress\":\"0/1\",\"children\":[\"workflow-vr5dh-1517797082\"],\"outboundNodes\":[\"workflow-vr5dh-277203731\",\"workflow-vr5dh-992666932\"]},\"git-clone-58252975\":{\"id\":\"workflow-vr5dh-1517797082\",\"name\":\"workflow-vr5dh.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-vr5dh\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-vr5dh\",\"message\":\"workflow shutdown with strategy: Terminate\",\"startedAt\":\"2024-01-25T05:52:12Z\",\"finishedAt\":\"2024-01-25T05:53:06Z\",\"progress\":\"0/1\",\"children\":[\"workflow-vr5dh-3104224298\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-vr5dh-277203731\",\"name\":\"workflow-vr5dh.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Skipped\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-vr5dh\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-vr5dh\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:06Z\",\"finishedAt\":\"2024-01-25T05:53:06Z\"},\"model-train-7064f00\":{\"id\":\"workflow-vr5dh-3104224298\",\"name\":\"workflow-vr5dh.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Skipped\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-vr5dh\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-vr5dh\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:06Z\",\"finishedAt\":\"2024-01-25T05:53:06Z\",\"children\":[\"workflow-vr5dh-277203731\",\"workflow-vr5dh-992666932\"]},\"model-train-afcf186\":{\"id\":\"workflow-vr5dh-992666932\",\"name\":\"workflow-vr5dh.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Skipped\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-vr5dh\",\"phase\":\"Omitted\",\"boundaryID\":\"workflow-vr5dh\",\"message\":\"omitted: depends condition not met\",\"startedAt\":\"2024-01-25T05:53:06Z\",\"finishedAt\":\"2024-01-25T05:53:06Z\"}}', NULL, '2024-01-25 13:52:12', '2024-01-25 13:53:06', 'admin', '2024-01-25 13:52:16', 'admin', '2024-01-25 13:55:11', 0); -INSERT INTO `experiment_ins` VALUES (118, 352, 'workflow-sw6wg', 'argo', 'Succeeded', '{\"workflow-sw6wg\":{\"id\":\"workflow-sw6wg\",\"name\":\"workflow-sw6wg\",\"displayName\":\"workflow-sw6wg\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-sw6wg\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T05:59:47Z\",\"finishedAt\":\"2024-01-25T06:02:19Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":229,\"memory\":2443},\"children\":[\"workflow-sw6wg-104437897\"],\"outboundNodes\":[\"workflow-sw6wg-1494769026\",\"workflow-sw6wg-3907051969\"]},\"git-clone-58252975\":{\"id\":\"workflow-sw6wg-104437897\",\"name\":\"workflow-sw6wg.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-sw6wg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sw6wg\",\"startedAt\":\"2024-01-25T05:59:47Z\",\"finishedAt\":\"2024-01-25T06:01:12Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":149,\"memory\":1563},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sw6wg/workflow-sw6wg-git-clone-58252975-104437897/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-sw6wg-3994173979\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-sw6wg-1494769026\",\"name\":\"workflow-sw6wg.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-sw6wg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sw6wg\",\"startedAt\":\"2024-01-25T06:01:49Z\",\"finishedAt\":\"2024-01-25T06:02:09Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":26,\"memory\":253},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sw6wg/workflow-sw6wg-model-train-7fe21e4-1494769026/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-sw6wg-3907051969\",\"name\":\"workflow-sw6wg.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-sw6wg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sw6wg\",\"startedAt\":\"2024-01-25T06:01:49Z\",\"finishedAt\":\"2024-01-25T06:02:09Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":24,\"memory\":252},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sw6wg/workflow-sw6wg-model-train-afcf186-3907051969/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-sw6wg-3994173979\",\"name\":\"workflow-sw6wg.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-sw6wg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sw6wg\",\"startedAt\":\"2024-01-25T06:01:22Z\",\"finishedAt\":\"2024-01-25T06:01:39Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":375},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sw6wg/workflow-sw6wg-model-train-7064f00-3994173979/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-sw6wg-1494769026\",\"workflow-sw6wg-3907051969\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 13:59:47', '2024-01-25 14:02:19', 'admin', '2024-01-25 13:59:51', 'admin', '2024-01-25 14:02:58', 0); -INSERT INTO `experiment_ins` VALUES (119, 350, 'workflow-4s5r7', 'argo', 'Succeeded', '{\"workflow-4s5r7\":{\"id\":\"workflow-4s5r7\",\"name\":\"workflow-4s5r7\",\"displayName\":\"workflow-4s5r7\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-4s5r7\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T07:15:40Z\",\"finishedAt\":\"2024-01-25T07:18:03Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":230,\"memory\":2483},\"children\":[\"workflow-4s5r7-1705436390\"],\"outboundNodes\":[\"workflow-4s5r7-493294935\",\"workflow-4s5r7-1963261272\"]},\"model-train-7064f00\":{\"id\":\"workflow-4s5r7-1569408806\",\"name\":\"workflow-4s5r7.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-4s5r7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-4s5r7\",\"startedAt\":\"2024-01-25T07:17:03Z\",\"finishedAt\":\"2024-01-25T07:17:23Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":33,\"memory\":417},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-4s5r7/workflow-4s5r7-model-train-7064f00-1569408806/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-4s5r7-493294935\",\"workflow-4s5r7-1963261272\"],\"hostNodeName\":\"k8s-master-01\"},\"git-clone-58252975\":{\"id\":\"workflow-4s5r7-1705436390\",\"name\":\"workflow-4s5r7.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-4s5r7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-4s5r7\",\"startedAt\":\"2024-01-25T07:15:40Z\",\"finishedAt\":\"2024-01-25T07:16:53Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":137,\"memory\":1436},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-4s5r7/workflow-4s5r7-git-clone-58252975-1705436390/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-4s5r7-1569408806\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-4s5r7-1963261272\",\"name\":\"workflow-4s5r7.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-4s5r7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-4s5r7\",\"startedAt\":\"2024-01-25T07:17:32Z\",\"finishedAt\":\"2024-01-25T07:17:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":335},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-4s5r7/workflow-4s5r7-model-train-afcf186-1963261272/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-4s5r7-493294935\",\"name\":\"workflow-4s5r7.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-4s5r7\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-4s5r7\",\"startedAt\":\"2024-01-25T07:17:32Z\",\"finishedAt\":\"2024-01-25T07:17:54Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":30,\"memory\":295},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-4s5r7/workflow-4s5r7-model-train-7fe21e4-493294935/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 15:15:40', '2024-01-25 15:18:03', 'admin', '2024-01-25 15:15:44', 'admin', '2024-01-25 15:18:45', 0); -INSERT INTO `experiment_ins` VALUES (120, 352, 'workflow-fqslt', 'argo', 'Succeeded', '{\"workflow-fqslt\":{\"id\":\"workflow-fqslt\",\"name\":\"workflow-fqslt\",\"displayName\":\"workflow-fqslt\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-fqslt\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T07:59:30Z\",\"finishedAt\":\"2024-01-25T08:02:41Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":288,\"memory\":3195},\"children\":[\"workflow-fqslt-1761107197\"],\"outboundNodes\":[\"workflow-fqslt-2761642430\",\"workflow-fqslt-1044050685\"]},\"model-train-afcf186\":{\"id\":\"workflow-fqslt-1044050685\",\"name\":\"workflow-fqslt.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-fqslt\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fqslt\",\"startedAt\":\"2024-01-25T08:02:06Z\",\"finishedAt\":\"2024-01-25T08:02:31Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":40,\"memory\":461},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fqslt/workflow-fqslt-model-train-afcf186-1044050685/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"git-clone-58252975\":{\"id\":\"workflow-fqslt-1761107197\",\"name\":\"workflow-fqslt.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-fqslt\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fqslt\",\"startedAt\":\"2024-01-25T07:59:30Z\",\"finishedAt\":\"2024-01-25T08:01:17Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":161,\"memory\":1689},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fqslt/workflow-fqslt-git-clone-58252975-1761107197/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-fqslt-3233673359\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-fqslt-2761642430\",\"name\":\"workflow-fqslt.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-fqslt\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fqslt\",\"startedAt\":\"2024-01-25T08:02:06Z\",\"finishedAt\":\"2024-01-25T08:02:31Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":40,\"memory\":461},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fqslt/workflow-fqslt-model-train-7fe21e4-2761642430/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-fqslt-3233673359\",\"name\":\"workflow-fqslt.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-fqslt\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-fqslt\",\"startedAt\":\"2024-01-25T08:01:27Z\",\"finishedAt\":\"2024-01-25T08:01:56Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":47,\"memory\":584},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-fqslt/workflow-fqslt-model-train-7064f00-3233673359/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-fqslt-2761642430\",\"workflow-fqslt-1044050685\"],\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-25 15:59:30', '2024-01-25 16:02:41', 'admin', '2024-01-25 15:59:35', 'admin', '2024-01-25 16:02:51', 0); -INSERT INTO `experiment_ins` VALUES (121, 352, 'workflow-nmbdt', 'argo', NULL, NULL, NULL, NULL, NULL, 'admin', '2024-01-25 16:41:12', 'admin', '2024-01-25 16:41:12', 0); -INSERT INTO `experiment_ins` VALUES (122, 353, 'workflow-w74jm', 'argo', 'Succeeded', '{\"workflow-w74jm\":{\"id\":\"workflow-w74jm\",\"name\":\"workflow-w74jm\",\"displayName\":\"workflow-w74jm\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-w74jm\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T08:45:54Z\",\"finishedAt\":\"2024-01-25T08:52:14Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":754,\"memory\":8435},\"children\":[\"workflow-w74jm-2903569918\"],\"outboundNodes\":[\"workflow-w74jm-2430761199\",\"workflow-w74jm-750502496\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-w74jm-2430761199\",\"name\":\"workflow-w74jm.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-w74jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w74jm\",\"startedAt\":\"2024-01-25T08:51:01Z\",\"finishedAt\":\"2024-01-25T08:52:05Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":94,\"memory\":1210},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w74jm/workflow-w74jm-model-train-7fe21e4-2430761199/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"git-clone-58252975\":{\"id\":\"workflow-w74jm-2903569918\",\"name\":\"workflow-w74jm.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-w74jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w74jm\",\"startedAt\":\"2024-01-25T08:45:54Z\",\"finishedAt\":\"2024-01-25T08:50:04Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":490,\"memory\":5134},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w74jm/workflow-w74jm-git-clone-58252975-2903569918/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-w74jm-444218750\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-w74jm-444218750\",\"name\":\"workflow-w74jm.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-w74jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w74jm\",\"startedAt\":\"2024-01-25T08:50:13Z\",\"finishedAt\":\"2024-01-25T08:50:57Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":68,\"memory\":797},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w74jm/workflow-w74jm-model-train-7064f00-444218750/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-w74jm-2430761199\",\"workflow-w74jm-750502496\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-w74jm-750502496\",\"name\":\"workflow-w74jm.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-w74jm\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-w74jm\",\"startedAt\":\"2024-01-25T08:51:01Z\",\"finishedAt\":\"2024-01-25T08:52:09Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":102,\"memory\":1294},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-w74jm/workflow-w74jm-model-train-afcf186-750502496/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-25 16:45:54', '2024-01-25 16:52:14', 'admin', '2024-01-25 16:45:58', 'admin', '2024-01-25 16:57:39', 1); -INSERT INTO `experiment_ins` VALUES (123, 353, 'workflow-h2sq8', 'argo', 'Succeeded', '{\"workflow-h2sq8\":{\"id\":\"workflow-h2sq8\",\"name\":\"workflow-h2sq8\",\"displayName\":\"workflow-h2sq8\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-h2sq8\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T08:45:59Z\",\"finishedAt\":\"2024-01-25T08:51:37Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":619,\"memory\":6523},\"children\":[\"workflow-h2sq8-1791671521\"],\"outboundNodes\":[\"workflow-h2sq8-47995738\",\"workflow-h2sq8-90470473\"]},\"git-clone-58252975\":{\"id\":\"workflow-h2sq8-1791671521\",\"name\":\"workflow-h2sq8.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-h2sq8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-h2sq8\",\"startedAt\":\"2024-01-25T08:45:59Z\",\"finishedAt\":\"2024-01-25T08:49:42Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":432,\"memory\":4541},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-h2sq8/workflow-h2sq8-git-clone-58252975-1791671521/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-h2sq8-834663603\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-h2sq8-47995738\",\"name\":\"workflow-h2sq8.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-h2sq8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-h2sq8\",\"startedAt\":\"2024-01-25T08:50:34Z\",\"finishedAt\":\"2024-01-25T08:51:31Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":87,\"memory\":1007},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-h2sq8/workflow-h2sq8-model-train-7fe21e4-47995738/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-h2sq8-834663603\",\"name\":\"workflow-h2sq8.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-h2sq8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-h2sq8\",\"startedAt\":\"2024-01-25T08:49:52Z\",\"finishedAt\":\"2024-01-25T08:50:23Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":54,\"memory\":669},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-h2sq8/workflow-h2sq8-model-train-7064f00-834663603/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-h2sq8-47995738\",\"workflow-h2sq8-90470473\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-h2sq8-90470473\",\"name\":\"workflow-h2sq8.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-h2sq8\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-h2sq8\",\"startedAt\":\"2024-01-25T08:50:34Z\",\"finishedAt\":\"2024-01-25T08:51:28Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":46,\"memory\":306},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-h2sq8/workflow-h2sq8-model-train-afcf186-90470473/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 16:45:59', '2024-01-25 16:51:37', 'admin', '2024-01-25 16:46:04', 'admin', '2024-01-25 16:57:39', 1); -INSERT INTO `experiment_ins` VALUES (124, 353, 'workflow-2mbxc', 'argo', 'Succeeded', '{\"workflow-2mbxc\":{\"id\":\"workflow-2mbxc\",\"name\":\"workflow-2mbxc\",\"displayName\":\"workflow-2mbxc\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-2mbxc\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T08:46:02Z\",\"finishedAt\":\"2024-01-25T08:54:20Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":1023,\"memory\":11443},\"children\":[\"workflow-2mbxc-3560092551\"],\"outboundNodes\":[\"workflow-2mbxc-2191770720\",\"workflow-2mbxc-398510883\"]},\"model-train-7064f00\":{\"id\":\"workflow-2mbxc-1531295401\",\"name\":\"workflow-2mbxc.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-2mbxc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2mbxc\",\"startedAt\":\"2024-01-25T08:51:40Z\",\"finishedAt\":\"2024-01-25T08:52:31Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":44,\"memory\":503},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2mbxc/workflow-2mbxc-model-train-7064f00-1531295401/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-2mbxc-2191770720\",\"workflow-2mbxc-398510883\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-2mbxc-2191770720\",\"name\":\"workflow-2mbxc.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-2mbxc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2mbxc\",\"startedAt\":\"2024-01-25T08:52:41Z\",\"finishedAt\":\"2024-01-25T08:54:10Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":180,\"memory\":2296},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2mbxc/workflow-2mbxc-model-train-7fe21e4-2191770720/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"git-clone-58252975\":{\"id\":\"workflow-2mbxc-3560092551\",\"name\":\"workflow-2mbxc.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-2mbxc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2mbxc\",\"startedAt\":\"2024-01-25T08:46:02Z\",\"finishedAt\":\"2024-01-25T08:51:27Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":619,\"memory\":6348},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2mbxc/workflow-2mbxc-git-clone-58252975-3560092551/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-2mbxc-1531295401\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-2mbxc-398510883\",\"name\":\"workflow-2mbxc.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-2mbxc\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-2mbxc\",\"startedAt\":\"2024-01-25T08:52:41Z\",\"finishedAt\":\"2024-01-25T08:54:10Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":180,\"memory\":2296},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-2mbxc/workflow-2mbxc-model-train-afcf186-398510883/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-25 16:46:02', '2024-01-25 16:54:20', 'admin', '2024-01-25 16:46:07', 'admin', '2024-01-25 16:57:37', 1); -INSERT INTO `experiment_ins` VALUES (125, 353, 'workflow-sclzg', 'argo', 'Succeeded', '{\"workflow-sclzg\":{\"id\":\"workflow-sclzg\",\"name\":\"workflow-sclzg\",\"displayName\":\"workflow-sclzg\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-sclzg\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T08:46:05Z\",\"finishedAt\":\"2024-01-25T08:54:55Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":950,\"memory\":10445},\"children\":[\"workflow-sclzg-2379994644\"],\"outboundNodes\":[\"workflow-sclzg-4170858565\",\"workflow-sclzg-2010131202\"]},\"model-train-afcf186\":{\"id\":\"workflow-sclzg-2010131202\",\"name\":\"workflow-sclzg.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-sclzg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sclzg\",\"startedAt\":\"2024-01-25T08:53:02Z\",\"finishedAt\":\"2024-01-25T08:54:45Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":148,\"memory\":1880},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sclzg/workflow-sclzg-model-train-afcf186-2010131202/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"git-clone-58252975\":{\"id\":\"workflow-sclzg-2379994644\",\"name\":\"workflow-sclzg.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-sclzg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sclzg\",\"startedAt\":\"2024-01-25T08:46:05Z\",\"finishedAt\":\"2024-01-25T08:51:39Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":646,\"memory\":6761},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sclzg/workflow-sclzg-git-clone-58252975-2379994644/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-sclzg-2719661156\"],\"hostNodeName\":\"k8s-master-01\"},\"model-train-7064f00\":{\"id\":\"workflow-sclzg-2719661156\",\"name\":\"workflow-sclzg.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-sclzg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sclzg\",\"startedAt\":\"2024-01-25T08:51:45Z\",\"finishedAt\":\"2024-01-25T08:52:52Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":117,\"memory\":1542},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sclzg/workflow-sclzg-model-train-7064f00-2719661156/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-sclzg-4170858565\",\"workflow-sclzg-2010131202\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-sclzg-4170858565\",\"name\":\"workflow-sclzg.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-sclzg\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-sclzg\",\"startedAt\":\"2024-01-25T08:53:02Z\",\"finishedAt\":\"2024-01-25T08:53:59Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":39,\"memory\":262},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-sclzg/workflow-sclzg-model-train-7fe21e4-4170858565/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 16:46:05', '2024-01-25 16:54:55', 'admin', '2024-01-25 16:46:10', 'admin', '2024-01-25 16:57:37', 1); -INSERT INTO `experiment_ins` VALUES (126, 353, 'workflow-bzk7k', 'argo', 'Succeeded', '{\"workflow-bzk7k\":{\"id\":\"workflow-bzk7k\",\"name\":\"workflow-bzk7k\",\"displayName\":\"workflow-bzk7k\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-bzk7k\",\"phase\":\"Succeeded\",\"startedAt\":\"2024-01-25T08:46:09Z\",\"finishedAt\":\"2024-01-25T08:54:52Z\",\"progress\":\"4/4\",\"resourcesDuration\":{\"cpu\":892,\"memory\":9675},\"children\":[\"workflow-bzk7k-2385632250\"],\"outboundNodes\":[\"workflow-bzk7k-1130390195\",\"workflow-bzk7k-1636016724\"]},\"model-train-7fe21e4\":{\"id\":\"workflow-bzk7k-1130390195\",\"name\":\"workflow-bzk7k.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-bzk7k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bzk7k\",\"startedAt\":\"2024-01-25T08:52:58Z\",\"finishedAt\":\"2024-01-25T08:53:44Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":40,\"memory\":421},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bzk7k/workflow-bzk7k-model-train-7fe21e4-1130390195/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-master-01\"},\"model-train-afcf186\":{\"id\":\"workflow-bzk7k-1636016724\",\"name\":\"workflow-bzk7k.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-bzk7k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bzk7k\",\"startedAt\":\"2024-01-25T08:52:58Z\",\"finishedAt\":\"2024-01-25T08:54:42Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":159,\"memory\":2046},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bzk7k/workflow-bzk7k-model-train-afcf186-1636016724/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"},\"git-clone-58252975\":{\"id\":\"workflow-bzk7k-2385632250\",\"name\":\"workflow-bzk7k.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-bzk7k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bzk7k\",\"startedAt\":\"2024-01-25T08:46:09Z\",\"finishedAt\":\"2024-01-25T08:51:41Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":646,\"memory\":6742},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bzk7k/workflow-bzk7k-git-clone-58252975-2385632250/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bzk7k-515135690\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-7064f00\":{\"id\":\"workflow-bzk7k-515135690\",\"name\":\"workflow-bzk7k.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-bzk7k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-bzk7k\",\"startedAt\":\"2024-01-25T08:51:50Z\",\"finishedAt\":\"2024-01-25T08:52:45Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":47,\"memory\":466},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-bzk7k/workflow-bzk7k-model-train-7064f00-515135690/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-bzk7k-1130390195\",\"workflow-bzk7k-1636016724\"],\"hostNodeName\":\"k8s-master-01\"}}', NULL, '2024-01-25 16:46:09', '2024-01-25 16:54:52', 'admin', '2024-01-25 16:46:14', 'admin', '2024-01-25 16:57:36', 1); -INSERT INTO `experiment_ins` VALUES (127, 354, 'workflow-nxg8k', 'argo', 'Failed', '{\"workflow-nxg8k\":{\"id\":\"workflow-nxg8k\",\"name\":\"workflow-nxg8k\",\"displayName\":\"workflow-nxg8k\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-nxg8k\",\"phase\":\"Failed\",\"startedAt\":\"2024-01-25T08:57:25Z\",\"finishedAt\":\"2024-01-25T09:01:18Z\",\"progress\":\"3/4\",\"resourcesDuration\":{\"cpu\":376,\"memory\":4105},\"children\":[\"workflow-nxg8k-3569437117\"],\"outboundNodes\":[\"workflow-nxg8k-418598526\",\"workflow-nxg8k-399472701\"]},\"model-train-7064f00\":{\"id\":\"workflow-nxg8k-3487187791\",\"name\":\"workflow-nxg8k.model-train-7064f00\",\"displayName\":\"model-train-7064f00\",\"type\":\"Pod\",\"templateName\":\"model-train-7064f00\",\"templateScope\":\"local/workflow-nxg8k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nxg8k\",\"startedAt\":\"2024-01-25T08:59:42Z\",\"finishedAt\":\"2024-01-25T09:00:20Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":70,\"memory\":877},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nxg8k/workflow-nxg8k-model-train-7064f00-3487187791/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nxg8k-418598526\",\"workflow-nxg8k-399472701\"],\"hostNodeName\":\"k8s-node-01\"},\"git-clone-58252975\":{\"id\":\"workflow-nxg8k-3569437117\",\"name\":\"workflow-nxg8k.git-clone-58252975\",\"displayName\":\"git-clone-58252975\",\"type\":\"Pod\",\"templateName\":\"git-clone-58252975\",\"templateScope\":\"local/workflow-nxg8k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nxg8k\",\"startedAt\":\"2024-01-25T08:57:25Z\",\"finishedAt\":\"2024-01-25T08:59:33Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":233,\"memory\":2430},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nxg8k/workflow-nxg8k-git-clone-58252975-3569437117/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-nxg8k-3487187791\"],\"hostNodeName\":\"k8s-node-01\"},\"model-train-afcf186\":{\"id\":\"workflow-nxg8k-399472701\",\"name\":\"workflow-nxg8k.model-train-afcf186\",\"displayName\":\"model-train-afcf186\",\"type\":\"Pod\",\"templateName\":\"model-train-afcf186\",\"templateScope\":\"local/workflow-nxg8k\",\"phase\":\"Failed\",\"boundaryID\":\"workflow-nxg8k\",\"message\":\"Error (exit code 2)\",\"startedAt\":\"2024-01-25T09:00:30Z\",\"finishedAt\":\"2024-01-25T09:00:51Z\",\"progress\":\"0/1\",\"resourcesDuration\":{\"cpu\":10,\"memory\":45},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nxg8k/workflow-nxg8k-model-train-afcf186-399472701/main.log\"}}],\"exitCode\":\"2\"},\"hostNodeName\":\"k8s-node-01\"},\"model-train-7fe21e4\":{\"id\":\"workflow-nxg8k-418598526\",\"name\":\"workflow-nxg8k.model-train-7fe21e4\",\"displayName\":\"model-train-7fe21e4\",\"type\":\"Pod\",\"templateName\":\"model-train-7fe21e4\",\"templateScope\":\"local/workflow-nxg8k\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-nxg8k\",\"startedAt\":\"2024-01-25T09:00:30Z\",\"finishedAt\":\"2024-01-25T09:01:08Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":63,\"memory\":753},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-nxg8k/workflow-nxg8k-model-train-7fe21e4-418598526/main.log\"}}],\"exitCode\":\"0\"},\"hostNodeName\":\"k8s-node-01\"}}', NULL, '2024-01-25 16:57:25', '2024-01-25 17:01:18', 'admin', '2024-01-25 16:57:30', 'admin', '2024-01-25 17:01:29', 1); -- ---------------------------- -- Table structure for gen_table @@ -385,7 +294,7 @@ CREATE TABLE `gen_table` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`table_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成业务表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成业务表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of gen_table @@ -419,12 +328,62 @@ CREATE TABLE `gen_table_column` ( `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`column_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成业务表字段' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成业务表字段' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of gen_table_column -- ---------------------------- +-- ---------------------------- +-- Table structure for image +-- ---------------------------- +DROP TABLE IF EXISTS `image`; +CREATE TABLE `image` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像名称', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像描述', + `image_type` int(11) NULL DEFAULT NULL COMMENT '镜像类型', + `create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `state` int(11) NULL DEFAULT NULL COMMENT '状态,0失效,1生效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of image +-- ---------------------------- +INSERT INTO `image` VALUES (7, 'pytorch:1.9.8', '镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像', NULL, 'admin', '2024-03-06 14:42:05', 'admin', '2024-03-06 15:08:04', 1); +INSERT INTO `image` VALUES (8, 'pytorch:1.9.8', '镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像', NULL, 'admin', '2024-03-06 14:56:36', 'admin', '2024-03-06 15:08:12', 1); +INSERT INTO `image` VALUES (9, 'pytorch:1.9.7', 'ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本', NULL, 'admin', '2024-03-06 14:56:41', 'admin', '2024-03-06 14:56:41', 1); +INSERT INTO `image` VALUES (10, 'pytorch:1.9.8', 'ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本', NULL, 'admin', '2024-03-06 14:56:44', 'admin', '2024-03-06 14:56:44', 1); +INSERT INTO `image` VALUES (11, 'pytorch:1.9.9', '镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像', NULL, 'admin', '2024-03-07 15:13:18', 'admin', '2024-03-07 15:13:18', 1); + +-- ---------------------------- +-- Table structure for image_version +-- ---------------------------- +DROP TABLE IF EXISTS `image_version`; +CREATE TABLE `image_version` ( + `id` int(11) NOT NULL COMMENT '主键', + `image_id` int(11) NULL DEFAULT NULL COMMENT '对应的镜像id', + `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像版本', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像推送地址', + `tag_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像tag名称', + `file_size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像文件大小', + `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像构建状态', + `create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `state` int(11) NULL DEFAULT NULL COMMENT '状态,0失效,1生效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of image_version +-- ---------------------------- + -- ---------------------------- -- Table structure for models -- ---------------------------- @@ -432,72 +391,52 @@ DROP TABLE IF EXISTS `models`; CREATE TABLE `models` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `model_type` int(11) NULL DEFAULT NULL, + `available_range` int(11) NULL DEFAULT NULL COMMENT '1公开,0私有', + `model_type` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '模型类别', + `model_tag` int(11) NULL DEFAULT NULL COMMENT '模型tag', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', + `state` int(11) NULL DEFAULT 1 COMMENT '0,失效 1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of models -- ---------------------------- -INSERT INTO `models` VALUES (1, 'start_workflow.json', NULL, NULL, 'models/苏影城/start_workflow.json', NULL, '苏影城', '2023-12-26 16:10:39', '苏影城', '2023-12-26 16:10:39', 0); -INSERT INTO `models` VALUES (2, 'package-lock.json', 'v2.0', '计算机视觉手写体识别mnist数据集 二次修改', 'models/苏影城/package-lock.json-20231227-135255/workspace.postman_globals.json', NULL, '苏影城', '2023-12-28 13:58:49', 'admin', '2023-12-28 13:58:49', 1); -INSERT INTO `models` VALUES (3, 'mnist', 'v1.0', '计算机视觉手写体识别模型修改版', NULL, 1, 'admin', '2023-12-28 14:16:34', 'admin', '2023-12-28 14:16:34', 1); -INSERT INTO `models` VALUES (4, 'mnist', 'v1.0', '计算机视觉手写体识别模型修改版', 'models/admin/mnist-20231228-141659/zh_ar_raw_2400.zip', 1, 'admin', '2023-12-28 14:16:59', 'admin', '2023-12-28 14:29:33', 0); -INSERT INTO `models` VALUES (5, 'mnist', 'v1.0', '计算机视觉手写体识模型', 'models/admin/mnist-20231228-150912/v1.0/ssd_80C_500E.ckpt', 1, 'admin', '2023-12-28 15:09:12', 'admin', '2024-01-02 15:47:12', 1); -INSERT INTO `models` VALUES (6, 'mnist', 'v1.0', '计算机视觉手写体识模型2-24', NULL, 1, 'admin', '2024-01-02 15:46:25', 'admin', '2024-01-02 15:46:25', 1); -INSERT INTO `models` VALUES (7, 'caffee', NULL, 'caffe模型', NULL, 1, 'admin', '2024-01-18 11:00:26', 'admin', '2024-01-18 11:00:26', 1); -- ---------------------------- -- Table structure for models_version -- ---------------------------- DROP TABLE IF EXISTS `models_version`; CREATE TABLE `models_version` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '主键', - `models_id` int(4) NOT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `models_id` int(11) NOT NULL, `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '版本', `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '模型存储地址', - `file_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名', + `file_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名', `file_size` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', - `status` int(4) NULL DEFAULT NULL COMMENT '状态', + `status` int(11) NULL DEFAULT NULL COMMENT '状态', `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT NULL COMMENT '0失效,1生效', + `state` int(11) NULL DEFAULT NULL COMMENT '0失效,1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of models_version -- ---------------------------- -INSERT INTO `models_version` VALUES (1, 6, '2.0', 'models/admin/mnist-20240108-163240/2.0/xxxx.tar', 'xxxx.tar', '122312', 1, 'admin', '2024-01-08 16:32:40', 'admin', '2024-01-15 15:17:51', 1); -INSERT INTO `models_version` VALUES (2, 6, '2.0', 'models/admin/mnist-20240113-095729/2.0/start_workflow.json', 'start_workflow.json', '13.6318359375', 1, 'admin', '2024-01-13 09:57:29', 'admin', '2024-01-13 09:57:29', 0); -INSERT INTO `models_version` VALUES (3, 6, '2.0', NULL, NULL, NULL, 1, 'admin', '2024-01-13 10:08:43', 'admin', '2024-01-13 10:08:43', 0); -INSERT INTO `models_version` VALUES (4, 6, '2.0', 'models/admin/mnist-20240113-100842/2.0/package-lock.json', 'package-lock.json', '0.0869140625', 1, 'admin', '2024-01-13 10:08:43', 'admin', '2024-01-13 10:08:43', 0); -INSERT INTO `models_version` VALUES (5, 6, '2.0', 'models/admin/mnist-20240113-104315/2.0/comonent-register.json', 'comonent-register.json', '1.1181640625', 1, 'admin', '2024-01-13 10:43:15', 'admin', '2024-01-13 10:43:15', 0); -INSERT INTO `models_version` VALUES (6, 6, '2.0', NULL, NULL, NULL, 1, 'admin', '2024-01-13 10:44:28', 'admin', '2024-01-13 10:44:28', 1); -INSERT INTO `models_version` VALUES (7, 6, '2.0', 'models/admin/mnist-20240113-104428/2.0/start_workflow.json', 'start_workflow.json', '13.6318359375', 1, 'admin', '2024-01-13 10:44:28', 'admin', '2024-01-13 10:44:28', 0); -INSERT INTO `models_version` VALUES (8, 6, '2.0', 'models/admin/mnist-20240113-104551/2.0/comonent-register.json', 'comonent-register.json', '1.1181640625', 1, 'admin', '2024-01-13 10:45:51', 'admin', '2024-01-13 10:45:51', 0); -INSERT INTO `models_version` VALUES (9, 6, '2.0', 'models/admin/mnist-20240113-135533/2.0/comonent-register.json', 'comonent-register.json', '1.1181640625', 1, 'admin', '2024-01-13 13:55:34', 'admin', '2024-01-13 13:55:34', 1); -INSERT INTO `models_version` VALUES (10, 7, 'v0.1.0', 'models/admin/caffee-20240118-113725/v0.1.0/config', 'config', '5.5KB', 0, 'admin', '2024-01-18 11:37:26', 'admin', '2024-01-18 11:37:26', 1); -INSERT INTO `models_version` VALUES (11, 7, 'v0.5.0', 'models/admin/caffee-20240118-114010/v0.5.0/config', 'config', '5.5 KiB', 0, 'admin', '2024-01-18 11:40:11', 'admin', '2024-01-18 11:40:11', 1); -INSERT INTO `models_version` VALUES (12, 7, 'v0.3.0', 'models/admin/caffee-20240118-114040/v0.3.0/config', 'config', '5.5KB', 0, 'admin', '2024-01-18 11:40:41', 'admin', '2024-01-18 11:40:41', 1); -INSERT INTO `models_version` VALUES (13, 7, 'v0.4.0', 'models/admin/caffee-20240118-114049/v0.4.0/config', 'config', '5.5 KiB', 0, 'admin', '2024-01-18 11:40:49', 'admin', '2024-01-18 11:40:49', 1); -- ---------------------------- -- Table structure for sys_config -- ---------------------------- DROP TABLE IF EXISTS `sys_config`; CREATE TABLE `sys_config` ( - `config_id` int(5) NOT NULL AUTO_INCREMENT COMMENT '参数主键', + `config_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '参数主键', `config_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '参数名称', `config_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '参数键名', `config_value` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '参数键值', @@ -508,7 +447,7 @@ CREATE TABLE `sys_config` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`config_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '参数配置表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '参数配置表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_config @@ -528,7 +467,7 @@ CREATE TABLE `sys_dept` ( `parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父部门id', `ancestors` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '祖级列表', `dept_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称', - `order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序', + `order_num` int(11) NULL DEFAULT 0 COMMENT '显示顺序', `leader` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '负责人', `phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系电话', `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', @@ -539,7 +478,7 @@ CREATE TABLE `sys_dept` ( `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`dept_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 110 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 110 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_dept @@ -561,7 +500,7 @@ INSERT INTO `sys_dept` VALUES (109, 102, '0,100,102', '财务部门', 2, '若依 DROP TABLE IF EXISTS `sys_dict_data`; CREATE TABLE `sys_dict_data` ( `dict_code` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典编码', - `dict_sort` int(4) NULL DEFAULT 0 COMMENT '字典排序', + `dict_sort` int(11) NULL DEFAULT 0 COMMENT '字典排序', `dict_label` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典标签', `dict_value` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典键值', `dict_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典类型', @@ -575,7 +514,7 @@ CREATE TABLE `sys_dict_data` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`dict_code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典数据表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_dict_data @@ -614,6 +553,12 @@ INSERT INTO `sys_dict_data` VALUES (36, 2, '模型训练', '2', 'category_type', INSERT INTO `sys_dict_data` VALUES (37, 3, '分布式模型训练', '3', 'category_type', NULL, NULL, 'N', '0', 'admin', '2024-01-13 16:28:22', '', NULL, NULL); INSERT INTO `sys_dict_data` VALUES (38, 4, '数据导出', '4', 'category_type', NULL, NULL, 'N', '0', 'admin', '2024-01-13 16:28:33', '', NULL, NULL); INSERT INTO `sys_dict_data` VALUES (39, 5, '数据处理', '5', 'category_type', NULL, NULL, 'N', '0', 'admin', '2024-01-13 16:28:41', '', NULL, NULL); +INSERT INTO `sys_dict_data` VALUES (40, 1, 'NPU', 'NPU', 'available_cluster', NULL, NULL, 'N', '0', 'admin', '2024-03-08 10:47:31', '', NULL, NULL); +INSERT INTO `sys_dict_data` VALUES (41, 2, 'GPU', 'GPU', 'available_cluster', NULL, NULL, 'N', '0', 'admin', '2024-03-08 10:47:43', '', NULL, NULL); +INSERT INTO `sys_dict_data` VALUES (42, 1, '数据集分类', '1', 'dataset_models_category', NULL, NULL, 'N', '0', 'admin', '2024-03-14 17:03:02', '', NULL, NULL); +INSERT INTO `sys_dict_data` VALUES (43, 2, '研究方向/应用领域', '2', 'dataset_models_category', NULL, NULL, 'N', '0', 'admin', '2024-03-14 17:03:38', '', NULL, NULL); +INSERT INTO `sys_dict_data` VALUES (44, 3, '模型框架', '3', 'dataset_models_category', NULL, NULL, 'N', '0', 'admin', '2024-03-14 17:03:50', '', NULL, NULL); +INSERT INTO `sys_dict_data` VALUES (45, 4, '模型能力', '4', 'dataset_models_category', NULL, NULL, 'N', '0', 'admin', '2024-03-14 17:04:15', '', NULL, NULL); -- ---------------------------- -- Table structure for sys_dict_type @@ -631,7 +576,7 @@ CREATE TABLE `sys_dict_type` ( `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`dict_id`) USING BTREE, UNIQUE INDEX `dict_type`(`dict_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_dict_type @@ -647,6 +592,8 @@ INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '操作类型列表'); INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '登录状态列表'); INSERT INTO `sys_dict_type` VALUES (12, '组件类型', 'category_type', '0', 'admin', '2024-01-13 16:27:29', '', NULL, '组件类型'); +INSERT INTO `sys_dict_type` VALUES (13, '可用集群', 'available_cluster', '0', 'admin', '2024-03-08 10:47:11', '', NULL, NULL); +INSERT INTO `sys_dict_type` VALUES (14, '数据集模型类别', 'dataset_models_category', '0', 'admin', '2024-03-14 17:02:19', '', NULL, NULL); -- ---------------------------- -- Table structure for sys_job @@ -667,7 +614,7 @@ CREATE TABLE `sys_job` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注信息', PRIMARY KEY (`job_id`, `job_name`, `job_group`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务调度表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务调度表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_job @@ -690,7 +637,7 @@ CREATE TABLE `sys_job_log` ( `exception_info` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '异常信息', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`job_log_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务调度日志表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务调度日志表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_job_log @@ -710,7 +657,7 @@ CREATE TABLE `sys_logininfor` ( PRIMARY KEY (`info_id`) USING BTREE, INDEX `idx_sys_logininfor_s`(`status`) USING BTREE, INDEX `idx_sys_logininfor_lt`(`access_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 184 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 400 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统访问记录' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_logininfor @@ -799,6 +746,222 @@ INSERT INTO `sys_logininfor` VALUES (180, 'admin', '172.20.32.21', '0', '登录 INSERT INTO `sys_logininfor` VALUES (181, 'admin', '172.20.32.150', '0', '登录成功', '2024-01-25 16:45:03'); INSERT INTO `sys_logininfor` VALUES (182, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-26 08:50:04'); INSERT INTO `sys_logininfor` VALUES (183, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-26 09:26:54'); +INSERT INTO `sys_logininfor` VALUES (184, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-26 10:03:03'); +INSERT INTO `sys_logininfor` VALUES (185, 'admin', '172.20.32.102', '0', '登录成功', '2024-01-26 14:38:19'); +INSERT INTO `sys_logininfor` VALUES (186, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 08:45:55'); +INSERT INTO `sys_logininfor` VALUES (187, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 08:53:23'); +INSERT INTO `sys_logininfor` VALUES (188, 'admin', '172.20.32.150', '0', '登录成功', '2024-01-27 09:29:52'); +INSERT INTO `sys_logininfor` VALUES (189, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 11:19:44'); +INSERT INTO `sys_logininfor` VALUES (190, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 13:57:13'); +INSERT INTO `sys_logininfor` VALUES (191, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 13:59:17'); +INSERT INTO `sys_logininfor` VALUES (192, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 15:56:05'); +INSERT INTO `sys_logininfor` VALUES (193, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 15:59:01'); +INSERT INTO `sys_logininfor` VALUES (194, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-27 15:59:03'); +INSERT INTO `sys_logininfor` VALUES (195, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-29 10:01:03'); +INSERT INTO `sys_logininfor` VALUES (196, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-29 10:01:09'); +INSERT INTO `sys_logininfor` VALUES (197, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-29 10:49:05'); +INSERT INTO `sys_logininfor` VALUES (198, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-29 10:49:50'); +INSERT INTO `sys_logininfor` VALUES (199, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-29 14:30:01'); +INSERT INTO `sys_logininfor` VALUES (200, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-30 11:23:14'); +INSERT INTO `sys_logininfor` VALUES (201, 'admin', '172.20.32.150', '0', '登录成功', '2024-01-30 14:23:38'); +INSERT INTO `sys_logininfor` VALUES (202, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-30 14:49:02'); +INSERT INTO `sys_logininfor` VALUES (203, 'admin', '172.20.32.21', '0', '登录成功', '2024-01-31 11:04:06'); +INSERT INTO `sys_logininfor` VALUES (204, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-01 15:03:30'); +INSERT INTO `sys_logininfor` VALUES (205, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-01 15:48:00'); +INSERT INTO `sys_logininfor` VALUES (206, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-02 09:32:51'); +INSERT INTO `sys_logininfor` VALUES (207, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-02 09:40:44'); +INSERT INTO `sys_logininfor` VALUES (208, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-02 09:43:15'); +INSERT INTO `sys_logininfor` VALUES (209, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-02 09:48:48'); +INSERT INTO `sys_logininfor` VALUES (210, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-02 14:59:21'); +INSERT INTO `sys_logininfor` VALUES (211, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-03 09:08:54'); +INSERT INTO `sys_logininfor` VALUES (212, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-03 10:08:52'); +INSERT INTO `sys_logininfor` VALUES (213, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-04 09:23:08'); +INSERT INTO `sys_logininfor` VALUES (214, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-19 10:17:29'); +INSERT INTO `sys_logininfor` VALUES (215, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-20 09:27:09'); +INSERT INTO `sys_logininfor` VALUES (216, 'admin', '172.20.32.21', '1', '密码输入错误1次', '2024-02-20 14:25:19'); +INSERT INTO `sys_logininfor` VALUES (217, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-20 14:25:29'); +INSERT INTO `sys_logininfor` VALUES (218, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-20 16:47:02'); +INSERT INTO `sys_logininfor` VALUES (219, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-21 08:49:28'); +INSERT INTO `sys_logininfor` VALUES (220, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-21 10:58:11'); +INSERT INTO `sys_logininfor` VALUES (221, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-23 10:01:35'); +INSERT INTO `sys_logininfor` VALUES (222, 'admin', '172.20.32.21', '1', '密码输入错误1次', '2024-02-23 14:00:03'); +INSERT INTO `sys_logininfor` VALUES (223, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-23 14:00:16'); +INSERT INTO `sys_logininfor` VALUES (224, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-26 10:48:14'); +INSERT INTO `sys_logininfor` VALUES (225, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-26 10:50:13'); +INSERT INTO `sys_logininfor` VALUES (226, 'admin', '172.20.32.98', '0', '登录成功', '2024-02-26 14:42:38'); +INSERT INTO `sys_logininfor` VALUES (227, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-26 15:21:50'); +INSERT INTO `sys_logininfor` VALUES (228, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-26 17:03:56'); +INSERT INTO `sys_logininfor` VALUES (229, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-27 08:41:46'); +INSERT INTO `sys_logininfor` VALUES (230, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-27 09:59:00'); +INSERT INTO `sys_logininfor` VALUES (231, 'admin', '172.20.32.98', '0', '登录成功', '2024-02-27 14:54:31'); +INSERT INTO `sys_logininfor` VALUES (232, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-27 15:56:39'); +INSERT INTO `sys_logininfor` VALUES (233, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-28 09:10:20'); +INSERT INTO `sys_logininfor` VALUES (234, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-28 09:52:22'); +INSERT INTO `sys_logininfor` VALUES (235, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-28 14:30:01'); +INSERT INTO `sys_logininfor` VALUES (236, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-28 14:38:03'); +INSERT INTO `sys_logininfor` VALUES (237, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-29 08:33:35'); +INSERT INTO `sys_logininfor` VALUES (238, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-29 08:41:46'); +INSERT INTO `sys_logininfor` VALUES (239, 'admin', '172.20.32.21', '0', '登录成功', '2024-02-29 09:34:12'); +INSERT INTO `sys_logininfor` VALUES (240, 'admin', '172.20.32.98', '0', '登录成功', '2024-02-29 14:27:04'); +INSERT INTO `sys_logininfor` VALUES (241, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-01 08:50:37'); +INSERT INTO `sys_logininfor` VALUES (242, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-01 09:33:45'); +INSERT INTO `sys_logininfor` VALUES (243, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-01 10:30:22'); +INSERT INTO `sys_logininfor` VALUES (244, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-01 11:08:32'); +INSERT INTO `sys_logininfor` VALUES (245, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-02 08:46:47'); +INSERT INTO `sys_logininfor` VALUES (246, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-02 08:50:46'); +INSERT INTO `sys_logininfor` VALUES (247, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-02 09:04:22'); +INSERT INTO `sys_logininfor` VALUES (248, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-02 09:16:31'); +INSERT INTO `sys_logininfor` VALUES (249, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-04 08:35:10'); +INSERT INTO `sys_logininfor` VALUES (250, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-04 08:38:49'); +INSERT INTO `sys_logininfor` VALUES (251, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-04 08:42:55'); +INSERT INTO `sys_logininfor` VALUES (252, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-04 08:56:16'); +INSERT INTO `sys_logininfor` VALUES (253, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-05 08:34:18'); +INSERT INTO `sys_logininfor` VALUES (254, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-05 10:01:06'); +INSERT INTO `sys_logininfor` VALUES (255, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-05 15:14:42'); +INSERT INTO `sys_logininfor` VALUES (256, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-05 16:35:06'); +INSERT INTO `sys_logininfor` VALUES (257, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-05 16:37:38'); +INSERT INTO `sys_logininfor` VALUES (258, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-06 08:55:56'); +INSERT INTO `sys_logininfor` VALUES (259, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-06 09:41:05'); +INSERT INTO `sys_logininfor` VALUES (260, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-06 11:18:11'); +INSERT INTO `sys_logininfor` VALUES (261, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-06 14:23:19'); +INSERT INTO `sys_logininfor` VALUES (262, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-06 14:42:52'); +INSERT INTO `sys_logininfor` VALUES (263, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-06 17:30:13'); +INSERT INTO `sys_logininfor` VALUES (264, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-07 09:06:07'); +INSERT INTO `sys_logininfor` VALUES (265, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-07 13:38:26'); +INSERT INTO `sys_logininfor` VALUES (266, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-07 13:53:37'); +INSERT INTO `sys_logininfor` VALUES (267, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-07 15:07:10'); +INSERT INTO `sys_logininfor` VALUES (268, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-08 08:34:41'); +INSERT INTO `sys_logininfor` VALUES (269, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-08 08:41:51'); +INSERT INTO `sys_logininfor` VALUES (270, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-08 09:32:58'); +INSERT INTO `sys_logininfor` VALUES (271, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-08 10:01:03'); +INSERT INTO `sys_logininfor` VALUES (272, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-08 10:46:39'); +INSERT INTO `sys_logininfor` VALUES (273, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-11 08:39:25'); +INSERT INTO `sys_logininfor` VALUES (274, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-11 08:39:44'); +INSERT INTO `sys_logininfor` VALUES (275, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-11 09:45:39'); +INSERT INTO `sys_logininfor` VALUES (276, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-11 10:40:42'); +INSERT INTO `sys_logininfor` VALUES (277, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-12 09:14:57'); +INSERT INTO `sys_logininfor` VALUES (278, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-12 09:16:44'); +INSERT INTO `sys_logininfor` VALUES (279, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-12 15:36:34'); +INSERT INTO `sys_logininfor` VALUES (280, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-12 15:45:39'); +INSERT INTO `sys_logininfor` VALUES (281, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-13 08:54:50'); +INSERT INTO `sys_logininfor` VALUES (282, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-13 08:57:09'); +INSERT INTO `sys_logininfor` VALUES (283, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-13 09:19:31'); +INSERT INTO `sys_logininfor` VALUES (284, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-13 15:15:34'); +INSERT INTO `sys_logininfor` VALUES (285, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-14 09:52:52'); +INSERT INTO `sys_logininfor` VALUES (286, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-14 10:02:30'); +INSERT INTO `sys_logininfor` VALUES (287, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-14 10:52:08'); +INSERT INTO `sys_logininfor` VALUES (288, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-14 10:52:17'); +INSERT INTO `sys_logininfor` VALUES (289, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-14 10:57:02'); +INSERT INTO `sys_logininfor` VALUES (290, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-14 14:14:22'); +INSERT INTO `sys_logininfor` VALUES (291, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-14 17:00:21'); +INSERT INTO `sys_logininfor` VALUES (292, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-15 09:32:41'); +INSERT INTO `sys_logininfor` VALUES (293, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-15 09:36:12'); +INSERT INTO `sys_logininfor` VALUES (294, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-15 11:51:44'); +INSERT INTO `sys_logininfor` VALUES (295, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-15 13:33:49'); +INSERT INTO `sys_logininfor` VALUES (296, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-16 09:45:50'); +INSERT INTO `sys_logininfor` VALUES (297, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-16 10:38:13'); +INSERT INTO `sys_logininfor` VALUES (298, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-16 13:54:00'); +INSERT INTO `sys_logininfor` VALUES (299, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-16 14:45:29'); +INSERT INTO `sys_logininfor` VALUES (300, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-16 15:25:44'); +INSERT INTO `sys_logininfor` VALUES (301, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-16 16:29:37'); +INSERT INTO `sys_logininfor` VALUES (302, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-16 16:54:25'); +INSERT INTO `sys_logininfor` VALUES (303, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-18 09:26:48'); +INSERT INTO `sys_logininfor` VALUES (304, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-18 09:28:44'); +INSERT INTO `sys_logininfor` VALUES (305, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-18 09:40:38'); +INSERT INTO `sys_logininfor` VALUES (306, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-18 15:20:58'); +INSERT INTO `sys_logininfor` VALUES (307, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-18 16:35:20'); +INSERT INTO `sys_logininfor` VALUES (308, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-18 16:36:00'); +INSERT INTO `sys_logininfor` VALUES (309, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-18 17:06:35'); +INSERT INTO `sys_logininfor` VALUES (310, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-19 08:31:02'); +INSERT INTO `sys_logininfor` VALUES (311, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-19 08:33:34'); +INSERT INTO `sys_logininfor` VALUES (312, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-19 08:42:09'); +INSERT INTO `sys_logininfor` VALUES (313, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-19 09:14:45'); +INSERT INTO `sys_logininfor` VALUES (314, 'xidaray', '172.20.32.98', '1', '登录用户不存在', '2024-03-19 09:16:39'); +INSERT INTO `sys_logininfor` VALUES (315, 'ry', '172.20.32.98', '1', '密码输入错误1次', '2024-03-19 09:16:53'); +INSERT INTO `sys_logininfor` VALUES (316, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-19 09:17:06'); +INSERT INTO `sys_logininfor` VALUES (317, 'ry', '172.20.32.98', '0', '登录成功', '2024-03-19 09:20:23'); +INSERT INTO `sys_logininfor` VALUES (318, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-19 11:00:12'); +INSERT INTO `sys_logininfor` VALUES (319, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-19 11:01:17'); +INSERT INTO `sys_logininfor` VALUES (320, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-19 11:47:39'); +INSERT INTO `sys_logininfor` VALUES (321, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 08:31:02'); +INSERT INTO `sys_logininfor` VALUES (322, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 08:54:54'); +INSERT INTO `sys_logininfor` VALUES (323, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 09:04:07'); +INSERT INTO `sys_logininfor` VALUES (324, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 10:08:28'); +INSERT INTO `sys_logininfor` VALUES (325, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 10:11:32'); +INSERT INTO `sys_logininfor` VALUES (326, 'admin', '172.20.32.98', '0', '登录成功', '2024-03-20 10:14:04'); +INSERT INTO `sys_logininfor` VALUES (327, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 10:15:36'); +INSERT INTO `sys_logininfor` VALUES (328, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 10:15:55'); +INSERT INTO `sys_logininfor` VALUES (329, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 11:23:32'); +INSERT INTO `sys_logininfor` VALUES (330, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 13:53:08'); +INSERT INTO `sys_logininfor` VALUES (331, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-20 16:35:50'); +INSERT INTO `sys_logininfor` VALUES (332, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-21 08:32:55'); +INSERT INTO `sys_logininfor` VALUES (333, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-21 08:51:26'); +INSERT INTO `sys_logininfor` VALUES (334, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-21 08:52:13'); +INSERT INTO `sys_logininfor` VALUES (335, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-21 08:55:53'); +INSERT INTO `sys_logininfor` VALUES (336, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-21 08:59:19'); +INSERT INTO `sys_logininfor` VALUES (337, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-21 09:22:09'); +INSERT INTO `sys_logininfor` VALUES (338, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-22 08:31:52'); +INSERT INTO `sys_logininfor` VALUES (339, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-22 08:55:30'); +INSERT INTO `sys_logininfor` VALUES (340, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-22 09:00:32'); +INSERT INTO `sys_logininfor` VALUES (341, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 09:31:47'); +INSERT INTO `sys_logininfor` VALUES (342, 'admin', '172.20.32.21', '1', '密码输入错误1次', '2024-03-25 09:32:55'); +INSERT INTO `sys_logininfor` VALUES (343, 'admin', '172.20.32.21', '1', '密码输入错误2次', '2024-03-25 09:33:00'); +INSERT INTO `sys_logininfor` VALUES (344, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 09:33:17'); +INSERT INTO `sys_logininfor` VALUES (345, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 09:34:44'); +INSERT INTO `sys_logininfor` VALUES (346, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 09:41:01'); +INSERT INTO `sys_logininfor` VALUES (347, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 09:52:20'); +INSERT INTO `sys_logininfor` VALUES (348, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 10:12:33'); +INSERT INTO `sys_logininfor` VALUES (349, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 10:13:46'); +INSERT INTO `sys_logininfor` VALUES (350, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 10:17:01'); +INSERT INTO `sys_logininfor` VALUES (351, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 10:36:35'); +INSERT INTO `sys_logininfor` VALUES (352, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 11:02:04'); +INSERT INTO `sys_logininfor` VALUES (353, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-25 14:14:10'); +INSERT INTO `sys_logininfor` VALUES (354, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-25 14:30:51'); +INSERT INTO `sys_logininfor` VALUES (355, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-26 08:53:58'); +INSERT INTO `sys_logininfor` VALUES (356, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-26 10:06:43'); +INSERT INTO `sys_logininfor` VALUES (357, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-26 10:54:43'); +INSERT INTO `sys_logininfor` VALUES (358, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-26 13:54:31'); +INSERT INTO `sys_logininfor` VALUES (359, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-26 15:53:55'); +INSERT INTO `sys_logininfor` VALUES (360, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-26 16:59:12'); +INSERT INTO `sys_logininfor` VALUES (361, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-26 17:16:28'); +INSERT INTO `sys_logininfor` VALUES (362, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 08:35:53'); +INSERT INTO `sys_logininfor` VALUES (363, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 08:41:39'); +INSERT INTO `sys_logininfor` VALUES (364, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 09:54:05'); +INSERT INTO `sys_logininfor` VALUES (365, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-27 10:09:57'); +INSERT INTO `sys_logininfor` VALUES (366, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-27 11:21:29'); +INSERT INTO `sys_logininfor` VALUES (367, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-27 11:42:19'); +INSERT INTO `sys_logininfor` VALUES (368, 'admin', '172.20.32.21', '1', '密码输入错误1次', '2024-03-27 11:47:27'); +INSERT INTO `sys_logininfor` VALUES (369, 'admin', '172.20.32.21', '1', '密码输入错误2次', '2024-03-27 11:47:34'); +INSERT INTO `sys_logininfor` VALUES (370, 'admin', '172.20.32.21', '1', '密码输入错误3次', '2024-03-27 11:47:41'); +INSERT INTO `sys_logininfor` VALUES (371, 'admin', '172.20.32.21', '0', '登录成功', '2024-03-27 11:47:48'); +INSERT INTO `sys_logininfor` VALUES (372, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 17:08:52'); +INSERT INTO `sys_logininfor` VALUES (373, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 17:09:38'); +INSERT INTO `sys_logininfor` VALUES (374, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 17:20:21'); +INSERT INTO `sys_logininfor` VALUES (375, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-27 17:26:41'); +INSERT INTO `sys_logininfor` VALUES (376, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-28 09:50:44'); +INSERT INTO `sys_logininfor` VALUES (377, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-28 10:12:11'); +INSERT INTO `sys_logininfor` VALUES (378, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-28 10:13:08'); +INSERT INTO `sys_logininfor` VALUES (379, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-28 10:14:39'); +INSERT INTO `sys_logininfor` VALUES (380, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-28 15:19:57'); +INSERT INTO `sys_logininfor` VALUES (381, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-28 17:21:34'); +INSERT INTO `sys_logininfor` VALUES (382, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-29 08:43:16'); +INSERT INTO `sys_logininfor` VALUES (383, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-29 08:56:00'); +INSERT INTO `sys_logininfor` VALUES (384, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-29 08:57:21'); +INSERT INTO `sys_logininfor` VALUES (385, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-29 09:02:23'); +INSERT INTO `sys_logininfor` VALUES (386, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-29 09:17:30'); +INSERT INTO `sys_logininfor` VALUES (387, 'admin', '172.20.32.83', '0', '登录成功', '2024-03-29 11:25:09'); +INSERT INTO `sys_logininfor` VALUES (388, 'admin', '172.20.32.150', '0', '登录成功', '2024-03-29 11:39:54'); +INSERT INTO `sys_logininfor` VALUES (389, 'admin', '172.20.32.83', '0', '登录成功', '2024-04-01 09:01:04'); +INSERT INTO `sys_logininfor` VALUES (390, 'admin', '172.20.32.83', '0', '登录成功', '2024-04-01 09:03:41'); +INSERT INTO `sys_logininfor` VALUES (391, 'admin', '172.20.32.83', '0', '登录成功', '2024-04-01 10:08:56'); +INSERT INTO `sys_logininfor` VALUES (392, 'admin', '172.20.32.83', '0', '登录成功', '2024-04-01 11:54:37'); +INSERT INTO `sys_logininfor` VALUES (393, 'admin', '172.20.32.83', '0', '登录成功', '2024-04-01 13:42:46'); +INSERT INTO `sys_logininfor` VALUES (394, 'admin', '172.20.32.83', '0', '登录成功', '2024-04-01 14:48:45'); +INSERT INTO `sys_logininfor` VALUES (395, 'admin', '172.20.32.185', '0', '登录成功', '2024-04-02 03:01:36'); +INSERT INTO `sys_logininfor` VALUES (396, 'admin', '172.20.32.185', '0', '登录成功', '2024-04-02 03:17:42'); +INSERT INTO `sys_logininfor` VALUES (397, 'admin', '172.20.32.185', '0', '登录成功', '2024-04-02 03:32:05'); +INSERT INTO `sys_logininfor` VALUES (398, 'admin', '172.20.32.185', '0', '登录成功', '2024-04-02 03:47:08'); +INSERT INTO `sys_logininfor` VALUES (399, 'admin', '172.20.32.185', '0', '登录成功', '2024-04-02 06:16:33'); -- ---------------------------- -- Table structure for sys_menu @@ -808,12 +971,12 @@ CREATE TABLE `sys_menu` ( `menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `menu_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单名称', `parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父菜单ID', - `order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序', + `order_num` int(11) NULL DEFAULT 0 COMMENT '显示顺序', `path` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '路由地址', `component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件路径', `query` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路由参数', - `is_frame` int(1) NULL DEFAULT 1 COMMENT '是否为外链(0是 1否)', - `is_cache` int(1) NULL DEFAULT 0 COMMENT '是否缓存(0缓存 1不缓存)', + `is_frame` int(11) NULL DEFAULT 1 COMMENT '是否为外链(0是 1否)', + `is_cache` int(11) NULL DEFAULT 0 COMMENT '是否缓存(0缓存 1不缓存)', `menu_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)', `visible` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)', `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0正常 1停用)', @@ -825,12 +988,12 @@ CREATE TABLE `sys_menu` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注', PRIMARY KEY (`menu_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2007 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2022 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单权限表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_menu -- ---------------------------- -INSERT INTO `sys_menu` VALUES (1, '系统管理', 0, 1, 'system', NULL, '', 1, 0, 'M', '0', '0', '', 'system', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:29:22', '系统管理目录'); +INSERT INTO `sys_menu` VALUES (1, '系统管理', 0, 11, 'system', NULL, '', 1, 0, 'M', '0', '0', '', 'system', 'admin', '2024-01-04 10:59:56', 'admin', '2024-02-02 09:48:25', '系统管理目录'); INSERT INTO `sys_menu` VALUES (2, '系统监控', 0, 2, 'monitor', NULL, '', 1, 0, 'M', '1', '0', '', 'monitor', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:14:19', '系统监控目录'); INSERT INTO `sys_menu` VALUES (3, '系统工具', 0, 3, 'tool', NULL, '', 1, 0, 'M', '1', '0', '', 'tool', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:14:13', '系统工具目录'); INSERT INTO `sys_menu` VALUES (4, '若依官网', 0, 4, 'http://ruoyi.vip', NULL, '', 0, 0, 'M', '1', '0', '', 'guide', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:14:08', '若依官网地址'); @@ -917,13 +1080,25 @@ INSERT INTO `sys_menu` VALUES (1060, '生成代码', 115, 5, '#', '', '', 1, 0, INSERT INTO `sys_menu` VALUES (2000, '流水线', 0, 3, 'pipeline', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-01-04 11:06:40', '', NULL, ''); INSERT INTO `sys_menu` VALUES (2002, '开发环境', 0, 2, 'developmentEnvironment', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-01-09 09:39:22', '', NULL, ''); INSERT INTO `sys_menu` VALUES (2006, '实验', 0, 3, 'experiment', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-01-16 15:52:17', '', NULL, ''); +INSERT INTO `sys_menu` VALUES (2008, '镜像管理', 2010, 3, '/image', NULL, NULL, 1, 0, 'C', '0', '0', '', 'TableOutlined', 'admin', '2024-02-02 09:44:42', 'admin', '2024-03-14 13:52:16', ''); +INSERT INTO `sys_menu` VALUES (2010, 'AI资产管理', 0, 6, 'dataset', NULL, NULL, 1, 0, 'M', '0', '0', '', '#', 'admin', '2024-02-02 09:46:12', 'admin', '2024-03-05 17:11:43', ''); +INSERT INTO `sys_menu` VALUES (2011, '资源管理', 2010, 5, '/readad', NULL, NULL, 1, 0, 'C', '0', '0', '', 'DoubleRightOutlined', 'admin', '2024-02-02 09:46:51', 'admin', '2024-03-14 13:52:56', ''); +INSERT INTO `sys_menu` VALUES (2012, '组件管理', 2010, 6, '/compent', NULL, NULL, 1, 0, 'C', '0', '0', '', 'BorderInnerOutlined', 'admin', '2024-02-02 09:47:32', 'admin', '2024-03-14 13:53:31', ''); +INSERT INTO `sys_menu` VALUES (2013, '监控运维', 0, 10, '/see', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-02-02 09:48:14', '', NULL, ''); +INSERT INTO `sys_menu` VALUES (2015, '数据集管理', 2010, 1, 'datasetIndex', 'dataset/index', NULL, 1, 1, 'C', '0', '0', '', '#', 'admin', '2024-03-05 16:36:12', 'admin', '2024-03-14 10:48:33', ''); +INSERT INTO `sys_menu` VALUES (2016, '模型管理', 2010, 2, 'modelIndex', '', NULL, 1, 1, 'C', '0', '0', '', '#', 'admin', '2024-03-14 10:40:52', 'admin', '2024-03-14 10:49:27', ''); +INSERT INTO `sys_menu` VALUES (2017, '工作空间', 0, 0, 'workspace', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-03-14 13:56:21', '', NULL, ''); +INSERT INTO `sys_menu` VALUES (2018, '数据准备', 0, 1, 'datasetPreparation', NULL, NULL, 1, 0, 'M', '0', '0', '', '#', 'admin', '2024-03-14 13:56:21', 'admin', '2024-03-14 14:09:50', ''); +INSERT INTO `sys_menu` VALUES (2019, '数据智能标注', 2018, 0, 'datasetAnnotation', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-03-14 13:56:21', '', NULL, ''); +INSERT INTO `sys_menu` VALUES (2020, '模型在线部署', 0, 7, 'modelDseployment', NULL, NULL, 7, 0, 'M', '0', '0', '', '#', 'admin', '2024-03-14 13:56:21', 'admin', '2024-03-14 14:09:56', ''); +INSERT INTO `sys_menu` VALUES (2021, '智能软件应用开发', 0, 8, 'appsDeployment', NULL, NULL, 7, 0, 'M', '0', '0', '', '#', 'admin', '2024-03-14 13:56:21', 'admin', '2024-03-14 14:09:56', ''); -- ---------------------------- -- Table structure for sys_notice -- ---------------------------- DROP TABLE IF EXISTS `sys_notice`; CREATE TABLE `sys_notice` ( - `notice_id` int(4) NOT NULL AUTO_INCREMENT COMMENT '公告ID', + `notice_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '公告ID', `notice_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公告标题', `notice_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公告类型(1通知 2公告)', `notice_content` longblob NULL COMMENT '公告内容', @@ -934,7 +1109,7 @@ CREATE TABLE `sys_notice` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`notice_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知公告表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知公告表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_notice @@ -949,10 +1124,10 @@ DROP TABLE IF EXISTS `sys_oper_log`; CREATE TABLE `sys_oper_log` ( `oper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志主键', `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '模块标题', - `business_type` int(2) NULL DEFAULT 0 COMMENT '业务类型(0其它 1新增 2修改 3删除)', + `business_type` int(11) NULL DEFAULT 0 COMMENT '业务类型(0其它 1新增 2修改 3删除)', `method` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '方法名称', `request_method` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求方式', - `operator_type` int(1) NULL DEFAULT 0 COMMENT '操作类别(0其它 1后台用户 2手机端用户)', + `operator_type` int(11) NULL DEFAULT 0 COMMENT '操作类别(0其它 1后台用户 2手机端用户)', `oper_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '操作人员', `dept_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称', `oper_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求URL', @@ -960,7 +1135,7 @@ CREATE TABLE `sys_oper_log` ( `oper_location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '操作地点', `oper_param` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求参数', `json_result` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '返回参数', - `status` int(1) NULL DEFAULT 0 COMMENT '操作状态(0正常 1异常)', + `status` int(11) NULL DEFAULT 0 COMMENT '操作状态(0正常 1异常)', `error_msg` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '错误消息', `oper_time` datetime NULL DEFAULT NULL COMMENT '操作时间', `cost_time` bigint(20) NULL DEFAULT 0 COMMENT '消耗时间', @@ -968,7 +1143,7 @@ CREATE TABLE `sys_oper_log` ( INDEX `idx_sys_oper_log_bt`(`business_type`) USING BTREE, INDEX `idx_sys_oper_log_s`(`status`) USING BTREE, INDEX `idx_sys_oper_log_ot`(`oper_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 147 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 189 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志记录' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_oper_log @@ -1020,6 +1195,48 @@ INSERT INTO `sys_oper_log` VALUES (143, '字典数据', 1, 'com.ruoyi.system.con INSERT INTO `sys_oper_log` VALUES (144, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '127.0.0.1', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"数据处理\",\"dictSort\":5,\"dictType\":\"category_type\",\"dictValue\":\"5\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-13 16:28:41', 11); INSERT INTO `sys_oper_log` VALUES (145, '角色管理', 2, 'com.ruoyi.system.controller.SysRoleController.edit()', 'PUT', 1, 'admin', NULL, '/role', '127.0.0.1', '', '{\"admin\":false,\"deptCheckStrictly\":false,\"flag\":false,\"menuCheckStrictly\":false,\"menuIds\":[4,111,112,113,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1058,1057,1059,1060,1039,1040,1041,1042,1043,1044,1045,2000,2002],\"params\":{},\"remark\":\"普通角色\",\"roleId\":2,\"roleKey\":\"common\",\"roleName\":\"普通角色\",\"roleSort\":2,\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-16 08:54:13', 70); INSERT INTO `sys_oper_log` VALUES (146, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"createBy\":\"admin\",\"menuName\":\"实验\",\"menuType\":\"M\",\"orderNum\":3,\"params\":{},\"parentId\":0,\"path\":\"experiment\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-16 15:52:17', 33); +INSERT INTO `sys_oper_log` VALUES (147, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"menuName\":\"镜像管理\",\"menuType\":\"C\",\"orderNum\":4,\"params\":{},\"parentId\":0,\"path\":\"/images\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:41:40', 39); +INSERT INTO `sys_oper_log` VALUES (148, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isFrame\":\"1\",\"menuName\":\"镜像管理\",\"menuType\":\"M\",\"orderNum\":4,\"params\":{},\"parentId\":0,\"path\":\"/image\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:44:42', 5); +INSERT INTO `sys_oper_log` VALUES (149, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isFrame\":\"1\",\"menuName\":\"模型管理\",\"menuType\":\"M\",\"orderNum\":5,\"params\":{},\"parentId\":0,\"path\":\"/model\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:45:39', 2); +INSERT INTO `sys_oper_log` VALUES (150, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isFrame\":\"1\",\"menuName\":\"数据集管理\",\"menuType\":\"M\",\"orderNum\":6,\"params\":{},\"parentId\":0,\"path\":\"/dataset\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:46:12', 3); +INSERT INTO `sys_oper_log` VALUES (151, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isFrame\":\"1\",\"menuName\":\"资源管理\",\"menuType\":\"M\",\"orderNum\":7,\"params\":{},\"parentId\":0,\"path\":\"/readad\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:46:51', 4); +INSERT INTO `sys_oper_log` VALUES (152, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isFrame\":\"1\",\"menuName\":\"组件管理\",\"menuType\":\"M\",\"orderNum\":8,\"params\":{},\"parentId\":0,\"path\":\"/compent\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:47:32', 4); +INSERT INTO `sys_oper_log` VALUES (153, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isFrame\":\"1\",\"menuName\":\"监控运维\",\"menuType\":\"M\",\"orderNum\":10,\"params\":{},\"parentId\":0,\"path\":\"/see\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:48:14', 4); +INSERT INTO `sys_oper_log` VALUES (154, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"system\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":1,\"menuName\":\"系统管理\",\"menuType\":\"M\",\"orderNum\":11,\"params\":{},\"parentId\":0,\"path\":\"system\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-02 09:48:25', 3); +INSERT INTO `sys_oper_log` VALUES (155, '个人信息', 2, 'com.ruoyi.system.controller.SysProfileController.updateProfile()', 'PUT', 1, 'admin', NULL, '/user/profile', '172.20.32.21', '', '{\"admin\":true,\"avatar\":\"\",\"createBy\":\"admin\",\"createTime\":\"2024-01-04 10:59:56\",\"delFlag\":\"0\",\"dept\":{\"ancestors\":\"0,100,101\",\"children\":[],\"deptId\":103,\"deptName\":\"研发部门\",\"leader\":\"若依\",\"orderNum\":1,\"params\":{},\"parentId\":101,\"status\":\"0\"},\"deptId\":103,\"email\":\"ry@163.com\",\"loginDate\":\"2024-01-04 10:59:56\",\"loginIp\":\"127.0.0.1\",\"nickName\":\"若依\",\"params\":{},\"phonenumber\":\"15888888888\",\"remark\":\"管理员\",\"roles\":[{\"admin\":true,\"dataScope\":\"1\",\"deptCheckStrictly\":false,\"flag\":false,\"menuCheckStrictly\":false,\"params\":{},\"roleId\":1,\"roleKey\":\"admin\",\"roleName\":\"超级管理员\",\"roleSort\":1,\"status\":\"0\"}],\"sex\":\"1\",\"status\":\"0\",\"userId\":1,\"userName\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-02-28 14:38:13', 85); +INSERT INTO `sys_oper_log` VALUES (156, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2010,\"menuName\":\"AI资产管理\",\"menuType\":\"M\",\"orderNum\":6,\"params\":{},\"parentId\":0,\"path\":\"/dataset\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 16:04:12', 33); +INSERT INTO `sys_oper_log` VALUES (157, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"/dataset/index\",\"createBy\":\"admin\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"/datasetIndex\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 16:32:53', 5); +INSERT INTO `sys_oper_log` VALUES (158, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"dataset/index\",\"createBy\":\"admin\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 16:36:12', 3); +INSERT INTO `sys_oper_log` VALUES (159, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"Dataset/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 16:41:13', 3); +INSERT INTO `sys_oper_log` VALUES (160, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"dataset/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 16:48:16', 10); +INSERT INTO `sys_oper_log` VALUES (161, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"system/user/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:03:19', 4); +INSERT INTO `sys_oper_log` VALUES (162, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"system/user/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetindex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:07:43', 5); +INSERT INTO `sys_oper_log` VALUES (163, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"system/user/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:10:59', 4); +INSERT INTO `sys_oper_log` VALUES (164, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2010,\"menuName\":\"AI资产管理\",\"menuType\":\"M\",\"orderNum\":6,\"params\":{},\"parentId\":0,\"path\":\"dataset\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:11:43', 3); +INSERT INTO `sys_oper_log` VALUES (165, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"dataset/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:12:18', 2); +INSERT INTO `sys_oper_log` VALUES (166, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"Dataset/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:12:41', 3); +INSERT INTO `sys_oper_log` VALUES (167, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"dataset/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-05 17:14:05', 4); +INSERT INTO `sys_oper_log` VALUES (168, '字典类型', 1, 'com.ruoyi.system.controller.SysDictTypeController.add()', 'POST', 1, 'admin', NULL, '/dict/type', '172.20.32.21', '', '{\"createBy\":\"admin\",\"dictName\":\"可用集群\",\"dictType\":\"available_cluster\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-08 10:47:11', 13); +INSERT INTO `sys_oper_log` VALUES (169, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '172.20.32.21', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"NPU\",\"dictSort\":1,\"dictType\":\"available_cluster\",\"dictValue\":\"NPU\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-08 10:47:31', 7); +INSERT INTO `sys_oper_log` VALUES (170, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '172.20.32.21', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"GPU\",\"dictSort\":2,\"dictType\":\"available_cluster\",\"dictValue\":\"GPU\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-08 10:47:43', 5); +INSERT INTO `sys_oper_log` VALUES (171, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"model/index\",\"createBy\":\"admin\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuName\":\"模型管理\",\"menuType\":\"C\",\"orderNum\":2,\"params\":{},\"parentId\":2010,\"path\":\"modelIndex\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 10:40:52', 31); +INSERT INTO `sys_oper_log` VALUES (172, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2016,\"menuName\":\"模型管理\",\"menuType\":\"C\",\"orderNum\":2,\"params\":{},\"parentId\":2010,\"path\":\"modelIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 10:46:37', 5); +INSERT INTO `sys_oper_log` VALUES (173, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"dataset/index\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2015,\"menuName\":\"数据集管理\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2010,\"path\":\"datasetIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 10:48:33', 3); +INSERT INTO `sys_oper_log` VALUES (174, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"component\":\"\",\"icon\":\"#\",\"isCache\":\"1\",\"isFrame\":\"1\",\"menuId\":2016,\"menuName\":\"模型管理\",\"menuType\":\"C\",\"orderNum\":2,\"params\":{},\"parentId\":2010,\"path\":\"modelIndex\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 10:49:27', 3); +INSERT INTO `sys_oper_log` VALUES (175, '菜单管理', 3, 'com.ruoyi.system.controller.SysMenuController.remove()', 'DELETE', 1, 'admin', NULL, '/menu/2009', '172.20.32.21', '', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 13:50:56', 9); +INSERT INTO `sys_oper_log` VALUES (176, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"TableOutlined\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2008,\"menuName\":\"镜像管理\",\"menuType\":\"C\",\"orderNum\":3,\"params\":{},\"parentId\":2010,\"path\":\"/image\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 13:52:16', 6); +INSERT INTO `sys_oper_log` VALUES (177, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"DoubleRightOutlined\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2011,\"menuName\":\"资源管理\",\"menuType\":\"C\",\"orderNum\":5,\"params\":{},\"parentId\":2010,\"path\":\"/readad\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 13:52:56', 3); +INSERT INTO `sys_oper_log` VALUES (178, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"BorderInnerOutlined\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2012,\"menuName\":\"组件管理\",\"menuType\":\"C\",\"orderNum\":6,\"params\":{},\"parentId\":2010,\"path\":\"/compent\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 13:53:31', 2); +INSERT INTO `sys_oper_log` VALUES (179, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"createBy\":\"admin\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"工作空间\",\"menuType\":\"C\",\"orderNum\":0,\"params\":{},\"parentId\":0,\"path\":\"/workspace\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 13:56:21', 3); +INSERT INTO `sys_oper_log` VALUES (180, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2018,\"menuName\":\"数据准备\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":0,\"path\":\"datasetPreparation\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 14:09:50', 4); +INSERT INTO `sys_oper_log` VALUES (181, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.21', '', '{\"children\":[],\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"7\",\"menuId\":2020,\"menuName\":\"模型在线部署\",\"menuType\":\"M\",\"orderNum\":7,\"params\":{},\"parentId\":0,\"path\":\"modelDseployment\",\"perms\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 14:09:56', 3); +INSERT INTO `sys_oper_log` VALUES (182, '字典类型', 1, 'com.ruoyi.system.controller.SysDictTypeController.add()', 'POST', 1, 'admin', NULL, '/dict/type', '172.20.32.21', '', '{\"createBy\":\"admin\",\"dictName\":\"数据集模型类别\",\"dictType\":\"dataset_models_category\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 17:02:19', 8); +INSERT INTO `sys_oper_log` VALUES (183, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '172.20.32.21', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"数据集分类\",\"dictSort\":1,\"dictType\":\"dataset_models_category\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 17:03:02', 5); +INSERT INTO `sys_oper_log` VALUES (184, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '172.20.32.21', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"研究方向/应用领域\",\"dictSort\":2,\"dictType\":\"dataset_models_category\",\"dictValue\":\"2\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 17:03:38', 3); +INSERT INTO `sys_oper_log` VALUES (185, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '172.20.32.21', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"模型框架\",\"dictSort\":3,\"dictType\":\"dataset_models_category\",\"dictValue\":\"3\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 17:03:50', 2); +INSERT INTO `sys_oper_log` VALUES (186, '字典数据', 1, 'com.ruoyi.system.controller.SysDictDataController.add()', 'POST', 1, 'admin', NULL, '/dict/data', '172.20.32.21', '', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"模型能力\",\"dictSort\":4,\"dictType\":\"dataset_models_category\",\"dictValue\":\"4\",\"isDefault\":\"N\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-14 17:04:15', 4); +INSERT INTO `sys_oper_log` VALUES (187, '用户管理', 1, 'com.ruoyi.system.controller.SysUserController.add()', 'POST', 1, 'admin', NULL, '/user', '172.20.32.98', '', '{\"admin\":false,\"createBy\":\"admin\",\"deptId\":100,\"email\":\"1070211640@qq.com\",\"nickName\":\"xidaray\",\"params\":{},\"phonenumber\":\"15574856860\",\"postIds\":[2],\"remark\":\"测试账号\",\"roleIds\":[1],\"sex\":\"0\",\"status\":\"0\",\"userId\":3,\"userName\":\"1070211640\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-19 09:15:53', 137); +INSERT INTO `sys_oper_log` VALUES (188, '用户管理', 2, 'com.ruoyi.system.controller.SysUserController.resetPwd()', 'PUT', 1, 'admin', NULL, '/user/resetPwd', '172.20.32.98', '', '{\"admin\":false,\"params\":{},\"updateBy\":\"admin\",\"userId\":2}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-03-19 09:17:39', 74); -- ---------------------------- -- Table structure for sys_post @@ -1029,7 +1246,7 @@ CREATE TABLE `sys_post` ( `post_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '岗位ID', `post_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '岗位编码', `post_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '岗位名称', - `post_sort` int(4) NOT NULL COMMENT '显示顺序', + `post_sort` int(11) NOT NULL COMMENT '显示顺序', `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '状态(0正常 1停用)', `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', @@ -1037,7 +1254,7 @@ CREATE TABLE `sys_post` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`post_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '岗位信息表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '岗位信息表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_post @@ -1055,7 +1272,7 @@ CREATE TABLE `sys_role` ( `role_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID', `role_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称', `role_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色权限字符串', - `role_sort` int(4) NOT NULL COMMENT '显示顺序', + `role_sort` int(11) NOT NULL COMMENT '显示顺序', `data_scope` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', `menu_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '菜单树选择项是否关联显示', `dept_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '部门树选择项是否关联显示', @@ -1067,7 +1284,7 @@ CREATE TABLE `sys_role` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色信息表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色信息表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_role @@ -1083,7 +1300,7 @@ CREATE TABLE `sys_role_dept` ( `role_id` bigint(20) NOT NULL COMMENT '角色ID', `dept_id` bigint(20) NOT NULL COMMENT '部门ID', PRIMARY KEY (`role_id`, `dept_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和部门关联表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和部门关联表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_role_dept @@ -1100,7 +1317,7 @@ CREATE TABLE `sys_role_menu` ( `role_id` bigint(20) NOT NULL COMMENT '角色ID', `menu_id` bigint(20) NOT NULL COMMENT '菜单ID', PRIMARY KEY (`role_id`, `menu_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_role_menu @@ -1198,13 +1415,14 @@ CREATE TABLE `sys_user` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_user -- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-01-04 10:59:56', 'admin', '2024-01-04 10:59:56', '', NULL, '管理员'); -INSERT INTO `sys_user` VALUES (2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-01-04 10:59:56', 'admin', '2024-01-04 10:59:56', '', NULL, '测试员'); +INSERT INTO `sys_user` VALUES (1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-01-04 10:59:56', 'admin', '2024-01-04 10:59:56', '', '2024-02-28 14:38:12', '管理员'); +INSERT INTO `sys_user` VALUES (2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$47WwH3KTSmsBVdkIpP7UMO5RRm1lYG9.LplSxP9br87ivb1yQgPnq', '0', '0', '127.0.0.1', '2024-01-04 10:59:56', 'admin', '2024-01-04 10:59:56', 'admin', '2024-03-19 09:17:39', '测试员'); +INSERT INTO `sys_user` VALUES (3, 100, '1070211640', 'xidaray', '00', '1070211640@qq.com', '15574856860', '0', '', '$2a$10$0euhi96T18FcYO8L.c9eKOb5WHNe.fS0oc/ZwZ/KtgNPNFWkIaGKq', '0', '0', '', NULL, 'admin', '2024-03-19 09:15:52', '', NULL, '测试账号'); -- ---------------------------- -- Table structure for sys_user_post @@ -1214,13 +1432,14 @@ CREATE TABLE `sys_user_post` ( `user_id` bigint(20) NOT NULL COMMENT '用户ID', `post_id` bigint(20) NOT NULL COMMENT '岗位ID', PRIMARY KEY (`user_id`, `post_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户与岗位关联表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户与岗位关联表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_user_post -- ---------------------------- INSERT INTO `sys_user_post` VALUES (1, 1); INSERT INTO `sys_user_post` VALUES (2, 2); +INSERT INTO `sys_user_post` VALUES (3, 2); -- ---------------------------- -- Table structure for sys_user_role @@ -1230,13 +1449,14 @@ CREATE TABLE `sys_user_role` ( `user_id` bigint(20) NOT NULL COMMENT '用户ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID', PRIMARY KEY (`user_id`, `role_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_user_role -- ---------------------------- INSERT INTO `sys_user_role` VALUES (1, 1); INSERT INTO `sys_user_role` VALUES (2, 2); +INSERT INTO `sys_user_role` VALUES (3, 1); -- ---------------------------- -- Table structure for workflow @@ -1247,75 +1467,140 @@ CREATE TABLE `workflow` ( `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工作流名称', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'DAG工作流描述', `dag` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'DAG图', + `global_param` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '全局参数', `create_by` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` tinyint(10) NULL DEFAULT 1 COMMENT '0,失效 1生效', + `state` tinyint(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'DAG workflow' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 115 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'DAG workflow' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of workflow -- ---------------------------- -INSERT INTO `workflow` VALUES (1, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', 'admin', '2023-10-31 10:19:58', 'admin', '2023-10-31 10:20:04', 0); -INSERT INTO `workflow` VALUES (2, 'xxx', 'TEST', '{}', NULL, NULL, NULL, NULL, 0); -INSERT INTO `workflow` VALUES (3, 'xxx', 'TEST', '{}', NULL, NULL, NULL, NULL, 0); -INSERT INTO `workflow` VALUES (20, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, NULL, NULL, NULL, NULL); -INSERT INTO `workflow` VALUES (21, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, NULL, NULL, NULL, NULL); -INSERT INTO `workflow` VALUES (22, NULL, NULL, NULL, 'admin', '2023-11-15 14:06:32', 'admin', '2023-11-15 14:06:32', 0); -INSERT INTO `workflow` VALUES (23, NULL, NULL, NULL, 'admin', '2023-11-15 14:11:48', 'admin', '2023-11-15 14:11:48', 0); -INSERT INTO `workflow` VALUES (24, NULL, NULL, NULL, 'admin', '2023-11-15 14:20:51', 'admin', '2023-11-15 14:20:51', 0); -INSERT INTO `workflow` VALUES (25, NULL, NULL, NULL, 'admin', '2023-11-15 14:22:46', 'admin', '2023-11-15 14:22:46', 0); -INSERT INTO `workflow` VALUES (26, 'pytorch训练', 'pytorch 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-15 14:24:02', 'admin', '2023-11-15 16:25:44', 0); -INSERT INTO `workflow` VALUES (27, NULL, NULL, NULL, 'admin', '2023-11-15 14:25:17', 'admin', '2023-11-15 14:25:17', 0); -INSERT INTO `workflow` VALUES (28, 'tensorflow训练', 'tensorflow 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-15 14:27:35', 'admin', '2023-11-18 15:45:16', 0); -INSERT INTO `workflow` VALUES (29, 'tensorflow训练', 'tensorflow 小模型训练', '{\\\"pens\\\":[{\\\"componentId\\\":1,\\\"componentName\\\":\\\"git-clone\\\",\\\"categoryId\\\":2,\\\"categoryName\\\":\\\"代码clone组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"代码拉取\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"代码克隆\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"git-clone-010ee3\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"ssh_key\\\",\\\"name\\\":\\\"ssh私钥\\\",\\\"value\\\":\\\"fdasfasfadsfadsf\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"git_repo_addr\\\",\\\"name\\\":\\\"代码库地址\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"git_branch\\\",\\\"name\\\":\\\"代码库分支/tag\\\",\\\"value\\\":\\\"master\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"clone_depth\\\",\\\"name\\\":\\\"克隆深度\\\",\\\"value\\\":\\\"1\\\",\\\"type\\\":\\\"int\\\",\\\"require\\\":true,\\\"defaultValue\\\":\\\"1\\\"}],\\\"outParameters\\\":[{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码路径\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/code\\\"}],\\\"id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"train\\\",\\\"categoryId\\\":3,\\\"categoryName\\\":\\\"训练组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"RUNNING_SET\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"pytorch训练\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"train-091bb1e\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"train.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"somuns/pretrainmodel/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"batch_size\\\\\\\":\\\\\\\"256\\\\\\\",\\\\\\\"epoch_size\\\\\\\":\\\\\\\"2\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"model_path\\\",\\\"name\\\":\\\"模型输出路径\\\",\\\"value\\\":\\\"model_path\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/model\\\"}],\\\"id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"inference\\\",\\\"categoryId\\\":4,\\\"categoryName\\\":\\\"模型推理测试\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"Actor\\\",\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"inference.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"{{train-091bb1e.model_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"modelname\\\\\\\":\\\\\\\"/model/mnist_epoch1_0.00.pkl\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/result\\\"}],\\\"id\\\":\\\"inference-37f712\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"inference-37f712\\\"}],\\\"globalParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\"},{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]}', 'admin', '2023-11-15 14:35:48', 'admin', '2023-11-15 14:36:45', 0); -INSERT INTO `workflow` VALUES (30, 'tensorflow训练', 'tensorflow 小模型训练', '{\\\"pens\\\":[{\\\"componentId\\\":1,\\\"componentName\\\":\\\"git-clone\\\",\\\"categoryId\\\":2,\\\"categoryName\\\":\\\"代码clone组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAXXXXXXXAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"代码拉取\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"代码克隆\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"git-clone-010ee3\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"ssh_key\\\",\\\"name\\\":\\\"ssh私钥\\\",\\\"value\\\":\\\"fdasfasfadsfadsf\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"git_repo_addr\\\",\\\"name\\\":\\\"代码库地址\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"git_branch\\\",\\\"name\\\":\\\"代码库分支/tag\\\",\\\"value\\\":\\\"master\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"clone_depth\\\",\\\"name\\\":\\\"克隆深度\\\",\\\"value\\\":\\\"1\\\",\\\"type\\\":\\\"int\\\",\\\"require\\\":true,\\\"defaultValue\\\":\\\"1\\\"}],\\\"outParameters\\\":[{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码路径\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/code\\\"}],\\\"id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"train\\\",\\\"categoryId\\\":3,\\\"categoryName\\\":\\\"训练组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"RUNNING_SET\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"pytorch训练\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"train-091bb1e\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"train.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"somuns/pretrainmodel/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"batch_size\\\\\\\":\\\\\\\"256\\\\\\\",\\\\\\\"epoch_size\\\\\\\":\\\\\\\"2\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"model_path\\\",\\\"name\\\":\\\"模型输出路径\\\",\\\"value\\\":\\\"model_path\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/model\\\"}],\\\"id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"inference\\\",\\\"categoryId\\\":4,\\\"categoryName\\\":\\\"模型推理测试\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"Actor\\\",\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"inference.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"{{train-091bb1e.model_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"modelname\\\\\\\":\\\\\\\"/model/mnist_epoch1_0.00.pkl\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/result\\\"}],\\\"id\\\":\\\"inference-37f712\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"inference-37f712\\\"}],\\\"globalParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\"},{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]}', 'admin', '2023-11-15 14:39:55', 'admin', '2023-11-15 14:41:47', 0); -INSERT INTO `workflow` VALUES (31, 'tensorflow大模型训练', 'tensorflow 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-17 14:04:42', 'admin', '2023-11-17 14:05:47', 0); -INSERT INTO `workflow` VALUES (32, 'tensorflow训练', NULL, '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-18 15:44:51', 'admin', '2023-11-18 15:45:36', 0); -INSERT INTO `workflow` VALUES (33, 'tensorflow训练', NULL, '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-18 15:45:45', 'admin', '2023-11-18 15:45:45', 0); -INSERT INTO `workflow` VALUES (34, '组件库方式pytorch手写体识别', 'pytorch手写体识别模型训练,模型较小', '{\"nodes\":[{\"id\":\"model-train-common-eb64e7f\",\"category_id\":4,\"component_name\":\"model-train-common\",\"component_label\":\"xxxxx\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{--dataset={type=ref, item_type=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --model_name={type=ref, item_type=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, form_info={name=mnist, path=/mnt/e/xxxx}}}\",\"out_parameters\":\"{--model_output={type=str, path=/model}}\",\"description\":null,\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-09T13:48:59.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-09T13:48:59.000+08:00\",\"state\":1,\"image\":\"nginx:latest\",\"env_variables\":\"{}\",\"x\":378,\"y\":127,\"label\":\"model-train-common\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0},{\"id\":\"git-clone-1585453d\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":322.1797678438652,\"y\":104.66497815006859,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0},{\"id\":\"model-train-14ff617\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"sfsdf\",\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1,\\\"value\\\":\\\"7200\\\"},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1,\\\"value\\\":\\\"2\\\"}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"sfsdf\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"asfsfsa\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T10:52:45.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T10:52:45.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":335.12346757576864,\"y\":138.54701568358064,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"超时中断\":\"7200\",\"重试次数\":\"2\",\"--dataset\":\"sfsdf\",\"--model_name\":\"asfsfsa\",\"depth\":0}],\"edges\":[],\"combos\":[]}', 'admin', '2023-11-20 09:31:03', 'admin', '2024-01-16 10:58:32', 0); -INSERT INTO `workflow` VALUES (35, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-20 09:32:05', 'admin', '2023-11-20 09:34:37', 0); -INSERT INTO `workflow` VALUES (36, 'mindspore多语模型模型', 'mindspore多语言模型,支持中文、阿拉伯语、英语', NULL, 'admin', '2023-11-20 09:33:14', 'admin', '2023-11-20 09:33:14', 0); -INSERT INTO `workflow` VALUES (37, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', '苏影城', '2023-12-05 10:00:53', '苏影城', '2023-12-05 10:00:53', 0); -INSERT INTO `workflow` VALUES (38, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-12-11 09:21:12', 'admin', '2023-12-11 09:21:12', 0); -INSERT INTO `workflow` VALUES (39, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\\\"components\\\":[{\\\"category_id\\\":1,\\\"component_name\\\":\\\"git-clone\\\",\\\"component_label\\\":\\\"git代码拉取\\\",\\\"description\\\":\\\"git代码拉取,支持公有和私有仓库拉取\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/git:202312071000\\\",\\\"working_directory\\\":\\\"/app\\\",\\\"command\\\":\\\"python git_clone.py\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 1, 内存: 2GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}},\\\"out_parameters\\\":{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/code\\\"}},\\\"task_id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"category_id\\\":2,\\\"component_name\\\":\\\"train\\\",\\\"component_label\\\":\\\"pytorch训练\\\",\\\"description\\\":\\\"通用模型训练组件,支持各种类型框架的训练\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"working_directory\\\":\\\"{{git-clone-010ee3.--code_output}}\\\",\\\"command\\\":\\\"python train.py --epoch_size=1 --batch_size=128\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 2, 内存: 4GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}},\\\"out_parameters\\\":{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/model\\\"}},\\\"env_virables\\\":{},\\\"task_id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"category_id\\\":2,\\\"component_name\\\":\\\"train\\\",\\\"component_label\\\":\\\"pytorch推理\\\",\\\"description\\\":\\\"通用模型训练组件,支持各种类型框架的训练\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"working_directory\\\":\\\"{{git-clone-010ee3.--code_output}}\\\",\\\"command\\\":\\\"python inference.py\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 2, 内存: 4GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"{{train-091bb1e.--model_output}}\\\"}},\\\"out_parameters\\\":{\\\"--result_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/result\\\"}},\\\"env_virables\\\":{\\\"HOST_IP\\\":\\\"10.1.1.2\\\"},\\\"task_id\\\":\\\"train-37f712\\\"}],\\\"lines\\\":[{\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"train-37f712\\\"}]}', '苏影城', '2023-12-11 15:02:35', 'admin', '2023-12-21 14:26:51', 0); -INSERT INTO `workflow` VALUES (40, '组件库方式pytorch手写体识别', '手写体识别', '{\"nodes\":[{\"id\":\"git-clone-5e1c0fb9\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"234\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"23423\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"4324\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"3243\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"322342\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":129.21314461535442,\"y\":108.06837085494266,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"234\",\"--branch\":\"23423\",\"--depth\":\"4324\",\"--ssh_private_key\":\"3243\",\"--code_output\":\"322342\",\"depth\":0},{\"id\":\"git-clone-13ccc55c\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}],\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"123\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"12312\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"123\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"123123\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"1231\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":94.23728802612405,\"y\":14.280297586901554,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"123\",\"--branch\":\"12312\",\"--depth\":\"123\",\"--ssh_private_key\":\"123123\",\"--code_output\":\"1231\",\"depth\":0},{\"id\":\"git-clone-1e58ce4\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":-1.7978269157272635,\"y\":105.51147129445087,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"超时中断\":\"423\",\"重试次数\":\"324\",\"depth\":0},{\"id\":\"git-clone-3ed37e6\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":-1.6850668950243914,\"y\":56.36090895677579,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"超时中断\":\"324\",\"重试次数\":\"23423\",\"depth\":0},{\"id\":\"git-clone-827bf6e\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1,\\\"value\\\":\\\"111\\\"},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1,\\\"value\\\":\\\"11\\\"}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":-0.557352849817832,\"y\":10.852775312352676,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"超时中断\":\"111\",\"重试次数\":\"11\",\"depth\":0}],\"edges\":[],\"combos\":[]}', 'admin', '2023-12-21 14:26:22', 'admin', '2024-01-17 10:33:34', 0); -INSERT INTO `workflow` VALUES (41, NULL, NULL, NULL, 'admin', '2024-01-05 15:17:06', 'admin', '2024-01-05 15:17:06', 0); -INSERT INTO `workflow` VALUES (42, NULL, NULL, NULL, 'admin', '2024-01-05 15:19:38', 'admin', '2024-01-05 15:19:38', 0); -INSERT INTO `workflow` VALUES (43, NULL, NULL, NULL, 'admin', '2024-01-05 15:33:21', 'admin', '2024-01-05 15:33:21', 0); -INSERT INTO `workflow` VALUES (44, NULL, NULL, NULL, 'admin', '2024-01-05 15:33:38', 'admin', '2024-01-05 15:33:38', 0); -INSERT INTO `workflow` VALUES (45, NULL, NULL, NULL, 'admin', '2024-01-05 15:33:47', 'admin', '2024-01-05 15:33:47', 0); -INSERT INTO `workflow` VALUES (46, NULL, NULL, NULL, 'admin', '2024-01-05 15:48:57', 'admin', '2024-01-05 15:48:57', 0); -INSERT INTO `workflow` VALUES (47, NULL, NULL, NULL, 'admin', '2024-01-05 15:49:09', 'admin', '2024-01-05 15:49:09', 0); -INSERT INTO `workflow` VALUES (48, NULL, NULL, NULL, 'admin', '2024-01-08 16:50:22', 'admin', '2024-01-08 16:50:22', 0); -INSERT INTO `workflow` VALUES (49, NULL, NULL, NULL, 'admin', '2024-01-08 16:50:29', 'admin', '2024-01-08 16:50:29', 0); -INSERT INTO `workflow` VALUES (50, NULL, NULL, NULL, 'admin', '2024-01-08 16:50:37', 'admin', '2024-01-08 16:50:37', 0); -INSERT INTO `workflow` VALUES (51, NULL, NULL, NULL, 'admin', '2024-01-08 16:51:16', 'admin', '2024-01-08 16:51:16', 0); -INSERT INTO `workflow` VALUES (52, '组件库方式pytorch手写体识别', NULL, NULL, 'admin', '2024-01-09 10:48:16', 'admin', '2024-01-13 11:17:01', 0); -INSERT INTO `workflow` VALUES (53, '202401113', '测试流水线', NULL, 'admin', '2024-01-13 14:06:48', 'admin', '2024-01-13 14:06:48', 0); -INSERT INTO `workflow` VALUES (54, 'tensorflow训练', '小模型训练', NULL, 'admin', '2024-01-15 09:05:42', 'admin', '2024-01-15 09:05:42', 0); -INSERT INTO `workflow` VALUES (55, '2323', '213', '{\"nodes\":[],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-15 09:08:08', 'admin', '2024-01-17 10:33:38', 0); -INSERT INTO `workflow` VALUES (56, '组件库方式pytorch手写体识别', 'pytorch手写体识别模型训练,模型较小', '{\"nodes\":[{\"id\":\"model-train-common-eb64e7f\",\"category_id\":4,\"component_name\":\"model-train-common\",\"component_label\":\"xxxxx\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{--dataset={type=ref, item_type=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --model_name={type=ref, item_type=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, form_info={name=mnist, path=/mnt/e/xxxx}}}\",\"out_parameters\":\"{--model_output={type=str, path=/model}}\",\"description\":null,\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-09T13:48:59.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-09T13:48:59.000+08:00\",\"state\":1,\"image\":\"nginx:latest\",\"env_variables\":\"{}\",\"x\":378,\"y\":127,\"label\":\"model-train-common\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-501a3401\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":415.0094905570022,\"y\":204.83253819252815,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-31531a5a\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":181.88625326805598,\"y\":159.1594141522448,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-15 09:09:57', 'admin', '2024-01-15 16:54:54', 0); -INSERT INTO `workflow` VALUES (57, 'pytorch2024', '小模型测试', '{\"nodes\":[{\"id\":\"git-clone-469c0b7\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":309,\"y\":178,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-bd4e33a\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":295,\"y\":305,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-3c0dc04\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":105.24208467614898,\"y\":245.87487019730008,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-212f7570\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":151.1338061139437,\"y\":73.51686814959265,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-911df96\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"123\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"123\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"12312\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"31232\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":125.32385526969382,\"y\":124.0761758332756,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"123\",\"--branch\":\"123\",\"--depth\":\"12312\",\"--ssh_private_key\":\"31232\",\"depth\":0},{\"id\":\"git-clone-42536e3\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"123\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"2131\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"3123\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"13\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":83.38488291274636,\"y\":61.420361709643245,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"123\",\"--branch\":\"2131\",\"--depth\":\"3123\",\"--ssh_private_key\":\"13\",\"depth\":0},{\"id\":\"git-clone-6bf6a6c2\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"234\",\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"23434\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"234\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"23423\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"423432\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":45.7217977368551,\"y\":126.96996628164894,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"23434\",\"--branch\":\"234\",\"--depth\":\"23423\",\"--ssh_private_key\":\"423432\",\"depth\":0},{\"id\":\"git-clone-411a73dc\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"234\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"234\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"324\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"23423\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":248.57921347744823,\"y\":7.451682379434722,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"234\",\"--branch\":\"234\",\"--depth\":\"324\",\"--ssh_private_key\":\"23423\",\"depth\":0}],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-15 09:19:41', 'admin', '2024-01-16 09:51:15', 0); -INSERT INTO `workflow` VALUES (58, 'dsffads', 'asfadsf', '{\"nodes\":[{\"0\":\"7200\",\"1\":\"2\",\"id\":\"git-clone-7fab1783\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"启动命令\",\"resources_standard\":\"324\",\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1,\\\"value\\\":\\\"7200\\\"},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1,\\\"value\\\":\\\"2\\\"}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"sfsfsadf\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"master\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"sdfsfadfdafds\",\"env_variables\":\"aa=bb\",\"x\":96.23056300268097,\"y\":155.7319034852547,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"超时中断\":\"2\",\"重试次数\":\"2\",\"depth\":0,\"--code_path\":\"sfsfsadf\",\"--branch\":\"master\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-5f1ce402\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"SFSFAFA\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"3600\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"2\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"mnist\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"CC=DD\\nEE=FF\",\"x\":114.99450634503813,\"y\":192.02422747982732,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"3600\",\"retry_times\":\"2\",\"--dataset\":\"mnist\",\"--model_name\":\"\",\"--model_output\":\"/model\"}],\"edges\":[{\"source\":\"git-clone-7fab1783\",\"target\":\"model-train-5f1ce402\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.80588811892232861705376735793\",\"startPoint\":{\"x\":96.23056300268098,\"y\":155.7319034852547},\"endPoint\":{\"x\":114.99450634503813,\"y\":192.02422747982732},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', 'admin', '2024-01-16 10:56:55', 'admin', '2024-01-16 11:46:59', 0); -INSERT INTO `workflow` VALUES (59, '324', '4234', NULL, 'admin', '2024-01-16 11:43:46', 'admin', '2024-01-16 11:43:46', 0); -INSERT INTO `workflow` VALUES (60, '测试接口流水线', '测试', '{\"nodes\":[{\"id\":\"git-clone-fd4d56\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 1, 内存: 2GB\\\\\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"master\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:37:54.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:37:54.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":396.20001220703125,\"y\":92.16249084472656,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"retry_times\":\"1\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"master\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0},{\"id\":\"model-train-51a3566\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":435.20001220703125,\"y\":207.16249084472656,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0}],\"edges\":[{\"source\":\"git-clone-fd4d56\",\"target\":\"model-train-51a3566\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.88546799091257491705384300601\",\"startPoint\":{\"x\":396.20001220703125,\"y\":92.16249084472656},\"endPoint\":{\"x\":435.20001220703125,\"y\":207.16249084472656},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"git-clone-fd4d56\",\"target\":\"git-clone-fd4d56\",\"type\":\"loop\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.52301659420844951705384305585\",\"startPoint\":{\"x\":378.45001220703125,\"y\":56.66249084472656},\"endPoint\":{\"x\":413.95001220703125,\"y\":56.66249084472656},\"loopCfg\":{\"position\":\"top\",\"dist\":50},\"depth\":0}],\"combos\":[]}', 'admin', '2024-01-16 13:48:36', 'admin', '2024-01-16 13:54:26', 0); -INSERT INTO `workflow` VALUES (61, '测试接口流水线', '设计', '{\"nodes\":[{\"id\":\"git-clone-35e4b7b7\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:37:54.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:37:54.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":347,\"y\":125.38749694824219,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0,\"max_run_time\":\"0\"},{\"id\":\"model-train-0798f5f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-35e4b7b7.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":313.6465134638248,\"y\":217.0234391702886,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"retry_times\":\"0\"},{\"id\":\"model-train-4d6cc04\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-35e4b7b7.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-0798f5f.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":374.7110353336509,\"y\":326.60703400941577,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-0798f5f.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0},{\"id\":\"model-train-f5e8375\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-35e4b7b7.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-0798f5f.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":138.94479032475843,\"y\":322.5885023081963,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-0798f5f.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-35e4b7b7\",\"target\":\"model-train-0798f5f\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.159430719649826141705384556185\",\"startPoint\":{\"x\":347,\"y\":125.38749694824219},\"endPoint\":{\"x\":313.6465134638248,\"y\":217.0234391702886},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-0798f5f\",\"target\":\"model-train-4d6cc04\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.063445436037490311705391807441\",\"startPoint\":{\"x\":313.6465134638248,\"y\":217.0234391702886},\"endPoint\":{\"x\":374.7110353336509,\"y\":326.60703400941577},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-0798f5f\",\"target\":\"model-train-f5e8375\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.103591317098980841705476907383\",\"startPoint\":{\"x\":313.6465134638248,\"y\":217.0234391702886},\"endPoint\":{\"x\":138.94479032475843,\"y\":322.5885023081963},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', 'admin', '2024-01-16 13:54:48', 'admin', '2024-01-18 17:02:23', 0); -INSERT INTO `workflow` VALUES (62, '2323', '213', '{\"nodes\":[],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-17 10:37:07', 'admin', '2024-01-17 10:37:07', 0); -INSERT INTO `workflow` VALUES (63, '2323', '213', '{\"nodes\":[{\"id\":\"git-clone-2b5abceb\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":205,\"y\":181,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-17 10:37:15', 'admin', '2024-01-19 11:16:24', 0); -INSERT INTO `workflow` VALUES (64, '测试接口流水线', '设计', '{\"nodes\":[{\"id\":\"git-clone-0a759f7\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":197.39996337890625,\"y\":120,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"model-train-ad3c3e\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":468.39996337890625,\"y\":126,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-17 15:39:01', 'admin', '2024-01-22 09:29:43', 0); -INSERT INTO `workflow` VALUES (65, '4', '234234', NULL, 'admin', '2024-01-17 16:42:17', 'admin', '2024-01-17 16:42:17', 0); -INSERT INTO `workflow` VALUES (66, 'testqwqw', '1212', '{\"nodes\":[{\"id\":\"git-clone-130df165\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":310,\"y\":185,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-17 16:48:14', 'admin', '2024-01-18 15:29:16', 0); -INSERT INTO `workflow` VALUES (67, 'testqwqw', '1212', '{\"nodes\":[{\"id\":\"git-clone-9412b\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":267,\"y\":181,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', 'admin', '2024-01-18 08:48:37', 'admin', '2024-01-18 15:29:05', 0); -INSERT INTO `workflow` VALUES (68, 'test', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', 'admin', '2024-01-22 15:17:38', 'admin', '2024-01-25 11:08:23', 0); -INSERT INTO `workflow` VALUES (69, 'test0124', 'test', NULL, 'admin', '2024-01-24 09:13:18', 'admin', '2024-01-24 09:13:18', 0); -INSERT INTO `workflow` VALUES (70, 'mnsit-0124', '测试接口0124', '{\"nodes\":[{\"id\":\"git-clone-58252975\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":806.1162039034662,\"y\":97.96333604302986,\"label\":\"克隆训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--code_output\":\"/code\",\"--depth\":\"1\"},{\"id\":\"model-train-7064f00\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":803.6513097729328,\"y\":227.1054241623483,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-7fe21e4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":685.2643030774179,\"y\":408.3345428099675,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result-new\",\"depth\":0},{\"id\":\"model-train-afcf186\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":955.8927139658065,\"y\":400.70364911004737,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-58252975\",\"target\":\"model-train-7064f00\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.66531006564768451706059692250\",\"startPoint\":{\"x\":806.1162039034662,\"y\":97.96333604302987},\"endPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-7fe21e4\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.50795512775462131706059710625\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":685.2643030774179,\"y\":408.3345428099675},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-afcf186\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.91951665829011691706059718272\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":955.8927139658065,\"y\":400.70364911004737},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', 'admin', '2024-01-24 09:15:34', 'admin', '2024-01-25 15:57:18', 1); -INSERT INTO `workflow` VALUES (71, 'mnsit-0124', '测试接口0124', '{\"nodes\":[{\"id\":\"git-clone-58252975\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":806.1162039034662,\"y\":97.96333604302986,\"label\":\"克隆训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--code_output\":\"/code\",\"--depth\":\"1\"},{\"id\":\"model-train-7064f00\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":803.6513097729328,\"y\":227.1054241623483,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-7fe21e4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":685.2643030774179,\"y\":408.3345428099675,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result-new\",\"depth\":0},{\"id\":\"model-train-afcf186\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":955.8927139658065,\"y\":400.70364911004737,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-58252975\",\"target\":\"model-train-7064f00\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.66531006564768451706059692250\",\"startPoint\":{\"x\":806.1162039034662,\"y\":97.96333604302987},\"endPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-7fe21e4\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.50795512775462131706059710625\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":685.2643030774179,\"y\":408.3345428099675},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-afcf186\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.91951665829011691706059718272\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":955.8927139658065,\"y\":400.70364911004737},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', 'admin', '2024-01-25 16:08:41', 'admin', '2024-01-25 16:08:41', 0); -INSERT INTO `workflow` VALUES (72, 'test', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', 'admin', '2024-01-25 16:36:59', 'admin', '2024-01-25 16:36:59', 0); -INSERT INTO `workflow` VALUES (73, 'test', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', 'admin', '2024-01-25 16:38:25', 'admin', '2024-01-25 16:38:25', 0); -INSERT INTO `workflow` VALUES (74, 'test-copy', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', 'admin', '2024-01-25 16:40:53', 'admin', '2024-01-25 16:40:53', 0); -INSERT INTO `workflow` VALUES (75, 'mnsit-0124-copy', '测试接口0124', '{\"nodes\":[{\"id\":\"git-clone-58252975\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":806.1162039034662,\"y\":97.96333604302986,\"label\":\"克隆训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--code_output\":\"/code\",\"--depth\":\"1\"},{\"id\":\"model-train-7064f00\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":803.6513097729328,\"y\":227.1054241623483,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-7fe21e4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":685.2643030774179,\"y\":408.3345428099675,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result-new\",\"depth\":0},{\"id\":\"model-train-afcf186\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inferenced.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":955.8927139658065,\"y\":400.70364911004737,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-58252975\",\"target\":\"model-train-7064f00\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.66531006564768451706059692250\",\"startPoint\":{\"x\":806.1162039034662,\"y\":97.96333604302987},\"endPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-7fe21e4\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.50795512775462131706059710625\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":685.2643030774179,\"y\":408.3345428099675},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-afcf186\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.91951665829011691706059718272\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":955.8927139658065,\"y\":400.70364911004737},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', 'admin', '2024-01-25 16:56:37', 'admin', '2024-01-25 16:56:56', 1); +INSERT INTO `workflow` VALUES (1, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, 'admin', '2023-10-31 10:19:58', 'admin', '2023-10-31 10:20:04', 0); +INSERT INTO `workflow` VALUES (2, 'xxx', 'TEST', '{}', NULL, NULL, NULL, NULL, NULL, 0); +INSERT INTO `workflow` VALUES (3, 'xxx', 'TEST', '{}', NULL, NULL, NULL, NULL, NULL, 0); +INSERT INTO `workflow` VALUES (20, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `workflow` VALUES (21, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `workflow` VALUES (22, NULL, NULL, NULL, NULL, 'admin', '2023-11-15 14:06:32', 'admin', '2023-11-15 14:06:32', 0); +INSERT INTO `workflow` VALUES (23, NULL, NULL, NULL, NULL, 'admin', '2023-11-15 14:11:48', 'admin', '2023-11-15 14:11:48', 0); +INSERT INTO `workflow` VALUES (24, NULL, NULL, NULL, NULL, 'admin', '2023-11-15 14:20:51', 'admin', '2023-11-15 14:20:51', 0); +INSERT INTO `workflow` VALUES (25, NULL, NULL, NULL, NULL, 'admin', '2023-11-15 14:22:46', 'admin', '2023-11-15 14:22:46', 0); +INSERT INTO `workflow` VALUES (26, 'pytorch训练', 'pytorch 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-11-15 14:24:02', 'admin', '2023-11-15 16:25:44', 0); +INSERT INTO `workflow` VALUES (27, NULL, NULL, NULL, NULL, 'admin', '2023-11-15 14:25:17', 'admin', '2023-11-15 14:25:17', 0); +INSERT INTO `workflow` VALUES (28, 'tensorflow训练', 'tensorflow 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-11-15 14:27:35', 'admin', '2023-11-18 15:45:16', 0); +INSERT INTO `workflow` VALUES (29, 'tensorflow训练', 'tensorflow 小模型训练', '{\\\"pens\\\":[{\\\"componentId\\\":1,\\\"componentName\\\":\\\"git-clone\\\",\\\"categoryId\\\":2,\\\"categoryName\\\":\\\"代码clone组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"代码拉取\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"代码克隆\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"git-clone-010ee3\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"ssh_key\\\",\\\"name\\\":\\\"ssh私钥\\\",\\\"value\\\":\\\"fdasfasfadsfadsf\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"git_repo_addr\\\",\\\"name\\\":\\\"代码库地址\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"git_branch\\\",\\\"name\\\":\\\"代码库分支/tag\\\",\\\"value\\\":\\\"master\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"clone_depth\\\",\\\"name\\\":\\\"克隆深度\\\",\\\"value\\\":\\\"1\\\",\\\"type\\\":\\\"int\\\",\\\"require\\\":true,\\\"defaultValue\\\":\\\"1\\\"}],\\\"outParameters\\\":[{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码路径\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/code\\\"}],\\\"id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"train\\\",\\\"categoryId\\\":3,\\\"categoryName\\\":\\\"训练组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"RUNNING_SET\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"pytorch训练\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"train-091bb1e\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"train.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"somuns/pretrainmodel/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"batch_size\\\\\\\":\\\\\\\"256\\\\\\\",\\\\\\\"epoch_size\\\\\\\":\\\\\\\"2\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"model_path\\\",\\\"name\\\":\\\"模型输出路径\\\",\\\"value\\\":\\\"model_path\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/model\\\"}],\\\"id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"inference\\\",\\\"categoryId\\\":4,\\\"categoryName\\\":\\\"模型推理测试\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"Actor\\\",\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"inference.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"{{train-091bb1e.model_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"modelname\\\\\\\":\\\\\\\"/model/mnist_epoch1_0.00.pkl\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/result\\\"}],\\\"id\\\":\\\"inference-37f712\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"inference-37f712\\\"}],\\\"globalParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\"},{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]}', NULL, 'admin', '2023-11-15 14:35:48', 'admin', '2023-11-15 14:36:45', 0); +INSERT INTO `workflow` VALUES (30, 'tensorflow训练', 'tensorflow 小模型训练', '{\\\"pens\\\":[{\\\"componentId\\\":1,\\\"componentName\\\":\\\"git-clone\\\",\\\"categoryId\\\":2,\\\"categoryName\\\":\\\"代码clone组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAXXXXXXXAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"代码拉取\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"代码克隆\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"git-clone-010ee3\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"ssh_key\\\",\\\"name\\\":\\\"ssh私钥\\\",\\\"value\\\":\\\"fdasfasfadsfadsf\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"git_repo_addr\\\",\\\"name\\\":\\\"代码库地址\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"git_branch\\\",\\\"name\\\":\\\"代码库分支/tag\\\",\\\"value\\\":\\\"master\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"clone_depth\\\",\\\"name\\\":\\\"克隆深度\\\",\\\"value\\\":\\\"1\\\",\\\"type\\\":\\\"int\\\",\\\"require\\\":true,\\\"defaultValue\\\":\\\"1\\\"}],\\\"outParameters\\\":[{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码路径\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/code\\\"}],\\\"id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"train\\\",\\\"categoryId\\\":3,\\\"categoryName\\\":\\\"训练组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"RUNNING_SET\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"pytorch训练\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"train-091bb1e\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"train.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"somuns/pretrainmodel/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"batch_size\\\\\\\":\\\\\\\"256\\\\\\\",\\\\\\\"epoch_size\\\\\\\":\\\\\\\"2\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"model_path\\\",\\\"name\\\":\\\"模型输出路径\\\",\\\"value\\\":\\\"model_path\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/model\\\"}],\\\"id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"inference\\\",\\\"categoryId\\\":4,\\\"categoryName\\\":\\\"模型推理测试\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"Actor\\\",\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"inference.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"{{train-091bb1e.model_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"modelname\\\\\\\":\\\\\\\"/model/mnist_epoch1_0.00.pkl\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/result\\\"}],\\\"id\\\":\\\"inference-37f712\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"inference-37f712\\\"}],\\\"globalParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\"},{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]}', NULL, 'admin', '2023-11-15 14:39:55', 'admin', '2023-11-15 14:41:47', 0); +INSERT INTO `workflow` VALUES (31, 'tensorflow大模型训练', 'tensorflow 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-11-17 14:04:42', 'admin', '2023-11-17 14:05:47', 0); +INSERT INTO `workflow` VALUES (32, 'tensorflow训练', NULL, '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-11-18 15:44:51', 'admin', '2023-11-18 15:45:36', 0); +INSERT INTO `workflow` VALUES (33, 'tensorflow训练', NULL, '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-11-18 15:45:45', 'admin', '2023-11-18 15:45:45', 0); +INSERT INTO `workflow` VALUES (34, '组件库方式pytorch手写体识别', 'pytorch手写体识别模型训练,模型较小', '{\"nodes\":[{\"id\":\"model-train-common-eb64e7f\",\"category_id\":4,\"component_name\":\"model-train-common\",\"component_label\":\"xxxxx\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{--dataset={type=ref, item_type=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --model_name={type=ref, item_type=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, form_info={name=mnist, path=/mnt/e/xxxx}}}\",\"out_parameters\":\"{--model_output={type=str, path=/model}}\",\"description\":null,\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-09T13:48:59.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-09T13:48:59.000+08:00\",\"state\":1,\"image\":\"nginx:latest\",\"env_variables\":\"{}\",\"x\":378,\"y\":127,\"label\":\"model-train-common\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0},{\"id\":\"git-clone-1585453d\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":322.1797678438652,\"y\":104.66497815006859,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0},{\"id\":\"model-train-14ff617\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"sfsdf\",\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1,\\\"value\\\":\\\"7200\\\"},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1,\\\"value\\\":\\\"2\\\"}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"sfsdf\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"asfsfsa\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T10:52:45.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T10:52:45.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":335.12346757576864,\"y\":138.54701568358064,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"超时中断\":\"7200\",\"重试次数\":\"2\",\"--dataset\":\"sfsdf\",\"--model_name\":\"asfsfsa\",\"depth\":0}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2023-11-20 09:31:03', 'admin', '2024-01-16 10:58:32', 0); +INSERT INTO `workflow` VALUES (35, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-11-20 09:32:05', 'admin', '2023-11-20 09:34:37', 0); +INSERT INTO `workflow` VALUES (36, 'mindspore多语模型模型', 'mindspore多语言模型,支持中文、阿拉伯语、英语', NULL, NULL, 'admin', '2023-11-20 09:33:14', 'admin', '2023-11-20 09:33:14', 0); +INSERT INTO `workflow` VALUES (37, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, '苏影城', '2023-12-05 10:00:53', '苏影城', '2023-12-05 10:00:53', 0); +INSERT INTO `workflow` VALUES (38, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', NULL, 'admin', '2023-12-11 09:21:12', 'admin', '2023-12-11 09:21:12', 0); +INSERT INTO `workflow` VALUES (39, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\\\"components\\\":[{\\\"category_id\\\":1,\\\"component_name\\\":\\\"git-clone\\\",\\\"component_label\\\":\\\"git代码拉取\\\",\\\"description\\\":\\\"git代码拉取,支持公有和私有仓库拉取\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/git:202312071000\\\",\\\"working_directory\\\":\\\"/app\\\",\\\"command\\\":\\\"python git_clone.py\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 1, 内存: 2GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}},\\\"out_parameters\\\":{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/code\\\"}},\\\"task_id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"category_id\\\":2,\\\"component_name\\\":\\\"train\\\",\\\"component_label\\\":\\\"pytorch训练\\\",\\\"description\\\":\\\"通用模型训练组件,支持各种类型框架的训练\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"working_directory\\\":\\\"{{git-clone-010ee3.--code_output}}\\\",\\\"command\\\":\\\"python train.py --epoch_size=1 --batch_size=128\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 2, 内存: 4GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}},\\\"out_parameters\\\":{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/model\\\"}},\\\"env_virables\\\":{},\\\"task_id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"category_id\\\":2,\\\"component_name\\\":\\\"train\\\",\\\"component_label\\\":\\\"pytorch推理\\\",\\\"description\\\":\\\"通用模型训练组件,支持各种类型框架的训练\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"working_directory\\\":\\\"{{git-clone-010ee3.--code_output}}\\\",\\\"command\\\":\\\"python inference.py\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 2, 内存: 4GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"{{train-091bb1e.--model_output}}\\\"}},\\\"out_parameters\\\":{\\\"--result_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/result\\\"}},\\\"env_virables\\\":{\\\"HOST_IP\\\":\\\"10.1.1.2\\\"},\\\"task_id\\\":\\\"train-37f712\\\"}],\\\"lines\\\":[{\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"train-37f712\\\"}]}', NULL, '苏影城', '2023-12-11 15:02:35', 'admin', '2023-12-21 14:26:51', 0); +INSERT INTO `workflow` VALUES (40, '组件库方式pytorch手写体识别', '手写体识别', '{\"nodes\":[{\"id\":\"git-clone-5e1c0fb9\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"234\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"23423\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"4324\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"3243\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"322342\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":129.21314461535442,\"y\":108.06837085494266,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"234\",\"--branch\":\"23423\",\"--depth\":\"4324\",\"--ssh_private_key\":\"3243\",\"--code_output\":\"322342\",\"depth\":0},{\"id\":\"git-clone-13ccc55c\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}],\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"123\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"12312\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"123\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"123123\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"1231\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":94.23728802612405,\"y\":14.280297586901554,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"123\",\"--branch\":\"12312\",\"--depth\":\"123\",\"--ssh_private_key\":\"123123\",\"--code_output\":\"1231\",\"depth\":0},{\"id\":\"git-clone-1e58ce4\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":-1.7978269157272635,\"y\":105.51147129445087,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"超时中断\":\"423\",\"重试次数\":\"324\",\"depth\":0},{\"id\":\"git-clone-3ed37e6\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":-1.6850668950243914,\"y\":56.36090895677579,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"超时中断\":\"324\",\"重试次数\":\"23423\",\"depth\":0},{\"id\":\"git-clone-827bf6e\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1,\\\"value\\\":\\\"111\\\"},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1,\\\"value\\\":\\\"11\\\"}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":-0.557352849817832,\"y\":10.852775312352676,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"超时中断\":\"111\",\"重试次数\":\"11\",\"depth\":0}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2023-12-21 14:26:22', 'admin', '2024-01-17 10:33:34', 0); +INSERT INTO `workflow` VALUES (41, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:17:06', 'admin', '2024-01-05 15:17:06', 0); +INSERT INTO `workflow` VALUES (42, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:19:38', 'admin', '2024-01-05 15:19:38', 0); +INSERT INTO `workflow` VALUES (43, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:33:21', 'admin', '2024-01-05 15:33:21', 0); +INSERT INTO `workflow` VALUES (44, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:33:38', 'admin', '2024-01-05 15:33:38', 0); +INSERT INTO `workflow` VALUES (45, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:33:47', 'admin', '2024-01-05 15:33:47', 0); +INSERT INTO `workflow` VALUES (46, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:48:57', 'admin', '2024-01-05 15:48:57', 0); +INSERT INTO `workflow` VALUES (47, NULL, NULL, NULL, NULL, 'admin', '2024-01-05 15:49:09', 'admin', '2024-01-05 15:49:09', 0); +INSERT INTO `workflow` VALUES (48, NULL, NULL, NULL, NULL, 'admin', '2024-01-08 16:50:22', 'admin', '2024-01-08 16:50:22', 0); +INSERT INTO `workflow` VALUES (49, NULL, NULL, NULL, NULL, 'admin', '2024-01-08 16:50:29', 'admin', '2024-01-08 16:50:29', 0); +INSERT INTO `workflow` VALUES (50, NULL, NULL, NULL, NULL, 'admin', '2024-01-08 16:50:37', 'admin', '2024-01-08 16:50:37', 0); +INSERT INTO `workflow` VALUES (51, NULL, NULL, NULL, NULL, 'admin', '2024-01-08 16:51:16', 'admin', '2024-01-08 16:51:16', 0); +INSERT INTO `workflow` VALUES (52, '组件库方式pytorch手写体识别', NULL, NULL, NULL, 'admin', '2024-01-09 10:48:16', 'admin', '2024-01-13 11:17:01', 0); +INSERT INTO `workflow` VALUES (53, '202401113', '测试流水线', NULL, NULL, 'admin', '2024-01-13 14:06:48', 'admin', '2024-01-13 14:06:48', 0); +INSERT INTO `workflow` VALUES (54, 'tensorflow训练', '小模型训练', NULL, NULL, 'admin', '2024-01-15 09:05:42', 'admin', '2024-01-15 09:05:42', 0); +INSERT INTO `workflow` VALUES (55, '2323', '213', '{\"nodes\":[],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-15 09:08:08', 'admin', '2024-01-17 10:33:38', 0); +INSERT INTO `workflow` VALUES (56, '组件库方式pytorch手写体识别', 'pytorch手写体识别模型训练,模型较小', '{\"nodes\":[{\"id\":\"model-train-common-eb64e7f\",\"category_id\":4,\"component_name\":\"model-train-common\",\"component_label\":\"xxxxx\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{--dataset={type=ref, item_type=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --model_name={type=ref, item_type=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, form_info={name=mnist, path=/mnt/e/xxxx}}}\",\"out_parameters\":\"{--model_output={type=str, path=/model}}\",\"description\":null,\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-09T13:48:59.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-09T13:48:59.000+08:00\",\"state\":1,\"image\":\"nginx:latest\",\"env_variables\":\"{}\",\"x\":378,\"y\":127,\"label\":\"model-train-common\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-501a3401\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":415.0094905570022,\"y\":204.83253819252815,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-31531a5a\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":181.88625326805598,\"y\":159.1594141522448,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-15 09:09:57', 'admin', '2024-01-15 16:54:54', 0); +INSERT INTO `workflow` VALUES (57, 'pytorch2024', '小模型测试', '{\"nodes\":[{\"id\":\"git-clone-469c0b7\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":309,\"y\":178,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-bd4e33a\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":295,\"y\":305,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-3c0dc04\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":105.24208467614898,\"y\":245.87487019730008,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-212f7570\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":151.1338061139437,\"y\":73.51686814959265,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-911df96\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"123\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"123\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"12312\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"31232\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":125.32385526969382,\"y\":124.0761758332756,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"123\",\"--branch\":\"123\",\"--depth\":\"12312\",\"--ssh_private_key\":\"31232\",\"depth\":0},{\"id\":\"git-clone-42536e3\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"123\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"2131\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"3123\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"13\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":83.38488291274636,\"y\":61.420361709643245,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"123\",\"--branch\":\"2131\",\"--depth\":\"3123\",\"--ssh_private_key\":\"13\",\"depth\":0},{\"id\":\"git-clone-6bf6a6c2\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"234\",\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"23434\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"234\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"23423\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"423432\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":45.7217977368551,\"y\":126.96996628164894,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"23434\",\"--branch\":\"234\",\"--depth\":\"23423\",\"--ssh_private_key\":\"423432\",\"depth\":0},{\"id\":\"git-clone-411a73dc\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"p\",\"10\":\"a\",\"11\":\"t\",\"12\":\"h\",\"13\":\"\\\"\",\"14\":\":\",\"15\":\"{\",\"16\":\"\\\"\",\"17\":\"t\",\"18\":\"y\",\"19\":\"p\",\"20\":\"e\",\"21\":\"\\\"\",\"22\":\":\",\"23\":\"\\\"\",\"24\":\"s\",\"25\":\"t\",\"26\":\"r\",\"27\":\"\\\"\",\"28\":\",\",\"29\":\"\\\"\",\"30\":\"i\",\"31\":\"t\",\"32\":\"e\",\"33\":\"m\",\"34\":\"_\",\"35\":\"t\",\"36\":\"y\",\"37\":\"p\",\"38\":\"e\",\"39\":\"\\\"\",\"40\":\":\",\"41\":\"\\\"\",\"42\":\"\\\"\",\"43\":\",\",\"44\":\"\\\"\",\"45\":\"l\",\"46\":\"a\",\"47\":\"b\",\"48\":\"e\",\"49\":\"l\",\"50\":\"\\\"\",\"51\":\":\",\"52\":\"\\\"\",\"53\":\"代\",\"54\":\"码\",\"55\":\"仓\",\"56\":\"库\",\"57\":\"地\",\"58\":\"址\",\"59\":\"\\\"\",\"60\":\",\",\"61\":\"\\\"\",\"62\":\"r\",\"63\":\"e\",\"64\":\"q\",\"65\":\"u\",\"66\":\"i\",\"67\":\"r\",\"68\":\"e\",\"69\":\"\\\"\",\"70\":\":\",\"71\":\"1\",\"72\":\",\",\"73\":\"\\\"\",\"74\":\"c\",\"75\":\"h\",\"76\":\"o\",\"77\":\"i\",\"78\":\"c\",\"79\":\"e\",\"80\":\"\\\"\",\"81\":\":\",\"82\":\"[\",\"83\":\"]\",\"84\":\",\",\"85\":\"\\\"\",\"86\":\"d\",\"87\":\"e\",\"88\":\"f\",\"89\":\"a\",\"90\":\"u\",\"91\":\"l\",\"92\":\"t\",\"93\":\"\\\"\",\"94\":\":\",\"95\":\"\\\"\",\"96\":\"\\\"\",\"97\":\",\",\"98\":\"\\\"\",\"99\":\"p\",\"100\":\"l\",\"101\":\"a\",\"102\":\"c\",\"103\":\"e\",\"104\":\"h\",\"105\":\"o\",\"106\":\"l\",\"107\":\"d\",\"108\":\"e\",\"109\":\"r\",\"110\":\"\\\"\",\"111\":\":\",\"112\":\"\\\"\",\"113\":\"私\",\"114\":\"有\",\"115\":\"仓\",\"116\":\"库\",\"117\":\"填\",\"118\":\"写\",\"119\":\"s\",\"120\":\"s\",\"121\":\"h\",\"122\":\"地\",\"123\":\"址\",\"124\":\",\",\"125\":\"公\",\"126\":\"有\",\"127\":\"仓\",\"128\":\"库\",\"129\":\"填\",\"130\":\"写\",\"131\":\"h\",\"132\":\"t\",\"133\":\"t\",\"134\":\"p\",\"135\":\"s\",\"136\":\" \",\"137\":\"g\",\"138\":\"i\",\"139\":\"t\",\"140\":\"地\",\"141\":\"址\",\"142\":\"\\\"\",\"143\":\",\",\"144\":\"\\\"\",\"145\":\"d\",\"146\":\"e\",\"147\":\"s\",\"148\":\"c\",\"149\":\"r\",\"150\":\"i\",\"151\":\"b\",\"152\":\"e\",\"153\":\"\\\"\",\"154\":\":\",\"155\":\"\\\"\",\"156\":\"代\",\"157\":\"码\",\"158\":\"仓\",\"159\":\"库\",\"160\":\"地\",\"161\":\"址\",\"162\":\"\\\"\",\"163\":\",\",\"164\":\"\\\"\",\"165\":\"e\",\"166\":\"d\",\"167\":\"i\",\"168\":\"t\",\"169\":\"a\",\"170\":\"b\",\"171\":\"l\",\"172\":\"e\",\"173\":\"\\\"\",\"174\":\":\",\"175\":\"1\",\"176\":\",\",\"177\":\"\\\"\",\"178\":\"c\",\"179\":\"o\",\"180\":\"n\",\"181\":\"d\",\"182\":\"i\",\"183\":\"t\",\"184\":\"i\",\"185\":\"o\",\"186\":\"n\",\"187\":\"\\\"\",\"188\":\":\",\"189\":\"\\\"\",\"190\":\"\\\"\",\"191\":\",\",\"192\":\"\\\"\",\"193\":\"v\",\"194\":\"a\",\"195\":\"l\",\"196\":\"u\",\"197\":\"e\",\"198\":\"\\\"\",\"199\":\":\",\"200\":\"\\\"\",\"201\":\"\\\"\",\"202\":\"}\",\"203\":\",\",\"204\":\"\\\"\",\"205\":\"-\",\"206\":\"-\",\"207\":\"b\",\"208\":\"r\",\"209\":\"a\",\"210\":\"n\",\"211\":\"c\",\"212\":\"h\",\"213\":\"\\\"\",\"214\":\":\",\"215\":\"{\",\"216\":\"\\\"\",\"217\":\"t\",\"218\":\"y\",\"219\":\"p\",\"220\":\"e\",\"221\":\"\\\"\",\"222\":\":\",\"223\":\"\\\"\",\"224\":\"s\",\"225\":\"t\",\"226\":\"r\",\"227\":\"\\\"\",\"228\":\",\",\"229\":\"\\\"\",\"230\":\"i\",\"231\":\"t\",\"232\":\"e\",\"233\":\"m\",\"234\":\"_\",\"235\":\"t\",\"236\":\"y\",\"237\":\"p\",\"238\":\"e\",\"239\":\"\\\"\",\"240\":\":\",\"241\":\"\\\"\",\"242\":\"\\\"\",\"243\":\",\",\"244\":\"\\\"\",\"245\":\"l\",\"246\":\"a\",\"247\":\"b\",\"248\":\"e\",\"249\":\"l\",\"250\":\"\\\"\",\"251\":\":\",\"252\":\"\\\"\",\"253\":\"代\",\"254\":\"码\",\"255\":\"分\",\"256\":\"支\",\"257\":\"/\",\"258\":\"t\",\"259\":\"a\",\"260\":\"g\",\"261\":\"\\\"\",\"262\":\",\",\"263\":\"\\\"\",\"264\":\"r\",\"265\":\"e\",\"266\":\"q\",\"267\":\"u\",\"268\":\"i\",\"269\":\"r\",\"270\":\"e\",\"271\":\"\\\"\",\"272\":\":\",\"273\":\"1\",\"274\":\",\",\"275\":\"\\\"\",\"276\":\"c\",\"277\":\"h\",\"278\":\"o\",\"279\":\"i\",\"280\":\"c\",\"281\":\"e\",\"282\":\"\\\"\",\"283\":\":\",\"284\":\"[\",\"285\":\"]\",\"286\":\",\",\"287\":\"\\\"\",\"288\":\"d\",\"289\":\"e\",\"290\":\"f\",\"291\":\"a\",\"292\":\"u\",\"293\":\"l\",\"294\":\"t\",\"295\":\"\\\"\",\"296\":\":\",\"297\":\"\\\"\",\"298\":\"m\",\"299\":\"a\",\"300\":\"s\",\"301\":\"t\",\"302\":\"e\",\"303\":\"r\",\"304\":\"\\\"\",\"305\":\",\",\"306\":\"\\\"\",\"307\":\"p\",\"308\":\"l\",\"309\":\"a\",\"310\":\"c\",\"311\":\"e\",\"312\":\"h\",\"313\":\"o\",\"314\":\"l\",\"315\":\"d\",\"316\":\"e\",\"317\":\"r\",\"318\":\"\\\"\",\"319\":\":\",\"320\":\"\\\"\",\"321\":\"\\\"\",\"322\":\",\",\"323\":\"\\\"\",\"324\":\"d\",\"325\":\"e\",\"326\":\"s\",\"327\":\"c\",\"328\":\"r\",\"329\":\"i\",\"330\":\"b\",\"331\":\"e\",\"332\":\"\\\"\",\"333\":\":\",\"334\":\"\\\"\",\"335\":\"代\",\"336\":\"码\",\"337\":\"分\",\"338\":\"支\",\"339\":\"或\",\"340\":\"者\",\"341\":\"t\",\"342\":\"a\",\"343\":\"g\",\"344\":\"\\\"\",\"345\":\",\",\"346\":\"\\\"\",\"347\":\"e\",\"348\":\"d\",\"349\":\"i\",\"350\":\"t\",\"351\":\"a\",\"352\":\"b\",\"353\":\"l\",\"354\":\"e\",\"355\":\"\\\"\",\"356\":\":\",\"357\":\"1\",\"358\":\",\",\"359\":\"\\\"\",\"360\":\"c\",\"361\":\"o\",\"362\":\"n\",\"363\":\"d\",\"364\":\"i\",\"365\":\"t\",\"366\":\"i\",\"367\":\"o\",\"368\":\"n\",\"369\":\"\\\"\",\"370\":\":\",\"371\":\"\\\"\",\"372\":\"\\\"\",\"373\":\",\",\"374\":\"\\\"\",\"375\":\"v\",\"376\":\"a\",\"377\":\"l\",\"378\":\"u\",\"379\":\"e\",\"380\":\"\\\"\",\"381\":\":\",\"382\":\"\\\"\",\"383\":\"\\\"\",\"384\":\"}\",\"385\":\",\",\"386\":\"\\\"\",\"387\":\"-\",\"388\":\"-\",\"389\":\"d\",\"390\":\"e\",\"391\":\"p\",\"392\":\"t\",\"393\":\"h\",\"394\":\"\\\"\",\"395\":\":\",\"396\":\"{\",\"397\":\"\\\"\",\"398\":\"t\",\"399\":\"y\",\"400\":\"p\",\"401\":\"e\",\"402\":\"\\\"\",\"403\":\":\",\"404\":\"\\\"\",\"405\":\"s\",\"406\":\"t\",\"407\":\"r\",\"408\":\"\\\"\",\"409\":\",\",\"410\":\"\\\"\",\"411\":\"i\",\"412\":\"t\",\"413\":\"e\",\"414\":\"m\",\"415\":\"_\",\"416\":\"t\",\"417\":\"y\",\"418\":\"p\",\"419\":\"e\",\"420\":\"\\\"\",\"421\":\":\",\"422\":\"\\\"\",\"423\":\"\\\"\",\"424\":\",\",\"425\":\"\\\"\",\"426\":\"l\",\"427\":\"a\",\"428\":\"b\",\"429\":\"e\",\"430\":\"l\",\"431\":\"\\\"\",\"432\":\":\",\"433\":\"\\\"\",\"434\":\"克\",\"435\":\"隆\",\"436\":\"深\",\"437\":\"度\",\"438\":\"\\\"\",\"439\":\",\",\"440\":\"\\\"\",\"441\":\"r\",\"442\":\"e\",\"443\":\"q\",\"444\":\"u\",\"445\":\"i\",\"446\":\"r\",\"447\":\"e\",\"448\":\"\\\"\",\"449\":\":\",\"450\":\"0\",\"451\":\",\",\"452\":\"\\\"\",\"453\":\"c\",\"454\":\"h\",\"455\":\"o\",\"456\":\"i\",\"457\":\"c\",\"458\":\"e\",\"459\":\"\\\"\",\"460\":\":\",\"461\":\"[\",\"462\":\"]\",\"463\":\",\",\"464\":\"\\\"\",\"465\":\"d\",\"466\":\"e\",\"467\":\"f\",\"468\":\"a\",\"469\":\"u\",\"470\":\"l\",\"471\":\"t\",\"472\":\"\\\"\",\"473\":\":\",\"474\":\"\\\"\",\"475\":\"1\",\"476\":\"\\\"\",\"477\":\",\",\"478\":\"\\\"\",\"479\":\"p\",\"480\":\"l\",\"481\":\"a\",\"482\":\"c\",\"483\":\"e\",\"484\":\"h\",\"485\":\"o\",\"486\":\"l\",\"487\":\"d\",\"488\":\"e\",\"489\":\"r\",\"490\":\"\\\"\",\"491\":\":\",\"492\":\"\\\"\",\"493\":\"\\\"\",\"494\":\",\",\"495\":\"\\\"\",\"496\":\"d\",\"497\":\"e\",\"498\":\"s\",\"499\":\"c\",\"500\":\"r\",\"501\":\"i\",\"502\":\"b\",\"503\":\"e\",\"504\":\"\\\"\",\"505\":\":\",\"506\":\"\\\"\",\"507\":\"代\",\"508\":\"码\",\"509\":\"克\",\"510\":\"隆\",\"511\":\"深\",\"512\":\"度\",\"513\":\"\\\"\",\"514\":\",\",\"515\":\"\\\"\",\"516\":\"e\",\"517\":\"d\",\"518\":\"i\",\"519\":\"t\",\"520\":\"a\",\"521\":\"b\",\"522\":\"l\",\"523\":\"e\",\"524\":\"\\\"\",\"525\":\":\",\"526\":\"1\",\"527\":\",\",\"528\":\"\\\"\",\"529\":\"c\",\"530\":\"o\",\"531\":\"n\",\"532\":\"d\",\"533\":\"i\",\"534\":\"t\",\"535\":\"i\",\"536\":\"o\",\"537\":\"n\",\"538\":\"\\\"\",\"539\":\":\",\"540\":\"\\\"\",\"541\":\"\\\"\",\"542\":\",\",\"543\":\"\\\"\",\"544\":\"v\",\"545\":\"a\",\"546\":\"l\",\"547\":\"u\",\"548\":\"e\",\"549\":\"\\\"\",\"550\":\":\",\"551\":\"\\\"\",\"552\":\"\\\"\",\"553\":\"}\",\"554\":\",\",\"555\":\"\\\"\",\"556\":\"-\",\"557\":\"-\",\"558\":\"s\",\"559\":\"s\",\"560\":\"h\",\"561\":\"_\",\"562\":\"p\",\"563\":\"r\",\"564\":\"i\",\"565\":\"v\",\"566\":\"a\",\"567\":\"t\",\"568\":\"e\",\"569\":\"_\",\"570\":\"k\",\"571\":\"e\",\"572\":\"y\",\"573\":\"\\\"\",\"574\":\":\",\"575\":\"{\",\"576\":\"\\\"\",\"577\":\"t\",\"578\":\"y\",\"579\":\"p\",\"580\":\"e\",\"581\":\"\\\"\",\"582\":\":\",\"583\":\"\\\"\",\"584\":\"s\",\"585\":\"t\",\"586\":\"r\",\"587\":\"\\\"\",\"588\":\",\",\"589\":\"\\\"\",\"590\":\"i\",\"591\":\"t\",\"592\":\"e\",\"593\":\"m\",\"594\":\"_\",\"595\":\"t\",\"596\":\"y\",\"597\":\"p\",\"598\":\"e\",\"599\":\"\\\"\",\"600\":\":\",\"601\":\"\\\"\",\"602\":\"\\\"\",\"603\":\",\",\"604\":\"\\\"\",\"605\":\"l\",\"606\":\"a\",\"607\":\"b\",\"608\":\"e\",\"609\":\"l\",\"610\":\"\\\"\",\"611\":\":\",\"612\":\"\\\"\",\"613\":\"s\",\"614\":\"s\",\"615\":\"h\",\"616\":\"私\",\"617\":\"钥\",\"618\":\"\\\"\",\"619\":\",\",\"620\":\"\\\"\",\"621\":\"r\",\"622\":\"e\",\"623\":\"q\",\"624\":\"u\",\"625\":\"i\",\"626\":\"r\",\"627\":\"e\",\"628\":\"\\\"\",\"629\":\":\",\"630\":\"0\",\"631\":\",\",\"632\":\"\\\"\",\"633\":\"c\",\"634\":\"h\",\"635\":\"o\",\"636\":\"i\",\"637\":\"c\",\"638\":\"e\",\"639\":\"\\\"\",\"640\":\":\",\"641\":\"[\",\"642\":\"]\",\"643\":\",\",\"644\":\"\\\"\",\"645\":\"d\",\"646\":\"e\",\"647\":\"f\",\"648\":\"a\",\"649\":\"u\",\"650\":\"l\",\"651\":\"t\",\"652\":\"\\\"\",\"653\":\":\",\"654\":\"\\\"\",\"655\":\"1\",\"656\":\"\\\"\",\"657\":\",\",\"658\":\"\\\"\",\"659\":\"p\",\"660\":\"l\",\"661\":\"a\",\"662\":\"c\",\"663\":\"e\",\"664\":\"h\",\"665\":\"o\",\"666\":\"l\",\"667\":\"d\",\"668\":\"e\",\"669\":\"r\",\"670\":\"\\\"\",\"671\":\":\",\"672\":\"\\\"\",\"673\":\"\\\"\",\"674\":\",\",\"675\":\"\\\"\",\"676\":\"d\",\"677\":\"e\",\"678\":\"s\",\"679\":\"c\",\"680\":\"r\",\"681\":\"i\",\"682\":\"b\",\"683\":\"e\",\"684\":\"\\\"\",\"685\":\":\",\"686\":\"\\\"\",\"687\":\"s\",\"688\":\"s\",\"689\":\"h\",\"690\":\"私\",\"691\":\"钥\",\"692\":\",\",\"693\":\"确\",\"694\":\"保\",\"695\":\"s\",\"696\":\"s\",\"697\":\"h\",\"698\":\"公\",\"699\":\"钥\",\"700\":\"已\",\"701\":\"经\",\"702\":\"托\",\"703\":\"管\",\"704\":\"到\",\"705\":\"代\",\"706\":\"码\",\"707\":\"平\",\"708\":\"台\",\"709\":\",\",\"710\":\"否\",\"711\":\"则\",\"712\":\"可\",\"713\":\"能\",\"714\":\"拉\",\"715\":\"取\",\"716\":\"失\",\"717\":\"败\",\"718\":\"\\\"\",\"719\":\",\",\"720\":\"\\\"\",\"721\":\"e\",\"722\":\"d\",\"723\":\"i\",\"724\":\"t\",\"725\":\"a\",\"726\":\"b\",\"727\":\"l\",\"728\":\"e\",\"729\":\"\\\"\",\"730\":\":\",\"731\":\"1\",\"732\":\",\",\"733\":\"\\\"\",\"734\":\"c\",\"735\":\"o\",\"736\":\"n\",\"737\":\"d\",\"738\":\"i\",\"739\":\"t\",\"740\":\"i\",\"741\":\"o\",\"742\":\"n\",\"743\":\"\\\"\",\"744\":\":\",\"745\":\"\\\"\",\"746\":\"\\\"\",\"747\":\",\",\"748\":\"\\\"\",\"749\":\"v\",\"750\":\"a\",\"751\":\"l\",\"752\":\"u\",\"753\":\"e\",\"754\":\"\\\"\",\"755\":\":\",\"756\":\"\\\"\",\"757\":\"\\\"\",\"758\":\"}\",\"759\":\"}\",\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码仓库地址\",\"require\":1,\"choice\":[],\"default\":\"\",\"placeholder\":\"私有仓库填写ssh地址,公有仓库填写https git地址\",\"describe\":\"代码仓库地址\",\"editable\":1,\"condition\":\"\",\"value\":\"234\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"代码分支/tag\",\"require\":1,\"choice\":[],\"default\":\"master\",\"placeholder\":\"\",\"describe\":\"代码分支或者tag\",\"editable\":1,\"condition\":\"\",\"value\":\"234\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"克隆深度\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"代码克隆深度\",\"editable\":1,\"condition\":\"\",\"value\":\"324\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"label\":\"ssh私钥\",\"require\":0,\"choice\":[],\"default\":\"1\",\"placeholder\":\"\",\"describe\":\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\",\"editable\":1,\"condition\":\"\",\"value\":\"23423\"}},\"out_parameters\":{\"0\":\"{\",\"1\":\"\\\"\",\"2\":\"-\",\"3\":\"-\",\"4\":\"c\",\"5\":\"o\",\"6\":\"d\",\"7\":\"e\",\"8\":\"_\",\"9\":\"o\",\"10\":\"u\",\"11\":\"t\",\"12\":\"p\",\"13\":\"u\",\"14\":\"t\",\"15\":\"\\\"\",\"16\":\":\",\"17\":\"{\",\"18\":\"\\\"\",\"19\":\"t\",\"20\":\"y\",\"21\":\"p\",\"22\":\"e\",\"23\":\"\\\"\",\"24\":\":\",\"25\":\"\\\"\",\"26\":\"s\",\"27\":\"t\",\"28\":\"r\",\"29\":\"\\\"\",\"30\":\",\",\"31\":\"\\\"\",\"32\":\"l\",\"33\":\"a\",\"34\":\"b\",\"35\":\"e\",\"36\":\"l\",\"37\":\"\\\"\",\"38\":\":\",\"39\":\"\\\"\",\"40\":\"代\",\"41\":\"码\",\"42\":\"输\",\"43\":\"出\",\"44\":\"路\",\"45\":\"径\",\"46\":\"\\\"\",\"47\":\",\",\"48\":\"\\\"\",\"49\":\"p\",\"50\":\"a\",\"51\":\"t\",\"52\":\"h\",\"53\":\"\\\"\",\"54\":\":\",\"55\":\"\\\"\",\"56\":\"/\",\"57\":\"c\",\"58\":\"o\",\"59\":\"d\",\"60\":\"e\",\"61\":\"\\\"\",\"62\":\",\",\"63\":\"\\\"\",\"64\":\"r\",\"65\":\"e\",\"66\":\"q\",\"67\":\"u\",\"68\":\"i\",\"69\":\"r\",\"70\":\"e\",\"71\":\"\\\"\",\"72\":\":\",\"73\":\"1\",\"74\":\"}\",\"75\":\"}\",\"--code_output\":{\"type\":\"str\",\"label\":\"代码输出路径\",\"path\":\"/code\",\"require\":1}},\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":248.57921347744823,\"y\":7.451682379434722,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"--code_path\":\"234\",\"--branch\":\"234\",\"--depth\":\"324\",\"--ssh_private_key\":\"23423\",\"depth\":0}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-15 09:19:41', 'admin', '2024-01-16 09:51:15', 0); +INSERT INTO `workflow` VALUES (58, 'dsffads', 'asfadsf', '{\"nodes\":[{\"0\":\"7200\",\"1\":\"2\",\"id\":\"git-clone-7fab1783\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"启动命令\",\"resources_standard\":\"324\",\"control_strategy\":\"[{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\\\",\\\"editable\\\":1,\\\"value\\\":\\\"7200\\\"},{\\\"type\\\":\\\"int\\\",\\\"label\\\":\\\"重试次数\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"0\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"组件运行失败自动重试次数\\\",\\\"editable\\\":1,\\\"value\\\":\\\"2\\\"}]\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"sfsfsadf\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"master\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-15T13:40:03.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-15T13:40:03.000+08:00\",\"state\":1,\"image\":\"sdfsfadfdafds\",\"env_variables\":\"aa=bb\",\"x\":96.23056300268097,\"y\":155.7319034852547,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"超时中断\":\"2\",\"重试次数\":\"2\",\"depth\":0,\"--code_path\":\"sfsfsadf\",\"--branch\":\"master\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-5f1ce402\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"SFSFAFA\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"3600\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"2\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"mnist\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"CC=DD\\nEE=FF\",\"x\":114.99450634503813,\"y\":192.02422747982732,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"3600\",\"retry_times\":\"2\",\"--dataset\":\"mnist\",\"--model_name\":\"\",\"--model_output\":\"/model\"}],\"edges\":[{\"source\":\"git-clone-7fab1783\",\"target\":\"model-train-5f1ce402\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.80588811892232861705376735793\",\"startPoint\":{\"x\":96.23056300268098,\"y\":155.7319034852547},\"endPoint\":{\"x\":114.99450634503813,\"y\":192.02422747982732},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-16 10:56:55', 'admin', '2024-01-16 11:46:59', 0); +INSERT INTO `workflow` VALUES (59, '324', '4234', NULL, NULL, 'admin', '2024-01-16 11:43:46', 'admin', '2024-01-16 11:43:46', 0); +INSERT INTO `workflow` VALUES (60, '测试接口流水线', '测试', '{\"nodes\":[{\"id\":\"git-clone-fd4d56\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 1, 内存: 2GB\\\\\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"master\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:37:54.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:37:54.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":396.20001220703125,\"y\":92.16249084472656,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"retry_times\":\"1\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"master\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0},{\"id\":\"model-train-51a3566\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":435.20001220703125,\"y\":207.16249084472656,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0}],\"edges\":[{\"source\":\"git-clone-fd4d56\",\"target\":\"model-train-51a3566\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.88546799091257491705384300601\",\"startPoint\":{\"x\":396.20001220703125,\"y\":92.16249084472656},\"endPoint\":{\"x\":435.20001220703125,\"y\":207.16249084472656},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"git-clone-fd4d56\",\"target\":\"git-clone-fd4d56\",\"type\":\"loop\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.52301659420844951705384305585\",\"startPoint\":{\"x\":378.45001220703125,\"y\":56.66249084472656},\"endPoint\":{\"x\":413.95001220703125,\"y\":56.66249084472656},\"loopCfg\":{\"position\":\"top\",\"dist\":50},\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-16 13:48:36', 'admin', '2024-01-16 13:54:26', 0); +INSERT INTO `workflow` VALUES (61, '测试接口流水线', '设计', '{\"nodes\":[{\"id\":\"git-clone-35e4b7b7\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:37:54.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:37:54.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":347,\"y\":125.38749694824219,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0,\"max_run_time\":\"0\"},{\"id\":\"model-train-0798f5f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-35e4b7b7.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":313.6465134638248,\"y\":217.0234391702886,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"retry_times\":\"0\"},{\"id\":\"model-train-4d6cc04\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-35e4b7b7.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-0798f5f.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":374.7110353336509,\"y\":326.60703400941577,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-0798f5f.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0},{\"id\":\"model-train-f5e8375\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-35e4b7b7.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-0798f5f.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-01-16T11:38:18.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-16T11:38:18.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":138.94479032475843,\"y\":322.5885023081963,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-0798f5f.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-35e4b7b7\",\"target\":\"model-train-0798f5f\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.159430719649826141705384556185\",\"startPoint\":{\"x\":347,\"y\":125.38749694824219},\"endPoint\":{\"x\":313.6465134638248,\"y\":217.0234391702886},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-0798f5f\",\"target\":\"model-train-4d6cc04\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.063445436037490311705391807441\",\"startPoint\":{\"x\":313.6465134638248,\"y\":217.0234391702886},\"endPoint\":{\"x\":374.7110353336509,\"y\":326.60703400941577},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-0798f5f\",\"target\":\"model-train-f5e8375\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.103591317098980841705476907383\",\"startPoint\":{\"x\":313.6465134638248,\"y\":217.0234391702886},\"endPoint\":{\"x\":138.94479032475843,\"y\":322.5885023081963},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-16 13:54:48', 'admin', '2024-01-18 17:02:23', 0); +INSERT INTO `workflow` VALUES (62, '2323', '213', '{\"nodes\":[],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-17 10:37:07', 'admin', '2024-01-17 10:37:07', 0); +INSERT INTO `workflow` VALUES (63, '2323', '213', '{\"nodes\":[{\"id\":\"git-clone-2b5abceb\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":205,\"y\":181,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-17 10:37:15', 'admin', '2024-01-19 11:16:24', 0); +INSERT INTO `workflow` VALUES (64, '测试接口流水线', '设计', '{\"nodes\":[{\"id\":\"git-clone-0a759f7\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":197.39996337890625,\"y\":120,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"model-train-ad3c3e\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":468.39996337890625,\"y\":126,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-17 15:39:01', 'admin', '2024-01-22 09:29:43', 0); +INSERT INTO `workflow` VALUES (65, '4', '234234', NULL, NULL, 'admin', '2024-01-17 16:42:17', 'admin', '2024-01-17 16:42:17', 0); +INSERT INTO `workflow` VALUES (66, 'testqwqw', '1212', '{\"nodes\":[{\"id\":\"git-clone-130df165\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":310,\"y\":185,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-17 16:48:14', 'admin', '2024-01-18 15:29:16', 0); +INSERT INTO `workflow` VALUES (67, 'testqwqw', '1212', '{\"nodes\":[{\"id\":\"git-clone-9412b\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":267,\"y\":181,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-18 08:48:37', 'admin', '2024-01-18 15:29:05', 0); +INSERT INTO `workflow` VALUES (68, 'test', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', NULL, 'admin', '2024-01-22 15:17:38', 'admin', '2024-01-25 11:08:23', 0); +INSERT INTO `workflow` VALUES (69, 'test0124', 'test', NULL, NULL, 'admin', '2024-01-24 09:13:18', 'admin', '2024-01-24 09:13:18', 0); +INSERT INTO `workflow` VALUES (70, 'mnsit-0124', '测试接口0124', '{\"nodes\":[{\"id\":\"git-clone-58252975\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":806.1162039034662,\"y\":97.96333604302986,\"label\":\"克隆训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0,\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--code_output\":\"/code\",\"--depth\":\"1\"},{\"id\":\"model-train-7064f00\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":803.6513097729328,\"y\":227.1054241623483,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-7fe21e4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":685.2643030774179,\"y\":408.3345428099675,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result-new\",\"depth\":0},{\"id\":\"model-train-afcf186\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":955.8927139658065,\"y\":400.70364911004737,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-58252975\",\"target\":\"model-train-7064f00\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.66531006564768451706059692250\",\"startPoint\":{\"x\":806.1162039034662,\"y\":97.96333604302987},\"endPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-7fe21e4\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.50795512775462131706059710625\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":685.2643030774179,\"y\":408.3345428099675},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-afcf186\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.91951665829011691706059718272\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":955.8927139658065,\"y\":400.70364911004737},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-24 09:15:34', 'admin', '2024-02-29 15:19:46', 1); +INSERT INTO `workflow` VALUES (71, 'mnsit-0124', '测试接口0124', '{\"nodes\":[{\"id\":\"git-clone-58252975\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":806.1162039034662,\"y\":97.96333604302986,\"label\":\"克隆训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--code_output\":\"/code\",\"--depth\":\"1\"},{\"id\":\"model-train-7064f00\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":803.6513097729328,\"y\":227.1054241623483,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-7fe21e4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":685.2643030774179,\"y\":408.3345428099675,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result-new\",\"depth\":0},{\"id\":\"model-train-afcf186\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":955.8927139658065,\"y\":400.70364911004737,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-58252975\",\"target\":\"model-train-7064f00\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.66531006564768451706059692250\",\"startPoint\":{\"x\":806.1162039034662,\"y\":97.96333604302987},\"endPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-7fe21e4\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.50795512775462131706059710625\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":685.2643030774179,\"y\":408.3345428099675},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-afcf186\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.91951665829011691706059718272\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":955.8927139658065,\"y\":400.70364911004737},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-25 16:08:41', 'admin', '2024-01-25 16:08:41', 0); +INSERT INTO `workflow` VALUES (72, 'test', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', NULL, 'admin', '2024-01-25 16:36:59', 'admin', '2024-01-25 16:36:59', 0); +INSERT INTO `workflow` VALUES (73, 'test', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', NULL, 'admin', '2024-01-25 16:38:25', 'admin', '2024-01-25 16:38:25', 0); +INSERT INTO `workflow` VALUES (74, 'test-copy', '测试', '{\"nodes\":[{\"id\":\"git-clone-3f12e15\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":147.4714640198511,\"y\":161.46277915632754,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-6cfde796\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":305.5831265508685,\"y\":202.36104218362283,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[{\"source\":\"git-clone-3f12e15\",\"target\":\"git-clone-6cfde796\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.437009521999460751706152006393\",\"startPoint\":{\"x\":147.4714640198511,\"y\":161.46277915632754},\"endPoint\":{\"x\":305.5831265508685,\"y\":202.36104218362283},\"curveOffset\":0,\"curvePosition\":0.5}],\"combos\":[]}', NULL, 'admin', '2024-01-25 16:40:53', 'admin', '2024-01-25 16:40:53', 0); +INSERT INTO `workflow` VALUES (75, 'mnsit-0124-copy', '测试接口0124', '{\"nodes\":[{\"id\":\"git-clone-58252975\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":806.1162039034662,\"y\":97.96333604302986,\"label\":\"克隆训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--code_output\":\"/code\",\"--depth\":\"1\"},{\"id\":\"model-train-7064f00\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":803.6513097729328,\"y\":227.1054241623483,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-7fe21e4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":685.2643030774179,\"y\":408.3345428099675,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result-new\",\"depth\":0},{\"id\":\"model-train-afcf186\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-58252975.--code_output}}\",\"command\":\"python inferenced.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"0\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7064f00.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":955.8927139658065,\"y\":400.70364911004737,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"max_run_time\":\"0\",\"retry_times\":\"0\",\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7064f00.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-58252975\",\"target\":\"model-train-7064f00\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.66531006564768451706059692250\",\"startPoint\":{\"x\":806.1162039034662,\"y\":97.96333604302987},\"endPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-7fe21e4\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.50795512775462131706059710625\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":685.2643030774179,\"y\":408.3345428099675},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-7064f00\",\"target\":\"model-train-afcf186\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.91951665829011691706059718272\",\"startPoint\":{\"x\":803.6513097729328,\"y\":227.1054241623483},\"endPoint\":{\"x\":955.8927139658065,\"y\":400.70364911004737},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-25 16:56:37', 'admin', '2024-01-25 16:56:56', 1); +INSERT INTO `workflow` VALUES (76, '蒋宇航', '测试流水线1', '{\"nodes\":[{\"id\":\"git-clone-180a8b7c\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":152.33331298828125,\"y\":251,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"model-train-fc0a330\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":591.3333129882812,\"y\":316,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"model-train-aeb9ed4\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":316.33331298828125,\"y\":513,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\",\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0}],\"edges\":[{\"source\":\"git-clone-180a8b7c\",\"target\":\"model-train-fc0a330\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.57295050905726491706326346706\",\"startPoint\":{\"x\":152.33331298828125,\"y\":251},\"endPoint\":{\"x\":591.3333129882812,\"y\":316},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-aeb9ed4\",\"target\":\"model-train-fc0a330\",\"type\":\"quadratic\",\"style\":{\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10,\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1}},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.49683325418709571706326365402\",\"startPoint\":{\"x\":316.33331298828125,\"y\":513},\"endPoint\":{\"x\":591.3333129882812,\"y\":316},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-27 11:21:19', 'admin', '2024-01-27 11:38:28', 0); +INSERT INTO `workflow` VALUES (77, 'mnist-0127', '手写体识别', '{\"nodes\":[{\"id\":\"git-clone-e0a5a90\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\" {\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":451,\"y\":149.3874969482422,\"label\":\"拉取训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0},{\"id\":\"model-train-d7d93ff\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-e0a5a90.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":487,\"y\":269.3874969482422,\"label\":\"mnist模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-fe7e26\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-e0a5a90.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-d7d93ff.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":368,\"y\":403.3874969482422,\"label\":\"mnist模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-d7d93ff.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-c3dfe14\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-e0a5a90.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-d7d93ff.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":671,\"y\":373.3874969482422,\"label\":\"mnist模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-d7d93ff.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-e0a5a90\",\"target\":\"model-train-d7d93ff\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.09874154511830381706334301827\",\"startPoint\":{\"x\":451,\"y\":149.3874969482422},\"endPoint\":{\"x\":487,\"y\":269.3874969482422},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-d7d93ff\",\"target\":\"model-train-fe7e26\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.62542159931637921706334303419\",\"startPoint\":{\"x\":487,\"y\":269.3874969482422},\"endPoint\":{\"x\":368,\"y\":403.3874969482422},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-d7d93ff\",\"target\":\"model-train-c3dfe14\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.38922951881311211706334305291\",\"startPoint\":{\"x\":487,\"y\":269.3874969482422},\"endPoint\":{\"x\":671,\"y\":373.3874969482422},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-27 13:36:40', 'admin', '2024-01-27 15:33:59', 1); +INSERT INTO `workflow` VALUES (78, 'mnist-0127-copy', '手写体识别', '{\"nodes\":[{\"id\":\"git-clone-e0a5a90\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 1, 内存: 2GB\\\\\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":451,\"y\":149.3874969482422,\"label\":\"拉取训练代码\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0},{\"id\":\"model-train-d7d93ff\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-e0a5a90.--code_ouput}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":487,\"y\":269.3874969482422,\"label\":\"mnist模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-fe7e26\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-e0a5a90.--code_ouput}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-d7d93ff.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":368,\"y\":403.3874969482422,\"label\":\"mnist模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-d7d93ff.--model_output}}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-c3dfe14\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-e0a5a90.--code_ouput}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-d7d93ff.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\" 172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":671,\"y\":373.3874969482422,\"label\":\"mnist模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"fill\":\"transparent\",\"stroke\":\"transparent\"},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-d7d93ff.--model_output}}\"}],\"edges\":[{\"source\":\"git-clone-e0a5a90\",\"target\":\"model-train-d7d93ff\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.09874154511830381706334301827\",\"startPoint\":{\"x\":451,\"y\":149.3874969482422},\"endPoint\":{\"x\":487,\"y\":269.3874969482422},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-d7d93ff\",\"target\":\"model-train-fe7e26\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.62542159931637921706334303419\",\"startPoint\":{\"x\":487,\"y\":269.3874969482422},\"endPoint\":{\"x\":368,\"y\":403.3874969482422},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-d7d93ff\",\"target\":\"model-train-c3dfe14\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.38922951881311211706334305291\",\"startPoint\":{\"x\":487,\"y\":269.3874969482422},\"endPoint\":{\"x\":671,\"y\":373.3874969482422},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-27 13:59:53', 'admin', '2024-01-27 13:59:53', 0); +INSERT INTO `workflow` VALUES (79, 'mnist-0129', 'mnist手写体识别', '{\"nodes\":[{\"id\":\"git-clone-d224bd\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":330,\"y\":204.453125,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}},{\"id\":\"git-clone-5efada5e\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":402,\"y\":299.453125,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"cursor\":\"pointer\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"fill\":\"transparent\",\"stroke\":\"transparent\"}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-01-29 11:36:31', 'admin', '2024-02-03 10:12:48', 0); +INSERT INTO `workflow` VALUES (80, 'mnist-0129-show', 'mnist训练', '{\"nodes\":[{\"id\":\"git-clone-60b96154\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":349,\"y\":151.3874969482422,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"transparent\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0},{\"id\":\"model-train-ddcb4e8\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-60b96154.--code_output}}\",\"command\":\"python train.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\" {\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":317,\"y\":265.3874969482422,\"label\":\"mnist训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"transparent\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\" {\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-5cc6ade3\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-60b96154.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-ddcb4e8.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":340,\"y\":399.3874969482422,\"label\":\"模型测试\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":70,\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":12,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":0,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"transparent\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-ddcb4e8.--model_output}}\",\"--model_output\":\"/result\"}],\"edges\":[{\"source\":\"git-clone-60b96154\",\"target\":\"model-train-ddcb4e8\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.75962167134951961706519053205\",\"startPoint\":{\"x\":349,\"y\":186.6374969482422,\"anchorIndex\":1},\"endPoint\":{\"x\":317,\"y\":230.1374969482422,\"anchorIndex\":0},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0},{\"source\":\"model-train-ddcb4e8\",\"target\":\"model-train-5cc6ade3\",\"type\":\"quadratic\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":true,\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":10},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.205413815709410531706519055117\",\"startPoint\":{\"x\":317,\"y\":300.6374969482422,\"anchorIndex\":1},\"endPoint\":{\"x\":340,\"y\":364.1374969482422,\"anchorIndex\":0},\"curveOffset\":0,\"curvePosition\":0.5,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-01-29 17:01:55', 'admin', '2024-03-25 11:25:25', 1); +INSERT INTO `workflow` VALUES (81, 'mnist-0220', '识别提识别', '{\"nodes\":[{\"id\":\"git-clone-d029603\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":178.62273992605316,\"y\":149.75927726016081,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5},\"depth\":0},{\"id\":\"model-train-792c2aaa\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":415.8487630371477,\"y\":296.3982939752473,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5},\"depth\":0},{\"id\":\"model-train-64e9b14\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":613.9562493082861,\"y\":131.08490886281422,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5},\"depth\":0},{\"id\":\"model-train-228b1a56\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":741.4277051122262,\"y\":315.0453936305929,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5,\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0},{\"id\":\"git-clone-07b6375\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":381.74440754215385,\"y\":447.2477268139752,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5}},{\"id\":\"git-clone-14612ad\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":389.3082809093493,\"y\":68.0046855283746,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5}}],\"edges\":[{\"source\":\"git-clone-d029603\",\"target\":\"model-train-792c2aaa\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.5577806805575581709107431004\",\"startPoint\":{\"x\":178.62273992605316,\"y\":168.00927726016081,\"anchorIndex\":1},\"endPoint\":{\"x\":415.8487630371477,\"y\":278.1482939752473,\"anchorIndex\":0},\"curveOffset\":[0,0],\"curvePosition\":[0.5,0.5],\"targetAnchor\":0,\"depth\":0,\"minCurveOffset\":[0,0]},{\"source\":\"git-clone-07b6375\",\"target\":\"model-train-792c2aaa\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.1852690160835081709108652339\",\"startPoint\":{\"x\":381.74440754215385,\"y\":428.9977268139752,\"anchorIndex\":0},\"endPoint\":{\"x\":415.8487630371477,\"y\":278.1482939752473,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0},{\"source\":\"git-clone-14612ad\",\"target\":\"model-train-64e9b14\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.0271472084213357781709175746085\",\"startPoint\":{\"x\":389.3082809093493,\"y\":86.2546855283746,\"anchorIndex\":1},\"endPoint\":{\"x\":613.9562493082861,\"y\":112.83490886281422,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0}],\"combos\":[]}', NULL, 'admin', '2024-02-20 16:47:51', 'admin', '2024-02-29 11:02:33', 1); +INSERT INTO `workflow` VALUES (82, 'mnist-0229', '手写体识别', NULL, NULL, 'admin', '2024-02-29 08:36:37', 'admin', '2024-02-29 08:36:37', 1); +INSERT INTO `workflow` VALUES (83, 'NIM测试', '测试全局参数', '{\"nodes\":[{\"id\":\"git-clone-4bd273c1\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-7f75cd56\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python train_aim.py --batch_size=256 --epoch=300\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-1362253f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7f75cd56.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7f75cd56.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-26a2be3c\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7f75cd56.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7f75cd56.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-4bd273c1\",\"target\":\"model-train-7f75cd56\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-7f75cd56\",\"target\":\"model-train-1362253f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-7f75cd56\",\"target\":\"model-train-26a2be3c\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', '[{\"workflow_id\":83,\"param_name\":\"batchsize\",\"description\":\"This is a test parameter for front-end testing.\",\"param_type\":1,\"param_value\":256,\"is_sensitive\":0},{\"workflow_id\":83,\"param_name\":\"epoch\",\"description\":\"Another test parameter for front-end testing.\",\"param_type\":2,\"param_value\":1024,\"is_sensitive\":1},{\"workflow_id\":83,\"param_name\":\"torch_size\",\"description\":\"Yet another test parameter for advanced testing.\",\"param_type\":3,\"param_value\":\"ComplexValue\",\"is_sensitive\":0}]', 'admin', '2024-03-01 11:10:51', 'admin', '2024-04-01 14:38:15', 1); +INSERT INTO `workflow` VALUES (84, 'mnist-0301-new', '手写体识别new', NULL, NULL, 'admin', '2024-03-01 11:16:49', 'admin', '2024-03-01 11:16:49', 1); +INSERT INTO `workflow` VALUES (85, 'dafdsdf', 'sfdasd', NULL, NULL, 'admin', '2024-03-01 11:22:46', 'admin', '2024-03-01 11:22:46', 1); +INSERT INTO `workflow` VALUES (86, 'mnist-3241', 'sf', NULL, NULL, 'admin', '2024-03-01 13:34:58', 'admin', '2024-03-01 13:34:58', 1); +INSERT INTO `workflow` VALUES (87, '324', '23423', NULL, NULL, 'admin', '2024-03-01 13:42:14', 'admin', '2024-03-01 13:42:14', 1); +INSERT INTO `workflow` VALUES (88, '34234', '234234', NULL, NULL, 'admin', '2024-03-01 13:43:01', 'admin', '2024-03-01 13:43:01', 1); +INSERT INTO `workflow` VALUES (89, '22222', '22222222', NULL, NULL, 'admin', '2024-03-01 13:43:22', 'admin', '2024-03-01 13:43:22', 0); +INSERT INTO `workflow` VALUES (90, '42334', '234234', '{\"nodes\":[{\"id\":\"git-clone-7ca2e9fa\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":337,\"y\":167.453125,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5}},{\"id\":\"git-clone-12c1b925\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":370,\"y\":323.453125,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5}}],\"edges\":[{\"source\":\"git-clone-7ca2e9fa\",\"target\":\"git-clone-12c1b925\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.81117797298838081709271831690\",\"startPoint\":{\"x\":337,\"y\":185.703125,\"anchorIndex\":1},\"endPoint\":{\"x\":370,\"y\":305.203125,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-01 13:43:52', 'admin', '2024-03-01 13:44:02', 0); +INSERT INTO `workflow` VALUES (91, 'sfsfas', 'sfdfsdff', '{\"nodes\":[{\"id\":\"git-clone-d02f62c\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":512.2000122070312,\"y\":205.25,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5}},{\"id\":\"model-train-7a5f1e3a\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":498.20001220703125,\"y\":315.25,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"cursor\":\"pointer\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"radius\":10,\"lineWidth\":0.5}}],\"edges\":[{\"source\":\"git-clone-d02f62c\",\"target\":\"model-train-7a5f1e3a\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.409042419130461709271957112\",\"startPoint\":{\"x\":512.2000122070312,\"y\":223.5,\"anchorIndex\":1},\"endPoint\":{\"x\":498.20001220703125,\"y\":297,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-01 13:45:50', 'admin', '2024-03-01 13:46:06', 0); +INSERT INTO `workflow` VALUES (92, 'dsfsfas', 'fsfasfasf', '{\"nodes\":[{\"id\":\"git-clone-4cd494c\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":517.1550068587105,\"y\":68.99314128943759,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"lineWidth\":0.5,\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}}},{\"id\":\"git-clone-4a26121\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":561.0507544581618,\"y\":272.01097393689986,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"lineWidth\":0.5,\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}}},{\"id\":\"git-clone-dbe649b\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":195,\"y\":152,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"lineWidth\":0.5,\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-03-01 16:38:54', 'admin', '2024-03-02 09:31:13', 0); +INSERT INTO `workflow` VALUES (93, 'test0302', '这是一个测试', '{\"nodes\":[{\"id\":\"git-clone-7c4d6494\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"{}\",\"x\":533,\"y\":274,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\",\"depth\":0},{\"id\":\"model-train-c5cc6bd\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python train.py --batch_size=256 --epoch=2\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":666,\"y\":414,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\",\"depth\":0},{\"id\":\"model-train-3bddb0d\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":529,\"y\":637,\"label\":\"模型推理1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result\",\"depth\":0},{\"id\":\"model-train-4bf30bc8\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"{}\",\"x\":824,\"y\":633,\"label\":\"模型推理2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-7c4d6494\",\"target\":\"model-train-c5cc6bd\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.311465153553195151709343569629\",\"startPoint\":{\"x\":533,\"y\":292.25,\"anchorIndex\":1},\"endPoint\":{\"x\":666,\"y\":395.75,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0},{\"source\":\"model-train-c5cc6bd\",\"target\":\"model-train-3bddb0d\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.42415836721889821709343574051\",\"startPoint\":{\"x\":666,\"y\":432.25,\"anchorIndex\":1},\"endPoint\":{\"x\":529,\"y\":618.75,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0},{\"source\":\"model-train-c5cc6bd\",\"target\":\"model-train-4bf30bc8\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.53923149832286631709343576898\",\"startPoint\":{\"x\":666,\"y\":432.25,\"anchorIndex\":1},\"endPoint\":{\"x\":824,\"y\":614.75,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-02 09:18:04', 'admin', '2024-03-04 08:51:27', 1); +INSERT INTO `workflow` VALUES (94, 'test651', NULL, '{\"nodes\":[{\"id\":\"git-clone-3f3a035d\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":194,\"y\":147,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"lineWidth\":0.5}},{\"id\":\"model-train-6177f58a\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":200,\"y\":301,\"label\":\"通用模型训练组件\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"lineWidth\":0.5}}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-03-02 09:25:24', 'admin', '2024-03-02 09:25:28', 0); +INSERT INTO `workflow` VALUES (95, '0302', 'asfdaf', NULL, NULL, 'admin', '2024-03-02 13:41:59', 'admin', '2024-03-02 13:41:59', 0); +INSERT INTO `workflow` VALUES (96, 'mnist-0301-distributed', '手写体识别0301', '{\"nodes\":[{\"id\":\"git-clone-5d7271c8\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":599.4639999999998,\"y\":143.66799694824212,\"label\":\"代码拉取组件2\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"distributed-model-train-c6a977f\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"{{git-clone-5d7271c8.--code_output}}\",\"command\":\"python distributed.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"},\\\"--worker_num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"2\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T15:47:37.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T15:47:39.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_distributed\",\"env_variables\":\"\",\"x\":602,\"y\":262,\"label\":\"分布式训练\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--worker_num\":\"2\",\"depth\":0,\"--model_output\":\"/model\"},{\"id\":\"model-train-30578fa3\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-5d7271c8.--code_output}}\",\"command\":\"python test_distributed.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{distributed-model-train-c6a977f.--model_output}}}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_distributed\",\"env_variables\":\"\",\"x\":514.9269999999999,\"y\":395.149,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{distributed-model-train-c6a977f.--model_output}}}}\",\"--model_output\":\"/result\",\"depth\":0},{\"id\":\"model-train-6298e433\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-5d7271c8.--code_output}}\",\"command\":\"python test_distributed2.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{distributed-model-train-c6a977f.--model_output}}}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_distributed\",\"env_variables\":\"\",\"x\":719.9269999999999,\"y\":395.149,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{distributed-model-train-c6a977f.--model_output}}}}\",\"--model_output\":\"/result\",\"depth\":0}],\"edges\":[{\"source\":\"git-clone-5d7271c8\",\"target\":\"distributed-model-train-c6a977f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.77513804582868161709797821363\",\"startPoint\":{\"x\":599.4639999999998,\"y\":161.91799694824212,\"anchorIndex\":1},\"endPoint\":{\"x\":602,\"y\":243.75,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"distributed-model-train-c6a977f\",\"target\":\"model-train-30578fa3\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.6583013444528761709858110108\",\"startPoint\":{\"x\":602,\"y\":280.25,\"anchorIndex\":1},\"endPoint\":{\"x\":514.9269999999999,\"y\":376.899,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"distributed-model-train-c6a977f\",\"target\":\"model-train-6298e433\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.357811005111434041709858586369\",\"startPoint\":{\"x\":602,\"y\":280.25,\"anchorIndex\":1},\"endPoint\":{\"x\":719.9269999999999,\"y\":376.899,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', '[{\"workflow_id\":96,\"param_name\":\"batchsize\",\"description\":\"This is a test parameter for front-end testing.\",\"param_type\":1,\"param_value\":256,\"is_sensitive\":0},{\"workflow_id\":96,\"param_name\":\"epoch\",\"description\":\"Another test parameter for front-end testing.\",\"param_type\":2,\"param_value\":1024,\"is_sensitive\":1},{\"workflow_id\":96,\"param_name\":\"torch_size\",\"description\":\"Yet another test parameter for advanced testing.\",\"param_type\":3,\"param_value\":\"ComplexValue\",\"is_sensitive\":0}]', 'admin', '2024-03-07 13:49:05', 'admin', '2024-04-01 16:53:26', 1); +INSERT INTO `workflow` VALUES (97, 'mnist-0301-distributed-copy', '手写体识别0301', '{\"nodes\":[{\"id\":\"git-clone-1af5ea58\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-1682500a\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python train.py --batch_size=256 --epoch=2\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-d4ee410\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-b771166\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result-new\"},{\"id\":\"distributed-model-train-a73e1e2\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--worker-num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T13:48:34.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T13:48:34.000+08:00\",\"state\":1,\"image\":\"\",\"env_variables\":\"{}\",\"x\":645.68,\"y\":226.27999999999997,\"label\":\"分布式训练\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0}],\"edges\":[{\"source\":\"git-clone-1af5ea58\",\"target\":\"model-train-1682500a\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0,\"sourceAnchor\":1},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-d4ee410\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0,\"sourceAnchor\":1},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-b771166\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0,\"sourceAnchor\":1},{\"source\":\"git-clone-1af5ea58\",\"target\":\"distributed-model-train-a73e1e2\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.27466675190809011709790591092\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":645.68,\"y\":208.02999999999997,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-07 13:54:26', 'admin', '2024-03-07 13:54:26', 0); +INSERT INTO `workflow` VALUES (98, 'mnist-0301-distributed-copy-copy', '手写体识别0301', '{\"nodes\":[{\"id\":\"git-clone-1af5ea58\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-1682500a\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python train.py --batch_size=256 --epoch=2\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-d4ee410\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-b771166\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result-new\"},{\"id\":\"distributed-model-train-a73e1e2\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--worker-num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T13:48:34.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T13:48:34.000+08:00\",\"state\":1,\"image\":\"\",\"env_variables\":\"{}\",\"x\":645.68,\"y\":226.27999999999997,\"label\":\"分布式训练\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0}],\"edges\":[{\"source\":\"git-clone-1af5ea58\",\"target\":\"model-train-1682500a\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0,\"sourceAnchor\":1},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-d4ee410\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0,\"sourceAnchor\":1},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-b771166\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0,\"sourceAnchor\":1},{\"source\":\"git-clone-1af5ea58\",\"target\":\"distributed-model-train-a73e1e2\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.27466675190809011709790591092\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":645.68,\"y\":208.02999999999997,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-07 13:56:12', 'admin', '2024-03-07 13:56:12', 0); +INSERT INTO `workflow` VALUES (99, 'mnist-0312-distributed', '手写体识别0312', '{\"nodes\":[{\"id\":\"git-clone-5d7271c8\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":599.4639999999998,\"y\":143.66799694824212,\"label\":\"代码拉取组件2\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"distributed-model-train-c6a977f\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"{{git-clone-5d7271c8.--code_output}}\",\"command\":\"python distributed.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"},\\\"--worker_num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"3\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T15:47:37.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T15:47:39.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_distributed\",\"env_variables\":\"\",\"x\":602,\"y\":262,\"label\":\"分布式训练\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--worker_num\":\"3\",\"depth\":0,\"--model_output\":\"/model\"}],\"edges\":[{\"source\":\"git-clone-5d7271c8\",\"target\":\"distributed-model-train-c6a977f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.77513804582868161709797821363\",\"startPoint\":{\"x\":599.4639999999998,\"y\":161.91799694824212,\"anchorIndex\":1},\"endPoint\":{\"x\":602,\"y\":243.75,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-12 14:06:00', 'admin', '2024-03-12 14:06:47', 1); +INSERT INTO `workflow` VALUES (100, 'mnist-0314-distributed', '手写体识别0314', '{\"nodes\":[{\"id\":\"git-clone-5d7271c8\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":597.3382359999999,\"y\":90.52389694824215,\"label\":\"代码拉取组件2\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"distributed-model-train-c6a977f\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"{{git-clone-5d7271c8.--code_output}}\",\"command\":\"python distributed.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"},\\\"--worker_num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"3\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T15:47:37.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T15:47:39.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_distributed\",\"env_variables\":\"\",\"x\":513.791,\"y\":262,\"label\":\"分布式训练\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--worker_num\":\"3\",\"depth\":0,\"--model_output\":\"/model\"},{\"id\":\"distributed-model-train-9566fec\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"{{git-clone-5d7271c8.--code_output}}\",\"command\":\"python distributed.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"},\\\"--worker_num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"3\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T15:47:37.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T15:47:39.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_distributed\",\"env_variables\":\"\",\"x\":693.6800000000001,\"y\":265.645,\"label\":\"分布式训练2\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--worker_num\":\"3\",\"depth\":0,\"--model_output\":\"/model\"}],\"edges\":[{\"source\":\"git-clone-5d7271c8\",\"target\":\"distributed-model-train-c6a977f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.51025382849230171710314125422\",\"startPoint\":{\"x\":597.3382359999999,\"y\":108.77389694824215,\"anchorIndex\":1},\"endPoint\":{\"x\":513.791,\"y\":243.75,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0},{\"source\":\"git-clone-5d7271c8\",\"target\":\"distributed-model-train-9566fec\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#CDD0DC\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#CDD0DC\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.9664463219593721710314135382\",\"startPoint\":{\"x\":597.3382359999999,\"y\":108.77389694824215,\"anchorIndex\":1},\"endPoint\":{\"x\":693.6800000000001,\"y\":247.39499999999998,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"sourceAnchor\":1,\"targetAnchor\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-13 15:14:20', 'admin', '2024-03-13 15:15:38', 1); +INSERT INTO `workflow` VALUES (101, 'aim测试测试', '手写体识别0301-aim指标测试', '{\"nodes\":[{\"id\":\"git-clone-1af5ea58\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-1682500a\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python train_aim.py --batch_size=256 --epoch=3\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-d4ee410\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-b771166\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-1af5ea58\",\"target\":\"model-train-1682500a\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-d4ee410\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-b771166\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-14 10:57:16', 'admin', '2024-03-14 14:04:10', 1); +INSERT INTO `workflow` VALUES (102, 'aim测试测试-copy', '手写体识别0301-aim指标测试', '{\"nodes\":[{\"id\":\"git-clone-1af5ea58\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-1682500a\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python train_aim.py --batch_size=256 --epoch=3\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-d4ee410\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-b771166\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-1af5ea58.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-1682500a.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-1682500a.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-1af5ea58\",\"target\":\"model-train-1682500a\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-d4ee410\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-1682500a\",\"target\":\"model-train-b771166\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-18 09:29:04', 'admin', '2024-03-18 09:29:04', 0); +INSERT INTO `workflow` VALUES (103, 'aim测试测试-copy', '手写体识别0301-aim指标测试', '{\"nodes\":[{\"id\":\"git-clone-08b4261b\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-9405b44f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-08b4261b.--code_output}}\",\"command\":\"python train_aim.py --batch_size=256 --epoch=3\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-0b155052\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-08b4261b.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-9405b44f.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-9405b44f.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-8c73471f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-08b4261b.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-9405b44f.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-9405b44f.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-08b4261b\",\"target\":\"model-train-9405b44f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-9405b44f\",\"target\":\"model-train-0b155052\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-9405b44f\",\"target\":\"model-train-8c73471f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-22 15:59:17', 'admin', '2024-03-25 10:46:21', 1); +INSERT INTO `workflow` VALUES (104, 'mnist-0301-copy', '手写体识别0301', '{\"nodes\":[{\"id\":\"git-clone-cfb18938\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-c3c64dbe\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-cfb18938.--code_output}}\",\"command\":\"python train.py --batch_size=256 --epoch=200\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-9a615586\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-cfb18938.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-c3c64dbe.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-c3c64dbe.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-e63990c7\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-cfb18938.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-c3c64dbe.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-c3c64dbe.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-cfb18938\",\"target\":\"model-train-c3c64dbe\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-c3c64dbe\",\"target\":\"model-train-9a615586\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-c3c64dbe\",\"target\":\"model-train-e63990c7\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-22 15:59:58', 'admin', '2024-03-22 15:59:58', 0); +INSERT INTO `workflow` VALUES (105, 'mnist-0301-copy-copy', '手写体识别0301', '{\"nodes\":[{\"id\":\"git-clone-7d25a159\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"use-dataset-zip\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-e32b4329\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-7d25a159.--code_output}}\",\"command\":\"python train.py --batch_size=256 --epoch=200\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-50e88ed0\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-7d25a159.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-e32b4329.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-e32b4329.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-95333154\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-7d25a159.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-e32b4329.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-e32b4329.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-7d25a159\",\"target\":\"model-train-e32b4329\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-e32b4329\",\"target\":\"model-train-50e88ed0\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-e32b4329\",\"target\":\"model-train-95333154\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', NULL, 'admin', '2024-03-22 16:01:02', 'admin', '2024-03-22 16:01:02', 0); +INSERT INTO `workflow` VALUES (106, 'test001', NULL, '{\"nodes\":[{\"id\":\"git-clone-16a50c0\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取\",\"working_directory\":\"工作目录\",\"command\":\"启动命令\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"挂载目录\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-03-02T13:41:25.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-02T13:41:25.000+08:00\",\"state\":1,\"image\":\"镜像\",\"env_variables\":\"{}\",\"x\":299,\"y\":232,\"label\":\"代码拉取\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5,\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}}},{\"id\":\"distributed-model-train-7c406ba\",\"category_id\":2,\"component_name\":\"distributed-model-train\",\"component_label\":\"分布式训练\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":null,\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\",\\\"value\\\":\\\"1\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"},\\\"--worker_num\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"分布式训练work数量\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"分布式训练work数量\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1}}\",\"description\":\"分布式模型训练组件,支持deepspeed, metatron, horovod\",\"icon_path\":null,\"create_by\":\"admin\",\"create_time\":\"2024-03-07T15:47:37.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-03-07T15:47:39.000+08:00\",\"state\":1,\"image\":\"\",\"env_variables\":\"{}\",\"x\":485,\"y\":228,\"label\":\"分布式训练\",\"img\":\"/assets/images/null.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"transparent\",\"fontSize\":0,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\"}},\"style\":{\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5,\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1}},\"depth\":0}],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-03-25 10:37:07', 'admin', '2024-03-25 10:38:54', 1); +INSERT INTO `workflow` VALUES (107, 'test001', NULL, '{\"nodes\":[],\"edges\":[],\"combos\":[]}', NULL, 'admin', '2024-03-25 10:39:01', 'admin', '2024-03-25 10:40:34', 0); +INSERT INTO `workflow` VALUES (108, NULL, NULL, NULL, NULL, 'admin', '2024-03-25 10:40:41', 'admin', '2024-03-25 10:40:41', 0); +INSERT INTO `workflow` VALUES (109, NULL, NULL, NULL, NULL, 'admin', '2024-03-25 10:40:46', 'admin', '2024-03-25 10:40:46', 0); +INSERT INTO `workflow` VALUES (110, NULL, NULL, NULL, NULL, 'admin', '2024-03-25 11:39:34', 'admin', '2024-03-25 11:39:34', 0); +INSERT INTO `workflow` VALUES (111, 'aim测试测试-copy', '手写体识别0301-aim指标测试', '{\"nodes\":[{\"id\":\"git-clone-4bd273c1\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-7f75cd56\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python train_aim.py --batch_size=256 --epoch=3\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-1362253f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7f75cd56.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7f75cd56.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-26a2be3c\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7f75cd56.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7f75cd56.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-4bd273c1\",\"target\":\"model-train-7f75cd56\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-7f75cd56\",\"target\":\"model-train-1362253f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-7f75cd56\",\"target\":\"model-train-26a2be3c\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', '[{\"workflow_id\":111,\"param_name\":\"batchsize\",\"description\":\"This is a test parameter for front-end testing.\",\"param_type\":1,\"param_value\":256,\"is_sensitive\":0},{\"workflow_id\":111,\"param_name\":\"epoch\",\"description\":\"Another test parameter for front-end testing.\",\"param_type\":2,\"param_value\":1024,\"is_sensitive\":1},{\"workflow_id\":111,\"param_name\":\"torch_size\",\"description\":\"Yet another test parameter for advanced testing.\",\"param_type\":3,\"param_value\":\"ComplexValue\",\"is_sensitive\":0}]', 'admin', '2024-03-25 15:49:33', 'admin', '2024-03-29 14:24:10', 1); +INSERT INTO `workflow` VALUES (112, 'NnIM测试', 'safasfsaf', NULL, NULL, 'admin', '2024-03-28 15:02:14', 'admin', '2024-03-28 15:02:14', 0); +INSERT INTO `workflow` VALUES (113, 'NIM测试测试-copy', '手写体识别0301-aim指标测试', '{\"nodes\":[{\"id\":\"git-clone-4bd273c1\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-7f75cd56\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python train_aim.py --batch_size=256 --epoch=3\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 1, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"},{\"id\":\"model-train-1362253f\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7f75cd56.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":391.49676749861436,\"y\":315.3755737715332,\"label\":\"模型测试1\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7f75cd56.--model_output}}\",\"--model_output\":\"/result\"},{\"id\":\"model-train-26a2be3c\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-4bd273c1.--code_output}}\",\"command\":\"python inference.py\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{{model-train-7f75cd56.--model_output}}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/result-new\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/machine-learning/pytorch:pytorch_1.9.1_cuda11.1_detection_aim\",\"env_variables\":\"\",\"x\":541.4967674986144,\"y\":315.3755737715332,\"label\":\"模型测试2\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"transparent\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{{model-train-7f75cd56.--model_output}}\",\"--model_output\":\"/result-new\"}],\"edges\":[{\"source\":\"git-clone-4bd273c1\",\"target\":\"model-train-7f75cd56\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-7f75cd56\",\"target\":\"model-train-1362253f\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.31721243827888211709271377841\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":391.49676749861436,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0},{\"source\":\"model-train-7f75cd56\",\"target\":\"model-train-26a2be3c\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.82213432056017741709273667956\",\"startPoint\":{\"x\":466,\"y\":241.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":541.4967674986144,\"y\":297.1255737715332,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', '[{\"workflow_id\":111,\"param_name\":\"batchsize\",\"description\":\"This is a test parameter for front-end testing.\",\"param_type\":1,\"param_value\":256,\"is_sensitive\":0},{\"workflow_id\":111,\"param_name\":\"epoch\",\"description\":\"Another test parameter for front-end testing.\",\"param_type\":2,\"param_value\":1024,\"is_sensitive\":1},{\"workflow_id\":111,\"param_name\":\"torch_size\",\"description\":\"Yet another test parameter for advanced testing.\",\"param_type\":3,\"param_value\":\"ComplexValue\",\"is_sensitive\":0}]', 'admin', '2024-03-29 14:25:36', 'admin', '2024-03-29 14:25:36', 1); +INSERT INTO `workflow` VALUES (114, 'tensorboard测试', '测试tensorboard挂盘', '{\"nodes\":[{\"id\":\"git-clone-3f832e91\",\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"代码拉取组件\",\"working_directory\":\"\",\"command\":\"\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码仓库地址\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"私有仓库填写ssh地址,公有仓库填写https git地址\\\",\\\"describe\\\":\\\"代码仓库地址\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"代码分支/tag\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"master\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码分支或者tag\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"aim-test\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"克隆深度\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"代码克隆深度\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"ssh私钥\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"default\\\":\\\"1\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"ssh私钥,确保ssh公钥已经托管到代码平台,否则可能拉取失败\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\"}}\",\"out_parameters\":\"{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"代码输出路径\\\",\\\"path\\\":\\\"/code\\\",\\\"require\\\":1,\\\"value\\\":\\\"/code\\\"}}\",\"description\":\"代码拉取组件\",\"icon_path\":\"component-icon-1\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:11.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:11.000+08:00\",\"state\":1,\"image\":\"172.20.32.187/pipeline-component/built-in/git:202312071000\",\"env_variables\":\"\",\"x\":461,\"y\":127.38749694824213,\"label\":\"代码拉取组件\",\"img\":\"/assets/images/component-icon-1.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--code_path\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"--branch\":\"aim-test\",\"--depth\":\"1\",\"--code_output\":\"/code\"},{\"id\":\"model-train-f4c59bb6\",\"category_id\":2,\"component_name\":\"model-train\",\"component_label\":\"通用模型训练组件\",\"working_directory\":\"{{git-clone-3f832e91.--code_output}}\",\"command\":\"python testTensorboard.py --batchsize=256 --epoch=3\",\"resources_standard\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\",\"control_strategy\":\"{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"超时中断\\\",\\\"item_type\\\":\\\"\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"label\\\":\\\"重试次数\\\"}}\",\"mount_path\":\"\",\"in_parameters\":\"{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"label\\\":\\\"选择数据集\\\",\\\"require\\\":1,\\\"choice\\\":[],\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"选择数据集\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"label\\\":\\\"选择模型\\\",\\\"require\\\":0,\\\"choice\\\":[],\\\"range\\\":\\\"$min,$max\\\",\\\"default\\\":\\\"\\\",\\\"placeholder\\\":\\\"\\\",\\\"describe\\\":\\\"这里是这个参数的描述和备注\\\",\\\"editable\\\":1,\\\"condition\\\":\\\"\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}}\",\"out_parameters\":\"{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"label\\\":\\\"模型输出路径\\\",\\\"path\\\":\\\"/model\\\",\\\"require\\\":1,\\\"value\\\":\\\"/model\\\"}}\",\"description\":\"通用模型训练组件介绍\",\"icon_path\":\"component-icon-2\",\"create_by\":\"admin\",\"create_time\":\"2024-01-18T08:45:14.000+08:00\",\"update_by\":\"admin\",\"update_time\":\"2024-01-18T08:45:14.000+08:00\",\"state\":1,\"image\":\"172.20.30.187/machine-learning/tensorboard-test:v1\",\"env_variables\":\"\",\"x\":466,\"y\":223.38749694824213,\"label\":\"模型训练\",\"img\":\"/assets/images/component-icon-2.png\",\"isCluster\":false,\"type\":\"rect-node\",\"size\":[110,36],\"labelCfg\":{\"style\":{\"fill\":\"#000\",\"fontSize\":10,\"boxShadow\":\"0px 0px 12px rgba(75, 84, 137, 0.05)\",\"overflow\":\"hidden\",\"x\":-20,\"y\":0,\"textAlign\":\"left\",\"textBaseline\":\"middle\",\"cursor\":\"pointer\"}},\"style\":{\"active\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10},\"selected\":{\"fill\":\"rgb(255, 255, 255)\",\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":4,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"fill\":\"rgb(223, 234, 255)\",\"stroke\":\"#4572d9\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"fill\":\"rgb(247, 250, 255)\",\"stroke\":\"rgb(191, 213, 255)\",\"lineWidth\":1},\"disable\":{\"fill\":\"rgb(250, 250, 250)\",\"stroke\":\"rgb(224, 224, 224)\",\"lineWidth\":1},\"nodeSelected\":{\"fill\":\"red\",\"shadowColor\":\"red\",\"stroke\":\"red\",\"text-shape\":{\"fill\":\"red\",\"stroke\":\"red\"}},\"fill\":\"#fff\",\"stroke\":\"#1664ff\",\"cursor\":\"pointer\",\"radius\":10,\"overflow\":\"hidden\",\"lineWidth\":0.5},\"depth\":0,\"--dataset\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\",\"--model_name\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\",\"--model_output\":\"/model\"}],\"edges\":[{\"source\":\"git-clone-3f832e91\",\"target\":\"model-train-f4c59bb6\",\"type\":\"cubic-vertical\",\"style\":{\"active\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":1},\"selected\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"shadowColor\":\"rgb(95, 149, 255)\",\"shadowBlur\":10,\"text-shape\":{\"fontWeight\":500}},\"highlight\":{\"stroke\":\"rgb(95, 149, 255)\",\"lineWidth\":2,\"text-shape\":{\"fontWeight\":500}},\"inactive\":{\"stroke\":\"rgb(234, 234, 234)\",\"lineWidth\":1},\"disable\":{\"stroke\":\"rgb(245, 245, 245)\",\"lineWidth\":1},\"endArrow\":{\"path\":\"M 6,0 L 9,-1.5 L 9,1.5 Z\",\"d\":4.5,\"fill\":\"#a2a6b5\"},\"cursor\":\"pointer\",\"lineWidth\":1,\"opacity\":1,\"stroke\":\"#a2a6b5\",\"radius\":1},\"nodeStateStyle\":{\"hover\":{\"opacity\":1,\"stroke\":\"#8fe8ff\"}},\"labelCfg\":{\"autoRotate\":true,\"style\":{\"fontSize\":10,\"fill\":\"#FFF\"}},\"id\":\"edge-0.68904032703753691709262922230\",\"startPoint\":{\"x\":461,\"y\":145.63749694824213,\"anchorIndex\":1},\"endPoint\":{\"x\":466,\"y\":205.13749694824213,\"anchorIndex\":0},\"curvePosition\":[0.5,0.5],\"curveOffset\":[0,0],\"minCurveOffset\":[0,0],\"targetAnchor\":0,\"depth\":0}],\"combos\":[]}', '[{\"workflow_id\":83,\"param_name\":\"batchsize\",\"description\":\"This is a test parameter for front-end testing.\",\"param_type\":1,\"param_value\":256,\"is_sensitive\":0},{\"workflow_id\":83,\"param_name\":\"epoch\",\"description\":\"Another test parameter for front-end testing.\",\"param_type\":2,\"param_value\":1024,\"is_sensitive\":1},{\"workflow_id\":83,\"param_name\":\"torch_size\",\"description\":\"Yet another test parameter for advanced testing.\",\"param_type\":3,\"param_value\":\"ComplexValue\",\"is_sensitive\":0}]', 'admin', '2024-03-29 15:52:07', 'admin', '2024-03-29 16:16:44', 1); + +-- ---------------------------- +-- Table structure for workflow_param +-- ---------------------------- +DROP TABLE IF EXISTS `workflow_param`; +CREATE TABLE `workflow_param` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `workflow_id` bigint(20) NULL DEFAULT NULL COMMENT '流水线id', + `param_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数名称', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数描述', + `param_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数类型', + `param_value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数的值', + `is_sensitive` tinyint(4) NULL DEFAULT NULL COMMENT '0失效,1生效', + `create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `state` tinyint(4) NULL DEFAULT NULL COMMENT '0失效,1生效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of workflow_param +-- ---------------------------- +INSERT INTO `workflow_param` VALUES (1, 111, 'NewParameter-change', 'This is a test parameter for front-end testing.', '1', 'TestValue', 1, 'admin', '2024-03-26 10:55:28', 'admin', '2024-03-26 10:59:07', 1); SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/ry-ci4s_20240104.sql b/sql/ry-ci4s_20240104.sql deleted file mode 100644 index 02481d4e..00000000 --- a/sql/ry-ci4s_20240104.sql +++ /dev/null @@ -1,1046 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : localhost - Source Server Type : MySQL - Source Server Version : 50721 - Source Host : 172.20.32.150:3306 - Source Schema : ry-ci4s - - Target Server Type : MySQL - Target Server Version : 50721 - File Encoding : 65001 - - Date: 04/01/2024 16:24:54 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for component --- ---------------------------- -DROP TABLE IF EXISTS `component`; -CREATE TABLE `component` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '主键', - `category_id` int(4) NOT NULL COMMENT '类别ID,数据字典配置', - `component_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件name', - `component_label` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件面板名', - `images` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '镜像', - `working_directory` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工作目录', - `command` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '启动命令', - `env_virables` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '环境变量', - `resources_standard` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '资源规格', - `control_strategy` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '控制策略', - `mount_path` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '挂载路径', - `in_parameters` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '输入参数', - `out_parameters` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '输出参数', - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of component --- ---------------------------- -INSERT INTO `component` VALUES (9, 2, '通用模型训练', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 10:19:20', 'admin', '2023-12-15 10:19:20', 0); -INSERT INTO `component` VALUES (11, 2, 'model-train', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 10:19:25', 'admin', '2023-12-15 10:19:25', 0); -INSERT INTO `component` VALUES (12, 2, 'model-train', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 10:22:12', 'admin', '2023-12-15 10:22:12', 0); -INSERT INTO `component` VALUES (13, 4, 'model-train-Mnist', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 11:00:19', 'admin', '2023-12-15 11:00:19', 0); -INSERT INTO `component` VALUES (14, 4, 'model-train-Mnist', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 11:04:55', 'admin', '2023-12-15 11:04:55', 0); -INSERT INTO `component` VALUES (15, 2, 'model-train', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 13:46:30', 'admin', '2023-12-15 13:46:30', 0); -INSERT INTO `component` VALUES (16, 2, 'model-train', '计算机视觉模型训练组件', '镜像XXXXXXXXXXXXXXX', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-15 14:54:40', '苏影城', '2023-12-15 14:54:39', 0); -INSERT INTO `component` VALUES (17, 2, 'model-train', '计算机视觉模型训练组件', '镜像XXXXXXXXXXXXXXX', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, '苏影城', '2023-12-15 14:52:27', '苏影城', '2023-12-15 14:52:27', 0); -INSERT INTO `component` VALUES (18, 4, 'model-train-minst', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, '苏影城', '2023-12-15 15:07:08', '苏影城', '2023-12-15 15:07:08', 0); -INSERT INTO `component` VALUES (19, 3, 'model-process', '模型处理', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, 'admin', '2023-12-18 09:55:34', 'admin', '2023-12-18 09:55:33', 0); -INSERT INTO `component` VALUES (20, 4, 'model-train-minst', '通用模型训练组件', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, itemType=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --modelName={type=ref, itemType=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, formInfo={name=mnist, path=/mnt/e/xxxx}}}', '{--modelOutput={type=str, path=/model}}', NULL, '苏影城', '2023-12-18 11:22:48', '苏影城', '2023-12-18 11:22:48', 0); -INSERT INTO `component` VALUES (21, 2, '通用模型训练', '通用模型训练组件介绍', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, item_type=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --model_name={type=ref, item_type=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, form_info={name=mnist, path=/mnt/e/xxxx}}}', '{--model_output={type=str, path=/model}}', NULL, '苏影城', '2023-12-18 13:53:15', '苏影城', '2023-12-18 13:53:14', 0); -INSERT INTO `component` VALUES (22, 4, 'model-train-common', 'xxxxx', '镜像', '工作目录', '启动命令', '{}', NULL, '[{\"type\":\"str\",\"label\":\"超时中断\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行时长,支持s(秒),m(分钟),h(小时),d(天),示例:3h,代表3个小时超时,0表示不限制时长\",\"editable\":1},{\"type\":\"int\",\"label\":\"重试次数\",\"require\":1,\"choice\":[],\"default\":\"0\",\"placeholder\":\"\",\"describe\":\"组件运行失败自动重试次数\",\"editable\":1}]', '挂载目录', '{--dataset={type=ref, item_type=dataset, label=选择数据集, require=1, choice=[], default=, placeholder=, describe=选择数据集, editable=1, condition=}, --model_name={type=ref, item_type=model, label=选择模型, require=0, choice=[], range=$min,$max, default=, placeholder=, describe=这里是这个参数的描述和备注, editable=1, condition=, form_info={name=mnist, path=/mnt/e/xxxx}}}', '{--model_output={type=str, path=/model}}', NULL, 'admin', '2023-12-18 14:35:09', 'admin', '2023-12-18 14:35:08', 1); - --- ---------------------------- --- Table structure for computing_resource --- ---------------------------- -DROP TABLE IF EXISTS `computing_resource`; -CREATE TABLE `computing_resource` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', - `computing_resource` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '计算资源', - `standard` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规格', - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', - `create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT NULL COMMENT '0,失效 1, 生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of computing_resource --- ---------------------------- - --- ---------------------------- --- Table structure for dataset --- ---------------------------- -DROP TABLE IF EXISTS `dataset`; -CREATE TABLE `dataset` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `data_type` int(11) NULL DEFAULT NULL, - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of dataset --- ---------------------------- -INSERT INTO `dataset` VALUES (1, 'MNIST', 'SDSDS', NULL, '', '2023-12-28 13:54:20', '', '2023-12-28 13:54:20', 0); -INSERT INTO `dataset` VALUES (2, '鸢尾花', 'sdasdsa', NULL, '', '2023-12-26 14:18:21', '', '2023-12-26 14:18:21', 0); -INSERT INTO `dataset` VALUES (4, 'start_workflow.json', NULL, NULL, '苏影城', '2023-12-26 16:01:45', '苏影城', '2023-12-26 16:01:45', 0); -INSERT INTO `dataset` VALUES (5, 'start_workflow.json', NULL, NULL, 'admin', '2023-12-27 09:16:59', 'admin', '2023-12-27 09:16:59', 0); -INSERT INTO `dataset` VALUES (6, 'workspace.postman_globals.json', NULL, NULL, '苏影城', '2023-12-27 11:30:16', '苏影城', '2023-12-27 11:30:16', 0); -INSERT INTO `dataset` VALUES (7, 'mnist', '计算机视觉手写体识别mnist数据集 二次修改', 1, 'admin', '2023-12-28 09:37:14', '苏影城', '2023-12-28 09:37:12', 0); -INSERT INTO `dataset` VALUES (8, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-27 15:21:02', 'admin', '2023-12-27 15:21:02', 0); -INSERT INTO `dataset` VALUES (9, 'mnist', '计算机视觉手写体识别mnist数据集XXXX', 2, 'admin', '2023-12-28 13:57:42', 'admin', '2023-12-28 14:03:22', 0); -INSERT INTO `dataset` VALUES (10, 'mnist', '计算机视觉手写体识别mnist数据集XXXX', 2, 'admin', '2023-12-28 14:34:30', 'admin', '2023-12-28 15:32:00', 0); -INSERT INTO `dataset` VALUES (11, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-28 14:34:04', 'admin', '2023-12-28 14:34:04', 0); -INSERT INTO `dataset` VALUES (12, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-28 16:03:51', 'admin', '2023-12-29 09:00:22', 1); -INSERT INTO `dataset` VALUES (13, 'mnist', '计算机视觉手写体识别mnist数据集', 1, 'admin', '2023-12-28 16:05:41', 'admin', '2023-12-28 16:05:41', 1); -INSERT INTO `dataset` VALUES (14, 'mnist', '计算机视觉手写体识别mnist数据集2-24', 1, 'admin', '2024-01-02 15:43:14', 'admin', '2024-01-02 15:44:02', 1); - --- ---------------------------- --- Table structure for dataset_version --- ---------------------------- -DROP TABLE IF EXISTS `dataset_version`; -CREATE TABLE `dataset_version` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '主键', - `dataset_id` int(4) NOT NULL, - `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '版本', - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据集存储地址', - `file_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名', - `file_size` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', - `available_cluster` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '可用集群', - `status` int(4) NULL DEFAULT NULL COMMENT '状态', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT NULL COMMENT '0失效,1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of dataset_version --- ---------------------------- -INSERT INTO `dataset_version` VALUES (1, 12, '1.0', 'datasets/admin/mnist-20231228-160351/v1.0/comonent-register.json', 'gasdfas.csv', '1MB', NULL, NULL, NULL, NULL, NULL, NULL, 1); - --- ---------------------------- --- Table structure for experiment --- ---------------------------- -DROP TABLE IF EXISTS `experiment`; -CREATE TABLE `experiment` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实验名称', - `workflow_id` bigint(20) NULL DEFAULT NULL, - `global_param` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '全局参数', - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 344 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of experiment --- ---------------------------- -INSERT INTO `experiment` VALUES (321, NULL, 1, '{}', 'test', 'admin', '2023-11-06 16:34:48', 'admin', '2023-11-06 16:34:51', 0); -INSERT INTO `experiment` VALUES (322, NULL, 26, NULL, 'pytorch小模型训练实验做简单的测试', 'admin', '2023-11-15 15:27:33', 'admin', '2023-11-15 15:27:33', 0); -INSERT INTO `experiment` VALUES (323, NULL, 26, NULL, 'pytorch小模型训练实验做简单的测试', 'admin', '2023-11-15 16:26:03', 'admin', '2023-11-15 16:26:03', 0); -INSERT INTO `experiment` VALUES (324, NULL, 26, NULL, 'pytorch大模型训练实验做简单的测试', 'admin', '2023-11-16 10:17:59', 'admin', '2023-11-16 10:17:59', 0); -INSERT INTO `experiment` VALUES (325, NULL, 26, NULL, 'pytorch大模型训练实验做简单的测试', 'admin', '2023-11-16 10:18:49', 'admin', '2023-11-16 10:18:49', 0); -INSERT INTO `experiment` VALUES (326, NULL, 28, NULL, NULL, 'admin', '2023-11-17 09:52:05', 'admin', '2023-11-17 09:52:05', 0); -INSERT INTO `experiment` VALUES (327, NULL, 28, NULL, NULL, 'admin', '2023-11-17 09:53:38', 'admin', '2023-11-17 09:53:38', 0); -INSERT INTO `experiment` VALUES (328, NULL, 28, NULL, NULL, 'admin', '2023-11-17 14:09:11', 'admin', '2023-11-17 14:09:11', 0); -INSERT INTO `experiment` VALUES (329, 'tensorflow小模型训练实验做简单的测试', 28, NULL, NULL, 'admin', '2023-11-20 09:20:11', 'admin', '2023-11-20 09:20:11', 0); -INSERT INTO `experiment` VALUES (330, 'tensorflow小模型训练实验做简单的测试', 28, NULL, NULL, 'admin', '2023-11-17 14:13:43', 'admin', '2023-11-17 14:13:43', 0); -INSERT INTO `experiment` VALUES (331, 'tensorlfow大模型训练实验', 28, NULL, NULL, 'admin', '2023-11-17 14:14:33', 'admin', '2023-11-17 14:14:33', 0); -INSERT INTO `experiment` VALUES (332, NULL, 32, NULL, NULL, 'admin', '2023-11-18 15:56:31', 'admin', '2023-11-18 15:56:31', 0); -INSERT INTO `experiment` VALUES (333, 'pytorch手写体识别训练', NULL, NULL, 'pytorch手写体识别训练,参数非常少', 'admin', '2023-11-20 09:28:32', 'admin', '2023-11-20 09:28:32', 0); -INSERT INTO `experiment` VALUES (334, 'pytorch手写体识别训练-batchsize128', NULL, NULL, 'batchsize128', 'admin', '2023-11-20 09:36:03', 'admin', '2023-11-20 09:36:03', 0); -INSERT INTO `experiment` VALUES (335, 'pytorch手写体识别训练-batchsize128', NULL, NULL, 'batchsize128', 'admin', '2023-11-20 09:39:38', 'admin', '2023-11-20 09:39:38', 0); -INSERT INTO `experiment` VALUES (336, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 09:40:45', 'admin', '2023-11-20 09:40:45', 0); -INSERT INTO `experiment` VALUES (337, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 09:57:30', 'admin', '2023-11-20 09:57:30', 0); -INSERT INTO `experiment` VALUES (338, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:09:23', 'admin', '2023-11-20 10:09:23', 0); -INSERT INTO `experiment` VALUES (339, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:17:53', 'admin', '2023-11-20 10:17:53', 0); -INSERT INTO `experiment` VALUES (340, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:22:50', 'admin', '2023-11-20 10:22:50', 0); -INSERT INTO `experiment` VALUES (341, 'pytorch手写体识别训练-batchsize128', 34, NULL, 'batchsize128', 'admin', '2023-11-20 10:28:37', 'admin', '2023-11-20 10:28:37', 1); -INSERT INTO `experiment` VALUES (342, 'mindspore大模型训练实验-batcsize256', 35, NULL, 'batcsize256', 'admin', '2023-11-20 10:32:39', 'admin', '2023-11-20 10:32:39', 1); -INSERT INTO `experiment` VALUES (343, '组件库方式tensorflow手写体识别训练-batchsize256', 40, NULL, 'batchsize256', 'admin', '2023-12-21 14:28:49', 'admin', '2023-12-21 14:28:49', 1); - --- ---------------------------- --- Table structure for experiment_ins --- ---------------------------- -DROP TABLE IF EXISTS `experiment_ins`; -CREATE TABLE `experiment_ins` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `experiment_id` int(11) NULL DEFAULT NULL COMMENT '实验ID', - `argo_ins_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'argo返回name', - `argo_ins_ns` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'argo返回命名空间', - `status` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实例运行状态', - `nodes_status` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '节点状态', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of experiment_ins --- ---------------------------- -INSERT INTO `experiment_ins` VALUES (1, 321, 'workflow-cgtld', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `experiment_ins` VALUES (2, 321, 'workflow-hwb7n', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `experiment_ins` VALUES (3, 321, 'workflow-ttshq', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `experiment_ins` VALUES (4, 321, 'workflow-vws9k', 'argo', NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `experiment_ins` VALUES (6, 323, 'workflow-lrb2s', 'argo', 'Succeeded', NULL, 'admin', '2023-11-15 16:44:39', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (7, 323, 'workflow-25qkl', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 09:11:17', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (8, 323, 'workflow-bjqrm', 'argo', 'Failed', NULL, 'admin', '2023-11-16 09:27:29', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (9, 323, 'workflow-hs4mq', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 09:43:17', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (10, 321, 'workflow-zsprx', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 10:11:29', 'admin', '2023-11-17 09:26:09', 0); -INSERT INTO `experiment_ins` VALUES (11, 322, 'workflow-bwxvs', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 10:12:59', 'admin', '2023-11-16 15:21:16', 0); -INSERT INTO `experiment_ins` VALUES (12, 322, 'workflow-jmk7l', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 10:13:31', 'admin', '2023-11-16 16:14:07', 1); -INSERT INTO `experiment_ins` VALUES (13, 321, 'workflow-jsbmn', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 10:13:47', 'admin', '2023-11-17 13:40:32', 0); -INSERT INTO `experiment_ins` VALUES (14, 325, 'workflow-7zdpd', 'argo', 'Succeeded', NULL, 'admin', '2023-11-16 10:18:50', 'admin', '2023-11-17 09:26:10', 0); -INSERT INTO `experiment_ins` VALUES (15, 327, 'workflow-9gf62', 'argo', 'Failed', NULL, 'admin', '2023-11-17 09:53:39', 'admin', '2023-11-17 14:22:32', 0); -INSERT INTO `experiment_ins` VALUES (16, 331, 'workflow-dcchw', 'argo', 'Running', NULL, 'admin', '2023-11-17 14:14:34', 'admin', '2023-11-17 14:16:48', 0); -INSERT INTO `experiment_ins` VALUES (17, 331, 'workflow-64qv8', 'argo', 'Succeeded', NULL, 'admin', '2023-11-17 14:15:33', 'admin', '2023-11-17 14:22:32', 0); -INSERT INTO `experiment_ins` VALUES (18, 336, 'workflow-kknnq', 'argo', 'Running', NULL, 'admin', '2023-11-20 09:41:28', 'admin', '2023-11-20 09:51:20', 0); -INSERT INTO `experiment_ins` VALUES (19, 337, 'workflow-spwqx', 'argo', 'Succeeded', NULL, 'admin', '2023-11-20 09:57:43', 'admin', '2023-11-20 10:08:52', 0); -INSERT INTO `experiment_ins` VALUES (20, 338, 'workflow-rpvmj', 'argo', 'Running', NULL, 'admin', '2023-11-20 10:09:39', 'admin', '2023-11-20 10:14:45', 0); -INSERT INTO `experiment_ins` VALUES (21, 339, 'workflow-vqxwn', 'argo', 'Running', NULL, 'admin', '2023-11-20 10:18:02', 'admin', '2023-11-20 10:18:17', 0); -INSERT INTO `experiment_ins` VALUES (22, 340, 'workflow-p4m58', 'argo', 'Running', NULL, 'admin', '2023-11-20 10:23:13', 'admin', '2023-11-20 10:23:26', 1); -INSERT INTO `experiment_ins` VALUES (23, 341, 'workflow-ffd7k', 'argo', 'Terminated', NULL, 'admin', '2023-11-20 10:28:47', 'admin', '2023-11-20 10:28:57', 1); -INSERT INTO `experiment_ins` VALUES (24, 341, 'workflow-psd6l', 'argo', 'Terminated', NULL, 'admin', '2023-11-20 10:29:39', 'admin', '2023-11-20 10:29:52', 1); -INSERT INTO `experiment_ins` VALUES (25, 342, 'workflow-h2nww', 'argo', 'Terminated', NULL, 'admin', '2023-11-20 10:32:40', 'admin', '2023-11-20 10:32:50', 1); -INSERT INTO `experiment_ins` VALUES (27, 343, 'workflow-9xp9x', 'argo', 'Failed', NULL, 'admin', '2023-12-21 14:31:27', 'admin', '2023-12-21 14:35:39', 1); -INSERT INTO `experiment_ins` VALUES (28, 343, 'workflow-kf77h', 'argo', 'Failed', NULL, 'admin', '2023-12-21 14:37:21', 'admin', '2023-12-21 14:58:43', 1); -INSERT INTO `experiment_ins` VALUES (29, 343, 'workflow-9gb7r', 'argo', 'Running', NULL, 'admin', '2023-12-21 14:59:34', 'admin', '2023-12-21 15:00:10', 1); -INSERT INTO `experiment_ins` VALUES (30, 343, 'workflow-n8ffg', 'argo', 'Failed', NULL, 'admin', '2023-12-21 15:31:56', 'admin', '2023-12-21 15:46:49', 1); -INSERT INTO `experiment_ins` VALUES (31, 343, 'workflow-8tclj', 'argo', 'Failed', NULL, 'admin', '2023-12-21 15:49:08', '苏影城', '2023-12-21 15:56:57', 1); -INSERT INTO `experiment_ins` VALUES (32, 343, 'workflow-ng98b', 'argo', 'Failed', '{\"workflow-ng98b\":{\"id\":\"workflow-ng98b\",\"name\":\"workflow-ng98b\",\"displayName\":\"workflow-ng98b\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-ng98b\",\"phase\":\"Running\",\"startedAt\":\"2023-12-21T07:58:55Z\",\"finishedAt\":null,\"progress\":\"1/2\",\"children\":[\"workflow-ng98b-904177022\"]},\"workflow-ng98b-763759812\":{\"id\":\"workflow-ng98b-763759812\",\"name\":\"workflow-ng98b.train-091bb1e\",\"displayName\":\"train-091bb1e\",\"type\":\"Pod\",\"templateName\":\"train-091bb1e\",\"templateScope\":\"local/workflow-ng98b\",\"phase\":\"Running\",\"boundaryID\":\"workflow-ng98b\",\"startedAt\":\"2023-12-21T08:00:05Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-node-01\"},\"workflow-ng98b-904177022\":{\"id\":\"workflow-ng98b-904177022\",\"name\":\"workflow-ng98b.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-ng98b\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-ng98b\",\"startedAt\":\"2023-12-21T07:58:55Z\",\"finishedAt\":\"2023-12-21T07:59:55Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":108,\"memory\":1119},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-ng98b/workflow-ng98b-git-clone-010ee3-904177022/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-ng98b-763759812\"],\"hostNodeName\":\"k8s-master-01\"}}', '苏影城', '2023-12-21 15:58:53', '苏影城', '2023-12-21 16:22:40', 1); -INSERT INTO `experiment_ins` VALUES (33, 343, 'workflow-cf7zb', 'argo', 'Running', '{\"workflow-cf7zb\":{\"id\":\"workflow-cf7zb\",\"name\":\"workflow-cf7zb\",\"displayName\":\"workflow-cf7zb\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-cf7zb\",\"phase\":\"Running\",\"startedAt\":\"2023-12-21T08:26:43Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-cf7zb-965299672\"]},\"workflow-cf7zb-965299672\":{\"id\":\"workflow-cf7zb-965299672\",\"name\":\"workflow-cf7zb.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-cf7zb\",\"phase\":\"Running\",\"boundaryID\":\"workflow-cf7zb\",\"startedAt\":\"2023-12-21T08:26:43Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"}}', '苏影城', '2023-12-21 16:26:41', '苏影城', '2023-12-21 16:26:52', 1); -INSERT INTO `experiment_ins` VALUES (34, 343, 'workflow-99gxn', 'argo', 'Failed', '{\"workflow-99gxn\":{\"id\":\"workflow-99gxn\",\"name\":\"workflow-99gxn\",\"displayName\":\"workflow-99gxn\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-99gxn\",\"phase\":\"Running\",\"startedAt\":\"2023-12-22T01:06:42Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-99gxn-1702733061\"]},\"workflow-99gxn-1702733061\":{\"id\":\"workflow-99gxn-1702733061\",\"name\":\"workflow-99gxn.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-99gxn\",\"phase\":\"Running\",\"boundaryID\":\"workflow-99gxn\",\"startedAt\":\"2023-12-22T01:06:42Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"}}', 'admin', '2023-12-22 09:06:42', 'admin', '2023-12-22 09:16:38', 1); -INSERT INTO `experiment_ins` VALUES (35, 343, 'workflow-vkjff', 'argo', 'Failed', '{\"workflow-vkjff\":{\"id\":\"workflow-vkjff\",\"name\":\"workflow-vkjff\",\"displayName\":\"workflow-vkjff\",\"type\":\"DAG\",\"templateName\":\"ml-workflow\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Running\",\"startedAt\":\"2023-12-25T06:25:52Z\",\"finishedAt\":null,\"progress\":\"1/2\",\"children\":[\"workflow-vkjff-4159113811\"]},\"workflow-vkjff-1017537614\":{\"id\":\"workflow-vkjff-1017537614\",\"name\":\"workflow-vkjff.train-091bb1e(0)\",\"displayName\":\"train-091bb1e(0)\",\"type\":\"Pod\",\"templateName\":\"train-091bb1e\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:27:05Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"hostNodeName\":\"k8s-master-01\"},\"workflow-vkjff-2814105347\":{\"id\":\"workflow-vkjff-2814105347\",\"name\":\"workflow-vkjff.train-091bb1e\",\"displayName\":\"train-091bb1e\",\"type\":\"Retry\",\"templateName\":\"train-091bb1e\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Running\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:27:05Z\",\"finishedAt\":null,\"progress\":\"0/1\",\"children\":[\"workflow-vkjff-1017537614\"]},\"workflow-vkjff-4159113811\":{\"id\":\"workflow-vkjff-4159113811\",\"name\":\"workflow-vkjff.git-clone-010ee3\",\"displayName\":\"git-clone-010ee3\",\"type\":\"Retry\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:25:52Z\",\"finishedAt\":\"2023-12-25T06:27:05Z\",\"progress\":\"1/2\",\"resourcesDuration\":{\"cpu\":116,\"memory\":1183},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vkjff/workflow-vkjff-git-clone-010ee3-677292510/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vkjff-677292510\"]},\"workflow-vkjff-677292510\":{\"id\":\"workflow-vkjff-677292510\",\"name\":\"workflow-vkjff.git-clone-010ee3(0)\",\"displayName\":\"git-clone-010ee3(0)\",\"type\":\"Pod\",\"templateName\":\"git-clone-010ee3\",\"templateScope\":\"local/workflow-vkjff\",\"phase\":\"Succeeded\",\"boundaryID\":\"workflow-vkjff\",\"startedAt\":\"2023-12-25T06:25:52Z\",\"finishedAt\":\"2023-12-25T06:26:55Z\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":116,\"memory\":1183},\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"workflow-vkjff/workflow-vkjff-git-clone-010ee3-677292510/main.log\"}}],\"exitCode\":\"0\"},\"children\":[\"workflow-vkjff-2814105347\"],\"hostNodeName\":\"k8s-master-01\"}}', '苏影城', '2023-12-25 14:25:52', '苏影城', '2023-12-25 14:31:39', 0); - --- ---------------------------- --- Table structure for gen_table --- ---------------------------- -DROP TABLE IF EXISTS `gen_table`; -CREATE TABLE `gen_table` ( - `table_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', - `table_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '表名称', - `table_comment` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '表描述', - `sub_table_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关联子表的表名', - `sub_table_fk_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '子表关联的外键名', - `class_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '实体类名称', - `tpl_category` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'crud' COMMENT '使用的模板(crud单表操作 tree树表操作)', - `tpl_web_type` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '前端模板类型(element-ui模版 element-plus模版)', - `package_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生成包路径', - `module_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生成模块名', - `business_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生成业务名', - `function_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生成功能名', - `function_author` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生成功能作者', - `gen_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '生成代码方式(0zip压缩包 1自定义路径)', - `gen_path` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '/' COMMENT '生成路径(不填默认项目路径)', - `options` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '其它生成选项', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`table_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成业务表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of gen_table --- ---------------------------- - --- ---------------------------- --- Table structure for gen_table_column --- ---------------------------- -DROP TABLE IF EXISTS `gen_table_column`; -CREATE TABLE `gen_table_column` ( - `column_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', - `table_id` bigint(20) NULL DEFAULT NULL COMMENT '归属表编号', - `column_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '列名称', - `column_comment` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '列描述', - `column_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '列类型', - `java_type` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'JAVA类型', - `java_field` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'JAVA字段名', - `is_pk` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否主键(1是)', - `is_increment` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否自增(1是)', - `is_required` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否必填(1是)', - `is_insert` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否为插入字段(1是)', - `is_edit` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否编辑字段(1是)', - `is_list` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否列表字段(1是)', - `is_query` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否查询字段(1是)', - `query_type` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'EQ' COMMENT '查询方式(等于、不等于、大于、小于、范围)', - `html_type` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)', - `dict_type` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典类型', - `sort` int(11) NULL DEFAULT NULL COMMENT '排序', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`column_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成业务表字段' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of gen_table_column --- ---------------------------- - --- ---------------------------- --- Table structure for models --- ---------------------------- -DROP TABLE IF EXISTS `models`; -CREATE TABLE `models` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `model_type` int(11) NULL DEFAULT NULL, - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `state` int(4) NULL DEFAULT 1 COMMENT '0,失效 1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of models --- ---------------------------- -INSERT INTO `models` VALUES (1, 'start_workflow.json', NULL, NULL, 'models/苏影城/start_workflow.json', NULL, '苏影城', '2023-12-26 16:10:39', '苏影城', '2023-12-26 16:10:39', 0); -INSERT INTO `models` VALUES (2, 'package-lock.json', 'v2.0', '计算机视觉手写体识别mnist数据集 二次修改', 'models/苏影城/package-lock.json-20231227-135255/workspace.postman_globals.json', NULL, '苏影城', '2023-12-28 13:58:49', 'admin', '2023-12-28 13:58:49', 1); -INSERT INTO `models` VALUES (3, 'mnist', 'v1.0', '计算机视觉手写体识别模型修改版', NULL, 1, 'admin', '2023-12-28 14:16:34', 'admin', '2023-12-28 14:16:34', 1); -INSERT INTO `models` VALUES (4, 'mnist', 'v1.0', '计算机视觉手写体识别模型修改版', 'models/admin/mnist-20231228-141659/zh_ar_raw_2400.zip', 1, 'admin', '2023-12-28 14:16:59', 'admin', '2023-12-28 14:29:33', 0); -INSERT INTO `models` VALUES (5, 'mnist', 'v1.0', '计算机视觉手写体识模型', 'models/admin/mnist-20231228-150912/v1.0/ssd_80C_500E.ckpt', 1, 'admin', '2023-12-28 15:09:12', 'admin', '2024-01-02 15:47:12', 1); -INSERT INTO `models` VALUES (6, 'mnist', 'v1.0', '计算机视觉手写体识模型2-24', NULL, 1, 'admin', '2024-01-02 15:46:25', 'admin', '2024-01-02 15:46:25', 1); - --- ---------------------------- --- Table structure for models_version --- ---------------------------- -DROP TABLE IF EXISTS `models_version`; -CREATE TABLE `models_version` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '主键', - `models_id` int(4) NOT NULL, - `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '版本', - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '模型存储地址', - `file_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名', - `file_size` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', - `status` int(4) NULL DEFAULT NULL COMMENT '状态', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` int(4) NULL DEFAULT NULL COMMENT '0失效,1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of models_version --- ---------------------------- - --- ---------------------------- --- Table structure for sys_config --- ---------------------------- -DROP TABLE IF EXISTS `sys_config`; -CREATE TABLE `sys_config` ( - `config_id` int(5) NOT NULL AUTO_INCREMENT COMMENT '参数主键', - `config_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '参数名称', - `config_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '参数键名', - `config_value` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '参数键值', - `config_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'N' COMMENT '系统内置(Y是 N否)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`config_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '参数配置表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_config --- ---------------------------- -INSERT INTO `sys_config` VALUES (1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2024-01-04 10:59:56', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow'); -INSERT INTO `sys_config` VALUES (2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2024-01-04 10:59:56', '', NULL, '初始化密码 123456'); -INSERT INTO `sys_config` VALUES (3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', '2024-01-04 10:59:56', '', NULL, '深色主题theme-dark,浅色主题theme-light'); -INSERT INTO `sys_config` VALUES (4, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'admin', '2024-01-04 10:59:56', '', NULL, '是否开启注册用户功能(true开启,false关闭)'); -INSERT INTO `sys_config` VALUES (5, '用户登录-黑名单列表', 'sys.login.blackIPList', '', 'Y', 'admin', '2024-01-04 10:59:56', '', NULL, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)'); - --- ---------------------------- --- Table structure for sys_dept --- ---------------------------- -DROP TABLE IF EXISTS `sys_dept`; -CREATE TABLE `sys_dept` ( - `dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id', - `parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父部门id', - `ancestors` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '祖级列表', - `dept_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称', - `order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序', - `leader` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '负责人', - `phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系电话', - `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '部门状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`dept_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 200 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dept --- ---------------------------- -INSERT INTO `sys_dept` VALUES (100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); -INSERT INTO `sys_dept` VALUES (109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL); - --- ---------------------------- --- Table structure for sys_dict_data --- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_data`; -CREATE TABLE `sys_dict_data` ( - `dict_code` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典编码', - `dict_sort` int(4) NULL DEFAULT 0 COMMENT '字典排序', - `dict_label` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典标签', - `dict_value` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典键值', - `dict_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典类型', - `css_class` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '样式属性(其他样式扩展)', - `list_class` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表格回显样式', - `is_default` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`dict_code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dict_data --- ---------------------------- -INSERT INTO `sys_dict_data` VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '性别男'); -INSERT INTO `sys_dict_data` VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '性别女'); -INSERT INTO `sys_dict_data` VALUES (3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '性别未知'); -INSERT INTO `sys_dict_data` VALUES (4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '显示菜单'); -INSERT INTO `sys_dict_data` VALUES (5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '隐藏菜单'); -INSERT INTO `sys_dict_data` VALUES (6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '停用状态'); -INSERT INTO `sys_dict_data` VALUES (8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '停用状态'); -INSERT INTO `sys_dict_data` VALUES (10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '默认分组'); -INSERT INTO `sys_dict_data` VALUES (11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '系统分组'); -INSERT INTO `sys_dict_data` VALUES (12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '系统默认是'); -INSERT INTO `sys_dict_data` VALUES (13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '系统默认否'); -INSERT INTO `sys_dict_data` VALUES (14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '通知'); -INSERT INTO `sys_dict_data` VALUES (15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '公告'); -INSERT INTO `sys_dict_data` VALUES (16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '关闭状态'); -INSERT INTO `sys_dict_data` VALUES (18, 99, '其他', '0', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '其他操作'); -INSERT INTO `sys_dict_data` VALUES (19, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '新增操作'); -INSERT INTO `sys_dict_data` VALUES (20, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '修改操作'); -INSERT INTO `sys_dict_data` VALUES (21, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '删除操作'); -INSERT INTO `sys_dict_data` VALUES (22, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '授权操作'); -INSERT INTO `sys_dict_data` VALUES (23, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '导出操作'); -INSERT INTO `sys_dict_data` VALUES (24, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '导入操作'); -INSERT INTO `sys_dict_data` VALUES (25, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '强退操作'); -INSERT INTO `sys_dict_data` VALUES (26, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '生成操作'); -INSERT INTO `sys_dict_data` VALUES (27, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '清空操作'); -INSERT INTO `sys_dict_data` VALUES (28, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (29, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '停用状态'); - --- ---------------------------- --- Table structure for sys_dict_type --- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_type`; -CREATE TABLE `sys_dict_type` ( - `dict_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典主键', - `dict_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典名称', - `dict_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典类型', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`dict_id`) USING BTREE, - UNIQUE INDEX `dict_type`(`dict_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dict_type --- ---------------------------- -INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '用户性别列表'); -INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '菜单状态列表'); -INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '系统开关列表'); -INSERT INTO `sys_dict_type` VALUES (4, '任务状态', 'sys_job_status', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '任务状态列表'); -INSERT INTO `sys_dict_type` VALUES (5, '任务分组', 'sys_job_group', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '任务分组列表'); -INSERT INTO `sys_dict_type` VALUES (6, '系统是否', 'sys_yes_no', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '系统是否列表'); -INSERT INTO `sys_dict_type` VALUES (7, '通知类型', 'sys_notice_type', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '通知类型列表'); -INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '通知状态列表'); -INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '操作类型列表'); -INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '登录状态列表'); - --- ---------------------------- --- Table structure for sys_job --- ---------------------------- -DROP TABLE IF EXISTS `sys_job`; -CREATE TABLE `sys_job` ( - `job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务ID', - `job_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '任务名称', - `job_group` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'DEFAULT' COMMENT '任务组名', - `invoke_target` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '调用目标字符串', - `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'cron执行表达式', - `misfire_policy` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '3' COMMENT '计划执行错误策略(1立即执行 2执行一次 3放弃执行)', - `concurrent` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '是否并发执行(0允许 1禁止)', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1暂停)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注信息', - PRIMARY KEY (`job_id`, `job_name`, `job_group`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务调度表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_job --- ---------------------------- -INSERT INTO `sys_job` VALUES (1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_job` VALUES (2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 * * * * ?', '3', '1', '1', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_job` VALUES (3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)', '0/20 * * * * ?', '3', '1', '1', 'admin', '2024-01-04 10:59:56', '', NULL, ''); - --- ---------------------------- --- Table structure for sys_job_log --- ---------------------------- -DROP TABLE IF EXISTS `sys_job_log`; -CREATE TABLE `sys_job_log` ( - `job_log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志ID', - `job_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务名称', - `job_group` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务组名', - `invoke_target` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '调用目标字符串', - `job_message` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志信息', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '执行状态(0正常 1失败)', - `exception_info` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '异常信息', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`job_log_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务调度日志表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_job_log --- ---------------------------- - --- ---------------------------- --- Table structure for sys_logininfor --- ---------------------------- -DROP TABLE IF EXISTS `sys_logininfor`; -CREATE TABLE `sys_logininfor` ( - `info_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '访问ID', - `user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户账号', - `ipaddr` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '登录IP地址', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '登录状态(0成功 1失败)', - `msg` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '提示信息', - `access_time` datetime NULL DEFAULT NULL COMMENT '访问时间', - PRIMARY KEY (`info_id`) USING BTREE, - INDEX `idx_sys_logininfor_s`(`status`) USING BTREE, - INDEX `idx_sys_logininfor_lt`(`access_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_logininfor --- ---------------------------- - --- ---------------------------- --- Table structure for sys_menu --- ---------------------------- -DROP TABLE IF EXISTS `sys_menu`; -CREATE TABLE `sys_menu` ( - `menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', - `menu_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单名称', - `parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父菜单ID', - `order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序', - `path` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '路由地址', - `component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件路径', - `query` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路由参数', - `is_frame` int(1) NULL DEFAULT 1 COMMENT '是否为外链(0是 1否)', - `is_cache` int(1) NULL DEFAULT 0 COMMENT '是否缓存(0缓存 1不缓存)', - `menu_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)', - `visible` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0正常 1停用)', - `perms` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限标识', - `icon` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '#' COMMENT '菜单图标', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注', - PRIMARY KEY (`menu_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2001 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_menu --- ---------------------------- -INSERT INTO `sys_menu` VALUES (1, '系统管理', 0, 1, 'system', NULL, '', 1, 0, 'M', '0', '0', '', 'system', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:29:22', '系统管理目录'); -INSERT INTO `sys_menu` VALUES (2, '系统监控', 0, 2, 'monitor', NULL, '', 1, 0, 'M', '1', '0', '', 'monitor', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:14:19', '系统监控目录'); -INSERT INTO `sys_menu` VALUES (3, '系统工具', 0, 3, 'tool', NULL, '', 1, 0, 'M', '1', '0', '', 'tool', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:14:13', '系统工具目录'); -INSERT INTO `sys_menu` VALUES (4, '若依官网', 0, 4, 'http://ruoyi.vip', NULL, '', 0, 0, 'M', '1', '0', '', 'guide', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:14:08', '若依官网地址'); -INSERT INTO `sys_menu` VALUES (100, '用户管理', 1, 1, 'user', 'system/user/index', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user', 'admin', '2024-01-04 10:59:56', '', NULL, '用户管理菜单'); -INSERT INTO `sys_menu` VALUES (101, '角色管理', 1, 2, 'role', 'system/role/index', '', 1, 0, 'C', '0', '0', 'system:role:list', 'peoples', 'admin', '2024-01-04 10:59:56', '', NULL, '角色管理菜单'); -INSERT INTO `sys_menu` VALUES (102, '菜单管理', 1, 3, 'menu', 'system/menu/index', '', 1, 0, 'C', '0', '0', 'system:menu:list', 'tree-table', 'admin', '2024-01-04 10:59:56', '', NULL, '菜单管理菜单'); -INSERT INTO `sys_menu` VALUES (103, '部门管理', 1, 4, 'dept', 'system/dept/index', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'tree', 'admin', '2024-01-04 10:59:56', '', NULL, '部门管理菜单'); -INSERT INTO `sys_menu` VALUES (104, '岗位管理', 1, 5, 'post', 'system/post/index', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post', 'admin', '2024-01-04 10:59:56', '', NULL, '岗位管理菜单'); -INSERT INTO `sys_menu` VALUES (105, '字典管理', 1, 6, 'dict', 'system/dict/index', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'dict', 'admin', '2024-01-04 10:59:56', '', NULL, '字典管理菜单'); -INSERT INTO `sys_menu` VALUES (106, '参数设置', 1, 7, 'config', 'system/config/index', '', 1, 0, 'C', '1', '0', 'system:config:list', 'edit', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:28:29', '参数设置菜单'); -INSERT INTO `sys_menu` VALUES (107, '通知公告', 1, 8, 'notice', 'system/notice/index', '', 1, 0, 'C', '1', '0', 'system:notice:list', 'message', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:28:24', '通知公告菜单'); -INSERT INTO `sys_menu` VALUES (108, '日志管理', 1, 9, 'log', '', '', 1, 0, 'M', '1', '0', '', 'log', 'admin', '2024-01-04 10:59:56', 'admin', '2024-01-04 15:28:19', '日志管理菜单'); -INSERT INTO `sys_menu` VALUES (109, '在线用户', 2, 1, 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 'admin', '2024-01-04 10:59:56', '', NULL, '在线用户菜单'); -INSERT INTO `sys_menu` VALUES (110, '定时任务', 2, 2, 'job', 'monitor/job/index', '', 1, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', '2024-01-04 10:59:56', '', NULL, '定时任务菜单'); -INSERT INTO `sys_menu` VALUES (111, 'Sentinel控制台', 2, 3, 'http://localhost:8718', '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 'admin', '2024-01-04 10:59:56', '', NULL, '流量控制菜单'); -INSERT INTO `sys_menu` VALUES (112, 'Nacos控制台', 2, 4, 'http://localhost:8848/nacos', '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list', 'nacos', 'admin', '2024-01-04 10:59:56', '', NULL, '服务治理菜单'); -INSERT INTO `sys_menu` VALUES (113, 'Admin控制台', 2, 5, 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', '2024-01-04 10:59:56', '', NULL, '服务监控菜单'); -INSERT INTO `sys_menu` VALUES (114, '表单构建', 3, 1, 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', '2024-01-04 10:59:56', '', NULL, '表单构建菜单'); -INSERT INTO `sys_menu` VALUES (115, '代码生成', 3, 2, 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', '2024-01-04 10:59:56', '', NULL, '代码生成菜单'); -INSERT INTO `sys_menu` VALUES (116, '系统接口', 3, 3, 'http://localhost:8080/swagger-ui/index.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', '2024-01-04 10:59:56', '', NULL, '系统接口菜单'); -INSERT INTO `sys_menu` VALUES (500, '操作日志', 108, 1, 'operlog', 'system/operlog/index', '', 1, 0, 'C', '0', '0', 'system:operlog:list', 'form', 'admin', '2024-01-04 10:59:56', '', NULL, '操作日志菜单'); -INSERT INTO `sys_menu` VALUES (501, '登录日志', 108, 2, 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor', 'admin', '2024-01-04 10:59:56', '', NULL, '登录日志菜单'); -INSERT INTO `sys_menu` VALUES (1000, '用户查询', 100, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1001, '用户新增', 100, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1002, '用户修改', 100, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1003, '用户删除', 100, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1004, '用户导出', 100, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1005, '用户导入', 100, 6, '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1006, '重置密码', 100, 7, '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1007, '角色查询', 101, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1008, '角色新增', 101, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1009, '角色修改', 101, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1010, '角色删除', 101, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1011, '角色导出', 101, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1012, '菜单查询', 102, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1013, '菜单新增', 102, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1014, '菜单修改', 102, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1015, '菜单删除', 102, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1016, '部门查询', 103, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1017, '部门新增', 103, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1018, '部门修改', 103, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1019, '部门删除', 103, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1020, '岗位查询', 104, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1021, '岗位新增', 104, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1022, '岗位修改', 104, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1023, '岗位删除', 104, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1024, '岗位导出', 104, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1025, '字典查询', 105, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1026, '字典新增', 105, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1027, '字典修改', 105, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1028, '字典删除', 105, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1029, '字典导出', 105, 5, '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1030, '参数查询', 106, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1031, '参数新增', 106, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1032, '参数修改', 106, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1033, '参数删除', 106, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1034, '参数导出', 106, 5, '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1035, '公告查询', 107, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1036, '公告新增', 107, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1037, '公告修改', 107, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1038, '公告删除', 107, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1039, '操作查询', 500, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1040, '操作删除', 500, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1041, '日志导出', 500, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1042, '登录查询', 501, 1, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1043, '登录删除', 501, 2, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1044, '日志导出', 501, 3, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1045, '账户解锁', 501, 4, '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:unlock', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1046, '在线查询', 109, 1, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1047, '批量强退', 109, 2, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1048, '单条强退', 109, 3, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1049, '任务查询', 110, 1, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1050, '任务新增', 110, 2, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1051, '任务修改', 110, 3, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1052, '任务删除', 110, 4, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1053, '状态修改', 110, 5, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1054, '任务导出', 110, 6, '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1055, '生成查询', 115, 1, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1056, '生成修改', 115, 2, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1057, '生成删除', 115, 3, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1058, '导入代码', 115, 2, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1059, '预览代码', 115, 4, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1060, '生成代码', 115, 5, '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (2000, '流水线', 0, 3, 'pipeline', NULL, NULL, 1, 0, 'M', '0', '0', NULL, '#', 'admin', '2024-01-04 11:06:40', '', NULL, ''); - --- ---------------------------- --- Table structure for sys_notice --- ---------------------------- -DROP TABLE IF EXISTS `sys_notice`; -CREATE TABLE `sys_notice` ( - `notice_id` int(4) NOT NULL AUTO_INCREMENT COMMENT '公告ID', - `notice_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公告标题', - `notice_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公告类型(1通知 2公告)', - `notice_content` longblob NULL COMMENT '公告内容', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`notice_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知公告表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_notice --- ---------------------------- -INSERT INTO `sys_notice` VALUES (1, '温馨提醒:2018-07-01 若依新版本发布啦', '2', 0xE696B0E78988E69CACE58685E5AEB9, '0', 'admin', '2024-01-04 10:59:56', '', NULL, '管理员'); -INSERT INTO `sys_notice` VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '1', 0xE7BBB4E68AA4E58685E5AEB9, '0', 'admin', '2024-01-04 10:59:56', '', NULL, '管理员'); - --- ---------------------------- --- Table structure for sys_oper_log --- ---------------------------- -DROP TABLE IF EXISTS `sys_oper_log`; -CREATE TABLE `sys_oper_log` ( - `oper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志主键', - `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '模块标题', - `business_type` int(2) NULL DEFAULT 0 COMMENT '业务类型(0其它 1新增 2修改 3删除)', - `method` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '方法名称', - `request_method` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求方式', - `operator_type` int(1) NULL DEFAULT 0 COMMENT '操作类别(0其它 1后台用户 2手机端用户)', - `oper_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '操作人员', - `dept_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称', - `oper_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求URL', - `oper_ip` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '主机地址', - `oper_location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '操作地点', - `oper_param` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求参数', - `json_result` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '返回参数', - `status` int(1) NULL DEFAULT 0 COMMENT '操作状态(0正常 1异常)', - `error_msg` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '错误消息', - `oper_time` datetime NULL DEFAULT NULL COMMENT '操作时间', - `cost_time` bigint(20) NULL DEFAULT 0 COMMENT '消耗时间', - PRIMARY KEY (`oper_id`) USING BTREE, - INDEX `idx_sys_oper_log_bt`(`business_type`) USING BTREE, - INDEX `idx_sys_oper_log_s`(`status`) USING BTREE, - INDEX `idx_sys_oper_log_ot`(`oper_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 111 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_oper_log --- ---------------------------- -INSERT INTO `sys_oper_log` VALUES (100, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"system\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":1,\"menuName\":\"系统管理\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":0,\"path\":\"system\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 11:00:55', 2); -INSERT INTO `sys_oper_log` VALUES (101, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"system\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":1,\"menuName\":\"系统管理\",\"menuType\":\"M\",\"orderNum\":2,\"params\":{},\"parentId\":0,\"path\":\"system\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 11:02:56', 3); -INSERT INTO `sys_oper_log` VALUES (102, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"system\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":1,\"menuName\":\"系统管理\",\"menuType\":\"M\",\"orderNum\":3,\"params\":{},\"parentId\":0,\"path\":\"system\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 11:03:07', 2); -INSERT INTO `sys_oper_log` VALUES (103, '菜单管理', 1, 'com.ruoyi.system.controller.SysMenuController.add()', 'POST', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"createBy\":\"admin\",\"menuName\":\"流水线\",\"menuType\":\"M\",\"orderNum\":3,\"params\":{},\"parentId\":0,\"path\":\"pipeline\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 11:06:40', 3); -INSERT INTO `sys_oper_log` VALUES (104, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"guide\",\"isCache\":\"0\",\"isFrame\":\"0\",\"menuId\":4,\"menuName\":\"若依官网\",\"menuType\":\"M\",\"orderNum\":4,\"params\":{},\"parentId\":0,\"path\":\"http://ruoyi.vip\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:14:08', 4); -INSERT INTO `sys_oper_log` VALUES (105, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"tool\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3,\"menuName\":\"系统工具\",\"menuType\":\"M\",\"orderNum\":3,\"params\":{},\"parentId\":0,\"path\":\"tool\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:14:13', 2); -INSERT INTO `sys_oper_log` VALUES (106, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"monitor\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2,\"menuName\":\"系统监控\",\"menuType\":\"M\",\"orderNum\":2,\"params\":{},\"parentId\":0,\"path\":\"monitor\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:14:19', 2); -INSERT INTO `sys_oper_log` VALUES (107, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"component\":\"\",\"icon\":\"log\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":108,\"menuName\":\"日志管理\",\"menuType\":\"M\",\"orderNum\":9,\"params\":{},\"parentId\":1,\"path\":\"log\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:28:19', 2); -INSERT INTO `sys_oper_log` VALUES (108, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"component\":\"system/notice/index\",\"icon\":\"message\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":107,\"menuName\":\"通知公告\",\"menuType\":\"C\",\"orderNum\":8,\"params\":{},\"parentId\":1,\"path\":\"notice\",\"perms\":\"system:notice:list\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:28:24', 2); -INSERT INTO `sys_oper_log` VALUES (109, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"component\":\"system/config/index\",\"icon\":\"edit\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":106,\"menuName\":\"参数设置\",\"menuType\":\"C\",\"orderNum\":7,\"params\":{},\"parentId\":1,\"path\":\"config\",\"perms\":\"system:config:list\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:28:29', 2); -INSERT INTO `sys_oper_log` VALUES (110, '菜单管理', 2, 'com.ruoyi.system.controller.SysMenuController.edit()', 'PUT', 1, 'admin', NULL, '/menu', '172.20.32.53', '', '{\"children\":[],\"icon\":\"system\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":1,\"menuName\":\"系统管理\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":0,\"path\":\"system\",\"perms\":\"\",\"query\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-01-04 15:29:22', 2); - --- ---------------------------- --- Table structure for sys_post --- ---------------------------- -DROP TABLE IF EXISTS `sys_post`; -CREATE TABLE `sys_post` ( - `post_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '岗位ID', - `post_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '岗位编码', - `post_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '岗位名称', - `post_sort` int(4) NOT NULL COMMENT '显示顺序', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`post_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '岗位信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_post --- ---------------------------- -INSERT INTO `sys_post` VALUES (1, 'ceo', '董事长', 1, '0', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_post` VALUES (2, 'se', '项目经理', 2, '0', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_post` VALUES (3, 'hr', '人力资源', 3, '0', 'admin', '2024-01-04 10:59:56', '', NULL, ''); -INSERT INTO `sys_post` VALUES (4, 'user', '普通员工', 4, '0', 'admin', '2024-01-04 10:59:56', '', NULL, ''); - --- ---------------------------- --- Table structure for sys_role --- ---------------------------- -DROP TABLE IF EXISTS `sys_role`; -CREATE TABLE `sys_role` ( - `role_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID', - `role_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称', - `role_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色权限字符串', - `role_sort` int(4) NOT NULL COMMENT '显示顺序', - `data_scope` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', - `menu_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '菜单树选择项是否关联显示', - `dept_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '部门树选择项是否关联显示', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role --- ---------------------------- -INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', 1, 1, '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '超级管理员'); -INSERT INTO `sys_role` VALUES (2, '普通角色', 'common', 2, '2', 1, 1, '0', '0', 'admin', '2024-01-04 10:59:56', '', NULL, '普通角色'); - --- ---------------------------- --- Table structure for sys_role_dept --- ---------------------------- -DROP TABLE IF EXISTS `sys_role_dept`; -CREATE TABLE `sys_role_dept` ( - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - `dept_id` bigint(20) NOT NULL COMMENT '部门ID', - PRIMARY KEY (`role_id`, `dept_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和部门关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role_dept --- ---------------------------- -INSERT INTO `sys_role_dept` VALUES (2, 100); -INSERT INTO `sys_role_dept` VALUES (2, 101); -INSERT INTO `sys_role_dept` VALUES (2, 105); - --- ---------------------------- --- Table structure for sys_role_menu --- ---------------------------- -DROP TABLE IF EXISTS `sys_role_menu`; -CREATE TABLE `sys_role_menu` ( - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - `menu_id` bigint(20) NOT NULL COMMENT '菜单ID', - PRIMARY KEY (`role_id`, `menu_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role_menu --- ---------------------------- -INSERT INTO `sys_role_menu` VALUES (2, 1); -INSERT INTO `sys_role_menu` VALUES (2, 2); -INSERT INTO `sys_role_menu` VALUES (2, 3); -INSERT INTO `sys_role_menu` VALUES (2, 4); -INSERT INTO `sys_role_menu` VALUES (2, 100); -INSERT INTO `sys_role_menu` VALUES (2, 101); -INSERT INTO `sys_role_menu` VALUES (2, 102); -INSERT INTO `sys_role_menu` VALUES (2, 103); -INSERT INTO `sys_role_menu` VALUES (2, 104); -INSERT INTO `sys_role_menu` VALUES (2, 105); -INSERT INTO `sys_role_menu` VALUES (2, 106); -INSERT INTO `sys_role_menu` VALUES (2, 107); -INSERT INTO `sys_role_menu` VALUES (2, 108); -INSERT INTO `sys_role_menu` VALUES (2, 109); -INSERT INTO `sys_role_menu` VALUES (2, 110); -INSERT INTO `sys_role_menu` VALUES (2, 111); -INSERT INTO `sys_role_menu` VALUES (2, 112); -INSERT INTO `sys_role_menu` VALUES (2, 113); -INSERT INTO `sys_role_menu` VALUES (2, 114); -INSERT INTO `sys_role_menu` VALUES (2, 115); -INSERT INTO `sys_role_menu` VALUES (2, 116); -INSERT INTO `sys_role_menu` VALUES (2, 500); -INSERT INTO `sys_role_menu` VALUES (2, 501); -INSERT INTO `sys_role_menu` VALUES (2, 1000); -INSERT INTO `sys_role_menu` VALUES (2, 1001); -INSERT INTO `sys_role_menu` VALUES (2, 1002); -INSERT INTO `sys_role_menu` VALUES (2, 1003); -INSERT INTO `sys_role_menu` VALUES (2, 1004); -INSERT INTO `sys_role_menu` VALUES (2, 1005); -INSERT INTO `sys_role_menu` VALUES (2, 1006); -INSERT INTO `sys_role_menu` VALUES (2, 1007); -INSERT INTO `sys_role_menu` VALUES (2, 1008); -INSERT INTO `sys_role_menu` VALUES (2, 1009); -INSERT INTO `sys_role_menu` VALUES (2, 1010); -INSERT INTO `sys_role_menu` VALUES (2, 1011); -INSERT INTO `sys_role_menu` VALUES (2, 1012); -INSERT INTO `sys_role_menu` VALUES (2, 1013); -INSERT INTO `sys_role_menu` VALUES (2, 1014); -INSERT INTO `sys_role_menu` VALUES (2, 1015); -INSERT INTO `sys_role_menu` VALUES (2, 1016); -INSERT INTO `sys_role_menu` VALUES (2, 1017); -INSERT INTO `sys_role_menu` VALUES (2, 1018); -INSERT INTO `sys_role_menu` VALUES (2, 1019); -INSERT INTO `sys_role_menu` VALUES (2, 1020); -INSERT INTO `sys_role_menu` VALUES (2, 1021); -INSERT INTO `sys_role_menu` VALUES (2, 1022); -INSERT INTO `sys_role_menu` VALUES (2, 1023); -INSERT INTO `sys_role_menu` VALUES (2, 1024); -INSERT INTO `sys_role_menu` VALUES (2, 1025); -INSERT INTO `sys_role_menu` VALUES (2, 1026); -INSERT INTO `sys_role_menu` VALUES (2, 1027); -INSERT INTO `sys_role_menu` VALUES (2, 1028); -INSERT INTO `sys_role_menu` VALUES (2, 1029); -INSERT INTO `sys_role_menu` VALUES (2, 1030); -INSERT INTO `sys_role_menu` VALUES (2, 1031); -INSERT INTO `sys_role_menu` VALUES (2, 1032); -INSERT INTO `sys_role_menu` VALUES (2, 1033); -INSERT INTO `sys_role_menu` VALUES (2, 1034); -INSERT INTO `sys_role_menu` VALUES (2, 1035); -INSERT INTO `sys_role_menu` VALUES (2, 1036); -INSERT INTO `sys_role_menu` VALUES (2, 1037); -INSERT INTO `sys_role_menu` VALUES (2, 1038); -INSERT INTO `sys_role_menu` VALUES (2, 1039); -INSERT INTO `sys_role_menu` VALUES (2, 1040); -INSERT INTO `sys_role_menu` VALUES (2, 1041); -INSERT INTO `sys_role_menu` VALUES (2, 1042); -INSERT INTO `sys_role_menu` VALUES (2, 1043); -INSERT INTO `sys_role_menu` VALUES (2, 1044); -INSERT INTO `sys_role_menu` VALUES (2, 1045); -INSERT INTO `sys_role_menu` VALUES (2, 1046); -INSERT INTO `sys_role_menu` VALUES (2, 1047); -INSERT INTO `sys_role_menu` VALUES (2, 1048); -INSERT INTO `sys_role_menu` VALUES (2, 1049); -INSERT INTO `sys_role_menu` VALUES (2, 1050); -INSERT INTO `sys_role_menu` VALUES (2, 1051); -INSERT INTO `sys_role_menu` VALUES (2, 1052); -INSERT INTO `sys_role_menu` VALUES (2, 1053); -INSERT INTO `sys_role_menu` VALUES (2, 1054); -INSERT INTO `sys_role_menu` VALUES (2, 1055); -INSERT INTO `sys_role_menu` VALUES (2, 1056); -INSERT INTO `sys_role_menu` VALUES (2, 1057); -INSERT INTO `sys_role_menu` VALUES (2, 1058); -INSERT INTO `sys_role_menu` VALUES (2, 1059); -INSERT INTO `sys_role_menu` VALUES (2, 1060); - --- ---------------------------- --- Table structure for sys_user --- ---------------------------- -DROP TABLE IF EXISTS `sys_user`; -CREATE TABLE `sys_user` ( - `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID', - `dept_id` bigint(20) NULL DEFAULT NULL COMMENT '部门ID', - `user_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户账号', - `nick_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户昵称', - `user_type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '00' COMMENT '用户类型(00系统用户)', - `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户邮箱', - `phonenumber` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '手机号码', - `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', - `avatar` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '头像地址', - `password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '密码', - `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `login_ip` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '最后登录IP', - `login_date` datetime NULL DEFAULT NULL COMMENT '最后登录时间', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user --- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-01-04 10:59:56', 'admin', '2024-01-04 10:59:56', '', NULL, '管理员'); -INSERT INTO `sys_user` VALUES (2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2024-01-04 10:59:56', 'admin', '2024-01-04 10:59:56', '', NULL, '测试员'); - --- ---------------------------- --- Table structure for sys_user_post --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_post`; -CREATE TABLE `sys_user_post` ( - `user_id` bigint(20) NOT NULL COMMENT '用户ID', - `post_id` bigint(20) NOT NULL COMMENT '岗位ID', - PRIMARY KEY (`user_id`, `post_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户与岗位关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_post --- ---------------------------- -INSERT INTO `sys_user_post` VALUES (1, 1); -INSERT INTO `sys_user_post` VALUES (2, 2); - --- ---------------------------- --- Table structure for sys_user_role --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_role`; -CREATE TABLE `sys_user_role` ( - `user_id` bigint(20) NOT NULL COMMENT '用户ID', - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - PRIMARY KEY (`user_id`, `role_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_role --- ---------------------------- -INSERT INTO `sys_user_role` VALUES (1, 1); -INSERT INTO `sys_user_role` VALUES (2, 2); - --- ---------------------------- --- Table structure for workflow --- ---------------------------- -DROP TABLE IF EXISTS `workflow`; -CREATE TABLE `workflow` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工作流名称', - `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'DAG工作流描述', - `dag` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'DAG图', - `create_by` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `state` tinyint(10) NULL DEFAULT 1 COMMENT '0,失效 1生效', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'DAG workflow' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of workflow --- ---------------------------- -INSERT INTO `workflow` VALUES (1, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', 'admin', '2023-10-31 10:19:58', 'admin', '2023-10-31 10:20:04', 0); -INSERT INTO `workflow` VALUES (2, 'xxx', 'TEST', '{}', NULL, NULL, NULL, NULL, 0); -INSERT INTO `workflow` VALUES (3, 'xxx', 'TEST', '{}', NULL, NULL, NULL, NULL, 0); -INSERT INTO `workflow` VALUES (20, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, NULL, NULL, NULL, NULL); -INSERT INTO `workflow` VALUES (21, 'test', 'test pytorch', '{\r\n \"pens\": [\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"git-clone\",\r\n \"categoryId\": 2,\r\n \"categoryName\": \"代码clone组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"代码拉取\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"代码克隆\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"git-clone-010ee3\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\":[\r\n {\r\n \"key\": \"ssh_key\",\r\n \"name\": \"ssh私钥\",\r\n \"value\": \"fdasfasfadsfadsf\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"git_repo_addr\",\r\n \"name\": \"代码库地址\",\r\n \"value\": \"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"git_branch\",\r\n \"name\": \"代码库分支/tag\",\r\n \"value\": \"master\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"clone_depth\",\r\n \"name\": \"克隆深度\",\r\n \"value\": \"1\",\r\n \"type\": \"int\",\r\n \"require\": true,\r\n \"defaultValue\": \"1\"\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"code_path\",\r\n \"name\": \"代码路径\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/code\"\r\n }],\r\n \"id\": \"git-clone-010ee3\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"647b44d5\",\r\n \"lineAnchor\": \"2f966d31\",\r\n \"anchor\": \"1\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"train\",\r\n \"categoryId\": 3,\r\n \"categoryName\": \"训练组件\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"RUNNING_SET\",\r\n \"baseInfo\": {\r\n \"inParameters\":[\r\n {\r\n \"key\": \"task_name\",\r\n \"name\": \"任务名称\",\r\n \"value\": \"pytorch训练\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"task_unique_id\",\r\n \"name\": \"任务id\",\r\n \"value\": \"train-091bb1e\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }]\r\n },\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"train.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"somuns/pretrainmodel/mnist\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 1, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"model_path\",\r\n \"name\": \"模型输出路径\",\r\n \"value\": \"model_path\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/model\"\r\n }],\r\n \"id\": \"train-091bb1e\",\r\n \"connectedLines\": [{\r\n \"lineId\": \"7025d72a\",\r\n \"lineAnchor\": \"7982b5a4\",\r\n \"anchor\": \"2\"\r\n }]\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"inference\",\r\n \"categoryId\": 4,\r\n \"categoryName\": \"模型推理测试\",\r\n \"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\r\n \"text\": \"Actor\",\r\n \"inParameters\": [\r\n {\r\n \"key\": \"compute_resource\",\r\n \"name\": \"计算资源\",\r\n \"value\": \"CPU/GPU\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"image_name\",\r\n \"name\": \"镜像名称\",\r\n \"value\": \"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"code_path\",\r\n \"name\": \"代码目录\",\r\n \"value\": \"{{git-clone-010ee3.code_path}}\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"start_file\",\r\n \"name\": \"启动文件\",\r\n \"value\": \"inference.py\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"model_name\",\r\n \"name\": \"模型名称\",\r\n \"value\": \"{{train-091bb1e.model_path}}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n },\r\n {\r\n \"key\": \"dataset_name\",\r\n \"name\": \"数据集名称\",\r\n \"value\": \"somuns/dataset/mnist\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"resource_request\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"GPU: 0, CPU: 2, 内存: 2GB\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n },\r\n {\r\n \"key\": \"run_params\",\r\n \"name\": \"资源规格\",\r\n \"value\": \"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\r\n \"type\": \"str\",\r\n \"require\": false\r\n }\r\n ],\r\n \"outParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true,\r\n \"mountPath\": \"/result\"\r\n }],\r\n \"id\": \"inference-37f712\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"647b44d5\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"git-clone-010ee3\",\r\n \"target\": \"train-091bb1e\"\r\n },\r\n {\r\n \"componentId\": 1,\r\n \"componentName\": \"workflow_line\",\r\n \"categoryId\": 1,\r\n \"categoryName\": \"线\",\r\n \"id\": \"7025d72a\",\r\n \"name\": \"line\",\r\n \"lineName\": \"curve\",\r\n \"type\": 1,\r\n \"source\": \"train-091bb1e\",\r\n \"target\": \"inference-37f712\"\r\n }],\r\n\r\n \"globalParameters\": [{\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\"\r\n },\r\n {\r\n \"key\": \"result\",\r\n \"name\": \"推理结果路径\",\r\n \"value\": \"\",\r\n \"type\": \"str\",\r\n \"require\": true\r\n }\r\n]\r\n}', NULL, NULL, NULL, NULL, NULL); -INSERT INTO `workflow` VALUES (22, NULL, NULL, NULL, 'admin', '2023-11-15 14:06:32', 'admin', '2023-11-15 14:06:32', 0); -INSERT INTO `workflow` VALUES (23, NULL, NULL, NULL, 'admin', '2023-11-15 14:11:48', 'admin', '2023-11-15 14:11:48', 0); -INSERT INTO `workflow` VALUES (24, NULL, NULL, NULL, 'admin', '2023-11-15 14:20:51', 'admin', '2023-11-15 14:20:51', 0); -INSERT INTO `workflow` VALUES (25, NULL, NULL, NULL, 'admin', '2023-11-15 14:22:46', 'admin', '2023-11-15 14:22:46', 0); -INSERT INTO `workflow` VALUES (26, 'pytorch训练', 'pytorch 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-15 14:24:02', 'admin', '2023-11-15 16:25:44', 0); -INSERT INTO `workflow` VALUES (27, NULL, NULL, NULL, 'admin', '2023-11-15 14:25:17', 'admin', '2023-11-15 14:25:17', 0); -INSERT INTO `workflow` VALUES (28, 'tensorflow训练', 'tensorflow 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-15 14:27:35', 'admin', '2023-11-18 15:45:16', 0); -INSERT INTO `workflow` VALUES (29, 'tensorflow训练', 'tensorflow 小模型训练', '{\\\"pens\\\":[{\\\"componentId\\\":1,\\\"componentName\\\":\\\"git-clone\\\",\\\"categoryId\\\":2,\\\"categoryName\\\":\\\"代码clone组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"代码拉取\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"代码克隆\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"git-clone-010ee3\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"ssh_key\\\",\\\"name\\\":\\\"ssh私钥\\\",\\\"value\\\":\\\"fdasfasfadsfadsf\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"git_repo_addr\\\",\\\"name\\\":\\\"代码库地址\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"git_branch\\\",\\\"name\\\":\\\"代码库分支/tag\\\",\\\"value\\\":\\\"master\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"clone_depth\\\",\\\"name\\\":\\\"克隆深度\\\",\\\"value\\\":\\\"1\\\",\\\"type\\\":\\\"int\\\",\\\"require\\\":true,\\\"defaultValue\\\":\\\"1\\\"}],\\\"outParameters\\\":[{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码路径\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/code\\\"}],\\\"id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"train\\\",\\\"categoryId\\\":3,\\\"categoryName\\\":\\\"训练组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"RUNNING_SET\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"pytorch训练\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"train-091bb1e\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"train.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"somuns/pretrainmodel/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"batch_size\\\\\\\":\\\\\\\"256\\\\\\\",\\\\\\\"epoch_size\\\\\\\":\\\\\\\"2\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"model_path\\\",\\\"name\\\":\\\"模型输出路径\\\",\\\"value\\\":\\\"model_path\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/model\\\"}],\\\"id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"inference\\\",\\\"categoryId\\\":4,\\\"categoryName\\\":\\\"模型推理测试\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"Actor\\\",\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"inference.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"{{train-091bb1e.model_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"modelname\\\\\\\":\\\\\\\"/model/mnist_epoch1_0.00.pkl\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/result\\\"}],\\\"id\\\":\\\"inference-37f712\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"inference-37f712\\\"}],\\\"globalParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\"},{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]}', 'admin', '2023-11-15 14:35:48', 'admin', '2023-11-15 14:36:45', 0); -INSERT INTO `workflow` VALUES (30, 'tensorflow训练', 'tensorflow 小模型训练', '{\\\"pens\\\":[{\\\"componentId\\\":1,\\\"componentName\\\":\\\"git-clone\\\",\\\"categoryId\\\":2,\\\"categoryName\\\":\\\"代码clone组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAXXXXXXXAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"代码拉取\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"代码克隆\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"git-clone-010ee3\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"ssh_key\\\",\\\"name\\\":\\\"ssh私钥\\\",\\\"value\\\":\\\"fdasfasfadsfadsf\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"git_repo_addr\\\",\\\"name\\\":\\\"代码库地址\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"git_branch\\\",\\\"name\\\":\\\"代码库分支/tag\\\",\\\"value\\\":\\\"master\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"clone_depth\\\",\\\"name\\\":\\\"克隆深度\\\",\\\"value\\\":\\\"1\\\",\\\"type\\\":\\\"int\\\",\\\"require\\\":true,\\\"defaultValue\\\":\\\"1\\\"}],\\\"outParameters\\\":[{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码路径\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/code\\\"}],\\\"id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"train\\\",\\\"categoryId\\\":3,\\\"categoryName\\\":\\\"训练组件\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"RUNNING_SET\\\",\\\"baseInfo\\\":{\\\"inParameters\\\":[{\\\"key\\\":\\\"task_name\\\",\\\"name\\\":\\\"任务名称\\\",\\\"value\\\":\\\"pytorch训练\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"task_unique_id\\\",\\\"name\\\":\\\"任务id\\\",\\\"value\\\":\\\"train-091bb1e\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]},\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"train.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"somuns/pretrainmodel/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"batch_size\\\\\\\":\\\\\\\"256\\\\\\\",\\\\\\\"epoch_size\\\\\\\":\\\\\\\"2\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"model_path\\\",\\\"name\\\":\\\"模型输出路径\\\",\\\"value\\\":\\\"model_path\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/model\\\"}],\\\"id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"inference\\\",\\\"categoryId\\\":4,\\\"categoryName\\\":\\\"模型推理测试\\\",\\\"image\\\":\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\\\",\\\"text\\\":\\\"Actor\\\",\\\"inParameters\\\":[{\\\"key\\\":\\\"compute_resource\\\",\\\"name\\\":\\\"计算资源\\\",\\\"value\\\":\\\"CPU/GPU\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"image_name\\\",\\\"name\\\":\\\"镜像名称\\\",\\\"value\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"code_path\\\",\\\"name\\\":\\\"代码目录\\\",\\\"value\\\":\\\"{{git-clone-010ee3.code_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"start_file\\\",\\\"name\\\":\\\"启动文件\\\",\\\"value\\\":\\\"inference.py\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"model_name\\\",\\\"name\\\":\\\"模型名称\\\",\\\"value\\\":\\\"{{train-091bb1e.model_path}}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false},{\\\"key\\\":\\\"dataset_name\\\",\\\"name\\\":\\\"数据集名称\\\",\\\"value\\\":\\\"somuns/dataset/mnist\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"resource_request\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 2GB\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true},{\\\"key\\\":\\\"run_params\\\",\\\"name\\\":\\\"资源规格\\\",\\\"value\\\":\\\"{\\\\\\\"modelname\\\\\\\":\\\\\\\"/model/mnist_epoch1_0.00.pkl\\\\\\\"}\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":false}],\\\"outParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true,\\\"mountPath\\\":\\\"/result\\\"}],\\\"id\\\":\\\"inference-37f712\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"componentId\\\":1,\\\"componentName\\\":\\\"workflow_line\\\",\\\"categoryId\\\":1,\\\"categoryName\\\":\\\"线\\\",\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"inference-37f712\\\"}],\\\"globalParameters\\\":[{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\"},{\\\"key\\\":\\\"result\\\",\\\"name\\\":\\\"推理结果路径\\\",\\\"value\\\":\\\"\\\",\\\"type\\\":\\\"str\\\",\\\"require\\\":true}]}', 'admin', '2023-11-15 14:39:55', 'admin', '2023-11-15 14:41:47', 0); -INSERT INTO `workflow` VALUES (31, 'tensorflow大模型训练', 'tensorflow 小模型训练', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-17 14:04:42', 'admin', '2023-11-17 14:05:47', 0); -INSERT INTO `workflow` VALUES (32, 'tensorflow训练', NULL, '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-18 15:44:51', 'admin', '2023-11-18 15:45:36', 0); -INSERT INTO `workflow` VALUES (33, 'tensorflow训练', NULL, '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-18 15:45:45', 'admin', '2023-11-18 15:45:45', 0); -INSERT INTO `workflow` VALUES (34, 'pytorch手写体识别模型训练', 'pytorch手写体识别模型训练,模型较小', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-20 09:31:03', 'admin', '2023-11-20 09:34:24', 1); -INSERT INTO `workflow` VALUES (35, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-11-20 09:32:05', 'admin', '2023-11-20 09:34:37', 1); -INSERT INTO `workflow` VALUES (36, 'mindspore多语模型模型', 'mindspore多语言模型,支持中文、阿拉伯语、英语', NULL, 'admin', '2023-11-20 09:33:14', 'admin', '2023-11-20 09:33:14', 0); -INSERT INTO `workflow` VALUES (37, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', '苏影城', '2023-12-05 10:00:53', '苏影城', '2023-12-05 10:00:53', 1); -INSERT INTO `workflow` VALUES (38, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\"pens\":[{\"componentId\":1,\"componentName\":\"git-clone\",\"categoryId\":2,\"categoryName\":\"代码clone组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"代码拉取\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"代码克隆\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"git-clone-010ee3\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"ssh_key\",\"name\":\"ssh私钥\",\"value\":\"fdasfasfadsfadsf\",\"type\":\"str\",\"require\":false},{\"key\":\"git_repo_addr\",\"name\":\"代码库地址\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\",\"type\":\"str\",\"require\":true},{\"key\":\"git_branch\",\"name\":\"代码库分支/tag\",\"value\":\"master\",\"type\":\"str\",\"require\":true},{\"key\":\"clone_depth\",\"name\":\"克隆深度\",\"value\":\"1\",\"type\":\"int\",\"require\":true,\"defaultValue\":\"1\"}],\"outParameters\":[{\"key\":\"code_path\",\"name\":\"代码路径\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/code\"}],\"id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"componentId\":1,\"componentName\":\"train\",\"categoryId\":3,\"categoryName\":\"训练组件\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"RUNNING_SET\",\"baseInfo\":{\"inParameters\":[{\"key\":\"task_name\",\"name\":\"任务名称\",\"value\":\"pytorch训练\",\"type\":\"str\",\"require\":true},{\"key\":\"task_unique_id\",\"name\":\"任务id\",\"value\":\"train-091bb1e\",\"type\":\"str\",\"require\":true}]},\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"train.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"somuns/pretrainmodel/mnist\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 1, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"batch_size\\\":\\\"256\\\",\\\"epoch_size\\\":\\\"2\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"model_path\",\"name\":\"模型输出路径\",\"value\":\"model_path\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/model\"}],\"id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"componentId\":1,\"componentName\":\"inference\",\"categoryId\":4,\"categoryName\":\"模型推理测试\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAA6BJREFUaEPtWU1a2lAUvS/4fdpR2UHZQXEFjdK5dNB+zMQV1LCB2g0YXYE4EtuBOC8KKzCuQNwBjiptk9vzEiIJJFD6XqK2ZIJfeI93z/0597yroGf+iGduPy0BPHYElxFYRkDRA/9mCplVu2is0UegM5mpLAQVFR210HYm6uPsPgludk4ax7M2T0XAfG+XDYMu8zY61Ugmxx3SRrdtDZLWxACYNbtkMF09GeNDiwGic2qtzwVQqe03icS2v5D5jljU3R/UTUO/UF4ssHjkyCocaY8x0M5Fy4J98ScWgc2afYMXJbkEnxvfWlZ3gXO1L4U9e7Dj08ih553TRnUmgErNRv0ET6dlPTpDva3ZJgy69BOCuHfRapj/NwCZmwUmmwWolWmAT8e7JyurGtEagcoHuwqDjyYZCn1i4Hmgua+Wo7sItAHwG9sq3aTS6wyaUwGlDYD0Phl0FrArX3tCVFfAVvi7TUK8lO9dl9Z1R0EbgCidgRU+g4/3pNHRvoH3iTz95CIAPvNbO61R0QDFZdk3tEVA1kBhlSGugnSZfMDRt+Dokoq3k/ZqA+CnS6QOYodBcgjUxLyu7TvhBW8xC1NGDSlXCqMXqk8wmiMMdtzv4lxSs1YA0mipVAsGy/w3QakD9ALHFWK327L6ad6XRnhE2zC2vkiEAKqJ9T3sO/LJI+9OHDY9iKop/bIIkHBtrgB8rzOdTTU9eBEKt22gg/+6Jyfs4DK9VtaojD1l+LqOlHydUGf5aCFQbj0M+9gIPnZJ7M1KtajBQfT4AKSxlWsEJo2X7GSQqM8r8LSUivefjNWoX+AFunrwmOzYQ2GqCD0lFgILSLbxH8E88AxyLk8avSRvjYYAVw+0qMF4eY4SgFSmYGqjOA+jaTFxc7pzh6Kk4vnw7GwAjKvKcT3aoZ/UjylVj951vljtv6HKyT1KAKA0D8ECwSiDWc6FzCR6w/uu/C5YxtcXpw1QoZ5HCUDSndifFqCjoiZ2k3SRbkWqHUDo1wAINwWJNw++hibC1EDrBC8zAKHRsfsAUg7ps6sneYJfyRyAPEQ2Lyitojekpg7miTogFwA6Pa7MQpu1fUyFxSv5Q890MjeejcpxCbRMnYeipzs15kVtJOa2wHQH47bzB7PR0UYn7eo47+Csvp/VXxL/P4BbV/epgPDHODNEYeIAdyTOQIls4tpYzhuMlOGIZh+V2EwaqUcj/egTaNW0WwJQ9aDq/mUEVD2ouv83dj6dTztU6gcAAAAASUVORK5CYII=\",\"text\":\"Actor\",\"inParameters\":[{\"key\":\"compute_resource\",\"name\":\"计算资源\",\"value\":\"CPU/GPU\",\"type\":\"str\",\"require\":true},{\"key\":\"image_name\",\"name\":\"镜像名称\",\"value\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"type\":\"str\",\"require\":true},{\"key\":\"code_path\",\"name\":\"代码目录\",\"value\":\"{{git-clone-010ee3.code_path}}\",\"type\":\"str\",\"require\":true},{\"key\":\"start_file\",\"name\":\"启动文件\",\"value\":\"inference.py\",\"type\":\"str\",\"require\":true},{\"key\":\"model_name\",\"name\":\"模型名称\",\"value\":\"{{train-091bb1e.model_path}}\",\"type\":\"str\",\"require\":false},{\"key\":\"dataset_name\",\"name\":\"数据集名称\",\"value\":\"somuns/dataset/mnist\",\"type\":\"str\",\"require\":true},{\"key\":\"resource_request\",\"name\":\"资源规格\",\"value\":\"GPU: 0, CPU: 2, 内存: 2GB\",\"type\":\"str\",\"require\":true},{\"key\":\"run_params\",\"name\":\"资源规格\",\"value\":\"{\\\"modelname\\\":\\\"/model/mnist_epoch1_0.00.pkl\\\"}\",\"type\":\"str\",\"require\":false}],\"outParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true,\"mountPath\":\"/result\"}],\"id\":\"inference-37f712\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"componentId\":1,\"componentName\":\"workflow_line\",\"categoryId\":1,\"categoryName\":\"线\",\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"inference-37f712\"}],\"globalParameters\":[{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\"},{\"key\":\"result\",\"name\":\"推理结果路径\",\"value\":\"\",\"type\":\"str\",\"require\":true}]}', 'admin', '2023-12-11 09:21:12', 'admin', '2023-12-11 09:21:12', 1); -INSERT INTO `workflow` VALUES (39, 'pytorch多语言模型模型', 'pytorch多语言模型,支持中文、阿拉伯语、英语', '{\\\"components\\\":[{\\\"category_id\\\":1,\\\"component_name\\\":\\\"git-clone\\\",\\\"component_label\\\":\\\"git代码拉取\\\",\\\"description\\\":\\\"git代码拉取,支持公有和私有仓库拉取\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/git:202312071000\\\",\\\"working_directory\\\":\\\"/app\\\",\\\"command\\\":\\\"python git_clone.py\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 1, 内存: 2GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--code_path\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\\\"},\\\"--branch\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"use-dataset-zip\\\"},\\\"--depth\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"1\\\"},\\\"--ssh_private_key\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"\\\"}},\\\"out_parameters\\\":{\\\"--code_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/code\\\"}},\\\"task_id\\\":\\\"git-clone-010ee3\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"647b44d5\\\",\\\"lineAnchor\\\":\\\"2f966d31\\\",\\\"anchor\\\":\\\"1\\\"}]},{\\\"category_id\\\":2,\\\"component_name\\\":\\\"train\\\",\\\"component_label\\\":\\\"pytorch训练\\\",\\\"description\\\":\\\"通用模型训练组件,支持各种类型框架的训练\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"working_directory\\\":\\\"{{git-clone-010ee3.--code_output}}\\\",\\\"command\\\":\\\"python train.py --epoch_size=1 --batch_size=128\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 2, 内存: 4GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"model\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\\\\\"}\\\"}},\\\"out_parameters\\\":{\\\"--model_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/model\\\"}},\\\"env_virables\\\":{},\\\"task_id\\\":\\\"train-091bb1e\\\",\\\"connectedLines\\\":[{\\\"lineId\\\":\\\"7025d72a\\\",\\\"lineAnchor\\\":\\\"7982b5a4\\\",\\\"anchor\\\":\\\"2\\\"}]},{\\\"category_id\\\":2,\\\"component_name\\\":\\\"train\\\",\\\"component_label\\\":\\\"pytorch推理\\\",\\\"description\\\":\\\"通用模型训练组件,支持各种类型框架的训练\\\",\\\"image\\\":\\\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\\\",\\\"working_directory\\\":\\\"{{git-clone-010ee3.--code_output}}\\\",\\\"command\\\":\\\"python inference.py\\\",\\\"mount_path\\\":\\\"\\\",\\\"control_strategy\\\":{\\\"max_run_time\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"2h\\\"},\\\"retry_times\\\":{\\\"type\\\":\\\"int\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"0\\\"}},\\\"resources_standard\\\":{\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"CPU-GPU\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"GPU: 0, CPU: 2, 内存: 4GB\\\\\\\"}\\\"},\\\"in_parameters\\\":{\\\"--dataset\\\":{\\\"type\\\":\\\"ref\\\",\\\"item_type\\\":\\\"dataset\\\",\\\"value\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"mnist\\\\\\\", \\\\\\\"path\\\\\\\":\\\\\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\\\\\"}\\\"},\\\"--model_name\\\":{\\\"type\\\":\\\"str\\\",\\\"item_type\\\":\\\"\\\",\\\"value\\\":\\\"{{train-091bb1e.--model_output}}\\\"}},\\\"out_parameters\\\":{\\\"--result_output\\\":{\\\"type\\\":\\\"str\\\",\\\"path\\\":\\\"/result\\\"}},\\\"env_virables\\\":{\\\"HOST_IP\\\":\\\"10.1.1.2\\\"},\\\"task_id\\\":\\\"train-37f712\\\"}],\\\"lines\\\":[{\\\"id\\\":\\\"647b44d5\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"git-clone-010ee3\\\",\\\"target\\\":\\\"train-091bb1e\\\"},{\\\"id\\\":\\\"7025d72a\\\",\\\"name\\\":\\\"line\\\",\\\"lineName\\\":\\\"curve\\\",\\\"type\\\":1,\\\"source\\\":\\\"train-091bb1e\\\",\\\"target\\\":\\\"train-37f712\\\"}]}', '苏影城', '2023-12-11 15:02:35', 'admin', '2023-12-21 14:26:51', 1); -INSERT INTO `workflow` VALUES (40, '组件库方式pytorch手写体识别', '手写体识别', '{\"components\":[{\"category_id\":1,\"component_name\":\"git-clone\",\"component_label\":\"git代码拉取\",\"description\":\"git代码拉取,支持公有和私有仓库拉取\",\"image\":\"ccr.ccs.tencentyun.com/somunslotus/git:202312071000\",\"working_directory\":\"/app\",\"command\":\"python git_clone.py\",\"mount_path\":\"\",\"control_strategy\":{\"max_run_time\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"int\",\"item_type\":\"\",\"value\":\"0\"}},\"resources_standard\":{\"value\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 1, 内存: 2GB\\\"}\"},\"in_parameters\":{\"--code_path\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"https://openi.pcl.ac.cn/somunslotus/somun202304241505581.git\"},\"--branch\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"use-dataset-zip\"},\"--depth\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"1\"},\"--ssh_private_key\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"\"}},\"out_parameters\":{\"--code_output\":{\"type\":\"str\",\"path\":\"/code\"}},\"task_id\":\"git-clone-010ee3\",\"connectedLines\":[{\"lineId\":\"647b44d5\",\"lineAnchor\":\"2f966d31\",\"anchor\":\"1\"}]},{\"category_id\":2,\"component_name\":\"train\",\"component_label\":\"pytorch训练\",\"description\":\"通用模型训练组件,支持各种类型框架的训练\",\"image\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"working_directory\":\"{{git-clone-010ee3.--code_output}}\",\"command\":\"python train.py --epoch_size=1 --batch_size=128\",\"mount_path\":\"\",\"control_strategy\":{\"max_run_time\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"int\",\"item_type\":\"\",\"value\":\"0\"}},\"resources_standard\":{\"value\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\"},\"in_parameters\":{\"--dataset\":{\"type\":\"ref\",\"item_type\":\"dataset\",\"value\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\"},\"--model_name\":{\"type\":\"ref\",\"item_type\":\"model\",\"value\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/pretrainmodel/mnist/ssd_80C_500E.ckpt\\\"}\"}},\"out_parameters\":{\"--model_output\":{\"type\":\"str\",\"path\":\"/model\"}},\"env_virables\":{},\"task_id\":\"train-091bb1e\",\"connectedLines\":[{\"lineId\":\"7025d72a\",\"lineAnchor\":\"7982b5a4\",\"anchor\":\"2\"}]},{\"category_id\":2,\"component_name\":\"train\",\"component_label\":\"pytorch推理\",\"description\":\"通用模型训练组件,支持各种类型框架的训练\",\"image\":\"ccr.ccs.tencentyun.com/somunslotus/ai-develop:pytorch_1.9.1_cuda11.1_detection\",\"working_directory\":\"{{git-clone-010ee3.--code_output}}\",\"command\":\"python inference.py\",\"mount_path\":\"\",\"control_strategy\":{\"max_run_time\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"2h\"},\"retry_times\":{\"type\":\"int\",\"item_type\":\"\",\"value\":\"0\"}},\"resources_standard\":{\"value\":\"{\\\"name\\\":\\\"CPU-GPU\\\",\\\"value\\\":\\\"GPU: 0, CPU: 2, 内存: 4GB\\\"}\"},\"in_parameters\":{\"--dataset\":{\"type\":\"ref\",\"item_type\":\"dataset\",\"value\":\"{\\\"name\\\":\\\"mnist\\\", \\\"path\\\":\\\"argo-workflow/platform-data/somuns/dataset/mnist/MnistDataset_torch.zip\\\"}\"},\"--model_name\":{\"type\":\"str\",\"item_type\":\"\",\"value\":\"{{train-091bb1e.--model_output}}\"}},\"out_parameters\":{\"--result_output\":{\"type\":\"str\",\"path\":\"/result\"}},\"env_virables\":{\"HOST_IP\":\"10.1.1.2\"},\"task_id\":\"train-37f712\"}],\"lines\":[{\"id\":\"647b44d5\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"git-clone-010ee3\",\"target\":\"train-091bb1e\"},{\"id\":\"7025d72a\",\"name\":\"line\",\"lineName\":\"curve\",\"type\":1,\"source\":\"train-091bb1e\",\"target\":\"train-37f712\"}]}', 'admin', '2023-12-21 14:26:22', 'admin', '2023-12-21 14:27:51', 1); - -SET FOREIGN_KEY_CHECKS = 1; From d10e122b69145525445e1c5785c43d1c95f758ca Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 8 Apr 2024 09:43:20 +0800 Subject: [PATCH 004/381] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/DatasetServiceImpl.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index f971d525..41f74cfe 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -5,8 +5,6 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.DatasetVersion; -import com.ruoyi.platform.domain.Models; -import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.mapper.DatasetDao; import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.service.DatasetService; @@ -17,9 +15,7 @@ import com.ruoyi.platform.utils.MinioUtil; import com.ruoyi.platform.vo.DatasetVersionVo; import com.ruoyi.platform.vo.DatasetVo; import com.ruoyi.system.api.model.LoginUser; -import io.minio.MinioClient; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -60,9 +56,6 @@ public class DatasetServiceImpl implements DatasetService { @Resource private DatasetVersionService datasetVersionService; - - private MinioClient minioClient; - // 固定存储桶名 private final String bucketName = "platform-data"; @@ -207,7 +200,7 @@ public class DatasetServiceImpl implements DatasetService { e.printStackTrace(); throw new Exception("下载数据集文件错误"); } - } + } /** * 上传数据集 @@ -260,6 +253,7 @@ public class DatasetServiceImpl implements DatasetService { } + @Override public Map uploadDatasetPipeline(DatasetVersion datasetVersion) throws Exception { String username = SecurityUtils.getLoginUser().getUsername(); @@ -309,6 +303,7 @@ public class DatasetServiceImpl implements DatasetService { // 使用Stream API提取version字段,并去重 return versions.stream() .map(DatasetVersion::getVersion) // 提取每个DatasetVersion对象的version属性 + .filter(version -> version != null && !version.isEmpty()) //忽略null或空字符串的version .distinct() // 去重 .collect(Collectors.toList()); // 收集到List中 } From 6ffa26c7f9fa90e14e7e1f50f756677c002069e4 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 8 Apr 2024 09:44:00 +0800 Subject: [PATCH 005/381] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index c335fea7..6b711468 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -52,10 +52,10 @@ public class ModelsServiceImpl implements ModelsService { @Resource private ModelsVersionDao modelsVersionDao; - private MinioClient minioClient; @Resource private ModelsVersionService modelsVersionService; + // 固定存储桶名 private final String bucketName = "platform-data"; @@ -354,6 +354,7 @@ public class ModelsServiceImpl implements ModelsService { // 使用Stream API提取version字段,并去重 return versions.stream() .map(ModelsVersion::getVersion) // 提取每个ModelVersion对象的version属性 + .filter(version -> version != null && !version.isEmpty()) //忽略null或空字符串的version .distinct() // 去重 .collect(Collectors.toList()); // 收集到List中 } From 3eb2d3160cb9f07ab002f87cd4e5454a0e773150 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 8 Apr 2024 15:46:34 +0800 Subject: [PATCH 006/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3BUG-=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/utils/K8sClientUtil.java | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index e412cdde..0f985105 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -1,26 +1,20 @@ package com.ruoyi.platform.utils; -import com.alibaba.nacos.shaded.com.google.gson.reflect.TypeToken; import io.kubernetes.client.Exec; import io.kubernetes.client.custom.IntOrString; import io.kubernetes.client.custom.Quantity; import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.ApiException; -import io.kubernetes.client.openapi.ApiResponse; +import io.kubernetes.client.openapi.Configuration; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.*; -import io.kubernetes.client.util.ClientBuilder; -import io.kubernetes.client.util.Watch; -import io.kubernetes.client.util.credentials.AccessTokenAuthentication; +import io.kubernetes.client.util.Config; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.apache.poi.ss.formula.functions.T; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.LinkedHashMap; @@ -35,8 +29,6 @@ import java.util.Map; @Slf4j @Component public class K8sClientUtil { - private String http; - private String token; /** * k8s-api客户端 */ @@ -51,14 +43,11 @@ public class K8sClientUtil { * 4. master endpoints(ip, port) from pre-set environment variables */ // @Autowired - public K8sClientUtil(@Value("${k8s.http}") String http, @Value("${k8s.token}") String token) { - this.http = http; - this.token = token; + public K8sClientUtil() { try { - this.apiClient = new ClientBuilder(). - setBasePath(http).setVerifyingSsl(false). - setAuthentication(new AccessTokenAuthentication(token)).build(); - } catch (Exception e) { + apiClient = Config.defaultClient(); + Configuration.setDefaultApiClient(apiClient); + } catch (Exception e) { log.error("构建K8s-Client异常", e); throw new RuntimeException("构建K8s-Client异常"); } From f60cb0e9e0031f9d10f92d9485467f4dded08a6e Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 8 Apr 2024 16:41:33 +0800 Subject: [PATCH 007/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/MinioUtil.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java index 363f1508..ccfc1712 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java @@ -4,10 +4,11 @@ package com.ruoyi.platform.utils; import io.minio.*; import io.minio.errors.MinioException; import io.minio.messages.Item; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Path; @@ -18,27 +19,20 @@ import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; - +@Slf4j @Component public class MinioUtil { - @Value("${minio.endpoint}") - private String minioEndpoint; - - @Value("${minio.accessKey}") - private String minioAccessKey; - - @Value("${minio.secretKey}") - private String minioSecretKey; private MinioClient minioClient; - @PostConstruct - public void init() { + @Autowired + public MinioUtil(@Value("${minio.endpoint}")String minioEndpoint,@Value("${minio.accessKey}")String minioAccessKey,@Value("${minio.secretKey}") String minioSecretKey) { this.minioClient = MinioClient.builder() .endpoint(minioEndpoint) .credentials(minioAccessKey, minioSecretKey) .build(); } + public void createBucket(String bucketName) throws Exception { if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); From ebb2fc5bd184c51d97d5814daacb1445b506504a Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 8 Apr 2024 16:57:33 +0800 Subject: [PATCH 008/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/utils/K8sClientUtil.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 0f985105..9493b6ff 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -1,20 +1,26 @@ package com.ruoyi.platform.utils; +import com.alibaba.nacos.shaded.com.google.gson.reflect.TypeToken; import io.kubernetes.client.Exec; import io.kubernetes.client.custom.IntOrString; import io.kubernetes.client.custom.Quantity; import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.ApiException; -import io.kubernetes.client.openapi.Configuration; +import io.kubernetes.client.openapi.ApiResponse; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.*; -import io.kubernetes.client.util.Config; +import io.kubernetes.client.util.ClientBuilder; +import io.kubernetes.client.util.Watch; +import io.kubernetes.client.util.credentials.AccessTokenAuthentication; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import java.io.BufferedReader; -import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.LinkedHashMap; @@ -42,12 +48,13 @@ public class K8sClientUtil { * 3. service-account namespace * 4. master endpoints(ip, port) from pre-set environment variables */ -// @Autowired - public K8sClientUtil() { + @Autowired + public K8sClientUtil(@Value("${k8s.http}") String http, @Value("${k8s.token}") String token) { try { - apiClient = Config.defaultClient(); - Configuration.setDefaultApiClient(apiClient); - } catch (Exception e) { + this.apiClient = new ClientBuilder(). + setBasePath(http).setVerifyingSsl(false). + setAuthentication(new AccessTokenAuthentication(token)).build(); + } catch (Exception e) { log.error("构建K8s-Client异常", e); throw new RuntimeException("构建K8s-Client异常"); } @@ -128,7 +135,7 @@ public class K8sClientUtil { for (V1Service svc : v1ServiceList.getItems()) { if (StringUtils.equals(svc.getMetadata().getName(), serviceName)) { // PVC 已存在 - return svc; + return svc; } } } From 2e5b5f9f9c00c3b862b06548a44f2c20d5dc0ace Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 9 Apr 2024 16:25:08 +0800 Subject: [PATCH 009/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 9493b6ff..72d23945 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -264,7 +264,7 @@ public class K8sClientUtil { .withName(podName) .withLabels(selector) .endMetadata() - .withNewSpec().withSchedulerName("0 */4 * * *")//默认不被操作4小时后删除 + .withNewSpec()//默认不被操作4小时后删除 .addNewContainer() .withName(podName) .withImage(image) @@ -274,7 +274,7 @@ public class K8sClientUtil { .addNewVolume() .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName())) .endVolume() -// .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 + .withTerminationGracePeriodSeconds(14400L) //默认不被操作4小时后删除 .endSpec() .build(); From 7dca75748abcf19e8e81915582313e5695f7c3a6 Mon Sep 17 00:00:00 2001 From: liu2592603532 <2592603532@qq.com> Date: Wed, 10 Apr 2024 15:10:02 +0800 Subject: [PATCH 010/381] merge --- react-ui/src/components/KFModal/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/react-ui/src/components/KFModal/index.tsx b/react-ui/src/components/KFModal/index.tsx index 2ce5907b..58de7ad6 100644 --- a/react-ui/src/components/KFModal/index.tsx +++ b/react-ui/src/components/KFModal/index.tsx @@ -15,7 +15,6 @@ function KFModal({ title, image, children, className, ...rest }: KFModalProps) { className={classNames(['kf-modal', className])} {...rest} title={} - closeIcon={} > {children} From 06c485dd080667400f1763c0a0cbda7fd31c1c4f Mon Sep 17 00:00:00 2001 From: liu2592603532 <2592603532@qq.com> Date: Wed, 10 Apr 2024 15:28:56 +0800 Subject: [PATCH 011/381] merge --- .../pages/Experiment/experimentText/index.jsx | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/react-ui/src/pages/Experiment/experimentText/index.jsx b/react-ui/src/pages/Experiment/experimentText/index.jsx index 15fd0f51..18e525b6 100644 --- a/react-ui/src/pages/Experiment/experimentText/index.jsx +++ b/react-ui/src/pages/Experiment/experimentText/index.jsx @@ -168,6 +168,27 @@ function ExperimentText() { }, [message]); const initGraph = () => { + const fittingString = (str, maxWidth, fontSize) => { + const ellipsis = '...'; + const ellipsisLength = G6.Util.getTextSize(ellipsis, fontSize)[0]; + let currentWidth = 0; + let res = str; + const pattern = new RegExp('[\u4E00-\u9FA5]+'); // distinguish the Chinese charactors and letters + str.split('').forEach((letter, i) => { + if (currentWidth > maxWidth - ellipsisLength) return; + if (pattern.test(letter)) { + // Chinese charactors + currentWidth += fontSize; + } else { + // get the width of single letter according to the fontSize + currentWidth += G6.Util.getLetterWidth(letter, fontSize); + } + if (currentWidth > maxWidth - ellipsisLength) { + res = `${str.substr(0, i)}${ellipsis}`; + } + }); + return res; + }; G6.registerNode( 'rect-node', { @@ -194,19 +215,21 @@ function ExperimentText() { }, draggable: true, }); - // if (cfg.label) { - // group.addShape('text', { - // attrs: { - // x: 0, - // y: cfg.height / 2 - 5, - // textAlign: 'center', - // textBaseline: 'middle', - // text: cfg.label, - // fill: '#fff', - // }, - // draggable: true, - // }); - // } + if (cfg.label) { + group.addShape('text', { + attrs: { + text: fittingString(cfg.label, 70, 10), + x: -20, + y: 0, + fontSize: 10, + textAlign: 'left', + textBaseline: 'middle', + fill: '#000', + }, + name: 'text-shape', + draggable: true, + }); + } const bbox = group.getBBox(); const anchorPoints = this.getAnchorPoints(cfg); // console.log(anchorPoints); From 5d78ed2730664f674a3e34e75a46a81b665586f6 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 17 Apr 2024 09:01:16 +0800 Subject: [PATCH 012/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/src/pages/Experiment/experimentText/index.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react-ui/src/pages/Experiment/experimentText/index.jsx b/react-ui/src/pages/Experiment/experimentText/index.jsx index 18e525b6..5eeec61d 100644 --- a/react-ui/src/pages/Experiment/experimentText/index.jsx +++ b/react-ui/src/pages/Experiment/experimentText/index.jsx @@ -128,9 +128,9 @@ function ExperimentText() { experimentStatusObjs[item.id] && experimentStatusObjs[item.id].phase ? item.img.slice(0, item.img.length - 4) + - '-' + - experimentStatusObjs[item.id].phase + - '.png' + '-' + + experimentStatusObjs[item.id].phase + + '.png' : item.img, }; }); From 7618cf6ba17106fa2f0c8ee88ac141b249946ea9 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 17 Apr 2024 09:14:29 +0800 Subject: [PATCH 013/381] Update index.jsx --- .../pages/Experiment/experimentText/index.jsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/react-ui/src/pages/Experiment/experimentText/index.jsx b/react-ui/src/pages/Experiment/experimentText/index.jsx index 5eeec61d..7911ec53 100644 --- a/react-ui/src/pages/Experiment/experimentText/index.jsx +++ b/react-ui/src/pages/Experiment/experimentText/index.jsx @@ -1,5 +1,5 @@ import { ReactComponent as ViewParam } from '@/assets/svg/view-param.svg'; -import { useAntdModal } from '@/hooks'; +import { useVisible } from '@/hooks'; import { getExperimentIns } from '@/services/experiment/index.js'; import { getWorkflowById } from '@/services/pipeline/index.js'; import { elapsedTime } from '@/utils/date'; @@ -22,7 +22,7 @@ function ExperimentText() { const navgite = useNavigate(); const locationParams = useParams(); //新版本获取路由参数接口 let graph = null; - const [paramsModalOpen, openParamsModal, closeParamsModal] = useAntdModal(false); + const [paramsModalOpen, openParamsModal, closeParamsModal] = useVisible(false); const timers = (time) => { let timer = new Date(time); @@ -128,9 +128,9 @@ function ExperimentText() { experimentStatusObjs[item.id] && experimentStatusObjs[item.id].phase ? item.img.slice(0, item.img.length - 4) + - '-' + - experimentStatusObjs[item.id].phase + - '.png' + '-' + + experimentStatusObjs[item.id].phase + + '.png' : item.img, }; }); @@ -189,6 +189,11 @@ function ExperimentText() { }); return res; }; + // 获取文本的长度 + const getTextSize = (str, maxWidth, fontSize) => { + let width = G6.Util.getTextSize(str, fontSize)[0]; + return width > maxWidth ? maxWidth : width; + }; G6.registerNode( 'rect-node', { @@ -380,8 +385,8 @@ function ExperimentText() { }, }, // linkCenter: true, - fitView: false, - fitViewPadding: [60, 60, 60, 80], + fitView: true, + fitViewPadding: [320, 320, 220, 320], }); graph.on('dblclick', handlerClick); From a3ee9411aa31066b3128a317d0874e4972a7ae39 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 17 Apr 2024 09:15:11 +0800 Subject: [PATCH 014/381] Update proxy.ts --- react-ui/config/proxy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 4cbbc264..2b02d8f0 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -15,9 +15,9 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'ci4s-gateway-service.argo.svc:8082', + // target: 'http://172.20.32.181:31205', // target: 'http://172.20.32.98:8082', - // target: 'http://172.20.32.150:8082', + target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https // 依赖 origin 的功能可能需要这个,比如 cookie changeOrigin: true, From 87e432fc5379e424af45ffa2c36584fbb0691d6b Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 17 Apr 2024 09:16:29 +0800 Subject: [PATCH 015/381] Update proxy.ts --- react-ui/config/proxy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 2b02d8f0..4cbbc264 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -15,9 +15,9 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - // target: 'http://172.20.32.181:31205', + target: 'ci4s-gateway-service.argo.svc:8082', // target: 'http://172.20.32.98:8082', - target: 'http://172.20.32.150:8082', + // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https // 依赖 origin 的功能可能需要这个,比如 cookie changeOrigin: true, From f41a33e940cfa76c1b485e863ba60e305b06aa58 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 21 Apr 2024 19:40:30 +0800 Subject: [PATCH 016/381] Update proxy.ts --- react-ui/config/proxy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 4cbbc264..527bff75 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -15,8 +15,8 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'ci4s-gateway-service.argo.svc:8082', - // target: 'http://172.20.32.98:8082', + // target: 'http://172.20.32.181:31205', + target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https // 依赖 origin 的功能可能需要这个,比如 cookie From 80b97704387b15aecba804b6a7316b7f0f9243af Mon Sep 17 00:00:00 2001 From: somunslotus Date: Tue, 11 Jun 2024 17:24:47 +0800 Subject: [PATCH 017/381] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 17 ++ k8s/build-node.sh | 21 ++ k8s/build.sh | 54 +++++ k8s/build_and_deploy_front_managenent.sh | 68 ++++++ k8s/new_deploy.sh | 127 +++++++++++ k8s/newbuild.sh | 113 ++++++++++ settings.xml | 274 +++++++++++++++++++++++ settings.xml.bak | 257 +++++++++++++++++++++ 8 files changed, 931 insertions(+) create mode 100644 k8s/build-java.sh create mode 100644 k8s/build-node.sh create mode 100644 k8s/build.sh create mode 100644 k8s/build_and_deploy_front_managenent.sh create mode 100644 k8s/new_deploy.sh create mode 100644 k8s/newbuild.sh create mode 100644 settings.xml create mode 100644 settings.xml.bak diff --git a/k8s/build-java.sh b/k8s/build-java.sh new file mode 100644 index 00000000..2f9e1d7b --- /dev/null +++ b/k8s/build-java.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +baseDir="/home/somuns/ci4s" +cd $baseDir && mvn clean install + +#cd ${baseDir}/ruoyi-modules && mvn install +if [ $? -ne 0 ]; then + echo "Failed to build ruoyi-modules" + exit 1 +fi + + + + + + + diff --git a/k8s/build-node.sh b/k8s/build-node.sh new file mode 100644 index 00000000..9805d2ca --- /dev/null +++ b/k8s/build-node.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +baseDir="/home/somuns/ci4s" +cd ${baseDir}/react-ui + +npm install + +if [ $? -ne 0 ]; then + echo "Failed to install npm depend package" + exit 1 +fi + + +npm run build +if [ $? -ne 0 ]; then + echo "Failed to build react-ui" + exit 1 +fi + + + diff --git a/k8s/build.sh b/k8s/build.sh new file mode 100644 index 00000000..384b4e19 --- /dev/null +++ b/k8s/build.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +#登录到172.20.32.185 环境执行 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + +#拉取master分支的最新代码 +git pull +if [ $? -ne 0 ]; then + echo "拉取代码失败,请检查网络或联系管理员!" + exit 1 +fi + +if [ -d "${baseDir}/react-ui/dist" ]; then + rm -rf ${baseDir}/react-ui/dist +fi + +if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ];then + rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar +fi + + +# 编译java +docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/java-build:jdk8-mvn3.6 ${baseDir}/k8s/build-java.sh +if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 +fi + +# 编译node +docker run -v ${baseDir}:${baseDir} -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh +if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 +fi + + +mkdir -p ${baseDir}/k8s/dockerfiles/jar +mkdir -p ${baseDir}/k8s/dockerfiles/html +# 复制jar包 +cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar +if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 +fi + +# 复制前端文件 +cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html +if [ $? -ne 0 ]; then + echo "复制html文件失败,请检查代码!" + exit 1 +fi + +sh ${baseDir}/k8s/build_and_deploy_front_managenent.sh diff --git a/k8s/build_and_deploy_front_managenent.sh b/k8s/build_and_deploy_front_managenent.sh new file mode 100644 index 00000000..274a8463 --- /dev/null +++ b/k8s/build_and_deploy_front_managenent.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +bastDir=/home/somuns/ci4s +cd ${bastDir}/k8s/dockerfiles +mkdir -p ${bastDir}/k8s/template-yaml/deploy + +tag=$(date +'%Y%m%d%H%M') +managent=172.20.32.187/ci4s/managent:${tag} +front=172.20.32.187/ci4s/ci4s-front:${tag} + +docker build -t ${managent} -f managent-dockerfile . + +if [ "$?" -ne "0" ];then + echo "buid ${managent} image fail" + exit 1 +fi + +docker build -t ${front} -f nginx-dockerfile . + +if [ "$?" -ne "0" ];then + echo "buid ${front} image fail" + exit 2 +fi + +cd ${bastDir}/k8s/template-yaml + +cp -rf k8s-12front.yaml deploy/ +cp -rf k8s-7management.yaml deploy/ + +cd deploy/ + +#镜像替换 +sed -i "s#managenent-image#${managent}#g" k8s-7management.yaml +if [ "$?" -ne "0" ];then + echo "replace ${managent} image fail" + exit 3 +fi + + + +sed -i "s#front-image#${front}#g" k8s-12front.yaml + +if [ "$?" -ne "0" ];then + echo "replace ${front} image fail" + exit 4 +fi + + +docker push ${managent} +docker push ${front} + +kubectl apply -n argo -f k8s-7management.yaml + +if [ "$?" -ne "0" ];then + echo "deploy ${managent} image fail" + exit 5 +fi + + +kubectl apply -n argo -f k8s-12front.yaml + +if [ "$?" -ne "0" ];then + echo "buid ${front} image fail" + exit 6 +fi + + + diff --git a/k8s/new_deploy.sh b/k8s/new_deploy.sh new file mode 100644 index 00000000..785f34cc --- /dev/null +++ b/k8s/new_deploy.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +# 记录开始时间 +start=$(date +%s) +# 默认参数 +service="manage-front" +env="dev" + +# 解析命令行参数 +while getopts "s:e:" opt; do + case $opt in + s) service=$OPTARG ;; + e) env=$OPTARG ;; + \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;; + esac +done + +echo "deploy service: $service, env: $env" +# 根据环境设置 IP 地址 +if [ "$env" == "dev" ]; then + remote_ip="172.20.32.181" +elif [ "$env" == "test" ]; then + remote_ip="172.20.32.185" +else + echo "Invalid environment - $env" + exit 1 +fi + +baseDir=/home/somuns/ci4s +cd ${baseDir}/k8s/dockerfiles +mkdir -p ${baseDir}/k8s/template-yaml/deploy + +tag=$(date +'%Y%m%d%H%M') +managent=172.20.32.187/ci4s/managent:${tag} +front=172.20.32.187/ci4s/ci4s-front:${tag} + +remote_deploy_dir=/home/deploy/manage-platform +manager_yaml=k8s-7management.yaml +front_yaml=k8s-12front.yaml + +# 构建 manage 镜像 +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + cd ${baseDir}/k8s/dockerfiles + docker build -t ${managent} -f managent-dockerfile . + if [ "$?" -ne "0" ]; then + echo "build ${managent} image fail" + exit 1 + fi + + cd ${baseDir}/k8s/template-yaml + # 复制 YAML 文件 + cp -rf ${manager_yaml} deploy/ + # 镜像替换 + cd deploy/ + sed -i "s#managenent-image#${managent}#g" ${manager_yaml} + if [ "$?" -ne "0" ];then + echo "replace ${managent} image fail" + exit 3 + fi + # 推送镜像 + docker push ${managent} + # 部署服务 + ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${manager_yaml} ]; then mv ${remote_deploy_dir}/${manager_yaml} ${remote_deploy_dir}/k8s-7management.yaml.bak; fi" + scp ${baseDir}/k8s/template-yaml/deploy/${manager_yaml} root@$remote_ip:${remote_deploy_dir}/${manager_yaml} + if [ $? -ne 0 ]; then + echo "Failed to copy ${managent} yaml file" + exit 1 + else + echo "Successfully copied ${managent} yaml file" + fi + ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${manager_yaml}" + if [ $? -ne 0 ]; then + echo "Failed to deploy ${managent} image" + exit 1 + else + echo "Successfully deployed ${managent} image" + fi +fi + + +# 构建 front 镜像 +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + cd ${baseDir}/k8s/dockerfiles + docker build -t ${front} -f nginx-dockerfile . + if [ "$?" -ne "0" ];then + echo "build ${front} image fail" + exit 2 + fi + + # 复制 YAML 文件 + cd ${baseDir}/k8s/template-yaml + cp -rf ${front_yaml} deploy/ + + # 镜像替换 + cd deploy/ + sed -i "s#front-image#${front}#g" ${front_yaml} + if [ "$?" -ne "0" ];then + echo "replace ${front} image fail" + exit 4 + fi + + + # 镜像推送 + docker push ${front} + + #部署服务 + ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${front_yaml} ]; then mv ${remote_deploy_dir}/${front_yaml} ${remote_deploy_dir}/k8s-12front.yaml.bak; fi" + scp ${baseDir}/k8s/template-yaml/deploy/${front_yaml} root@$remote_ip:${remote_deploy_dir}/${front_yaml} + if [ $? -ne 0 ]; then + echo "Failed to copy ${managent} yaml file" + exit 1 + else + echo "Successfully copied ${managent} yaml file" + fi + ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${front_yaml}" + if [ $? -ne 0 ]; then + echo "Failed to deploy ${front} image" + exit 1 + else + echo "Successfully deployed ${front} image" + fi +fi + + +# 记录结束时间 +end=$(date +%s) +echo "部署成功, 耗时: $((end-start))秒" diff --git a/k8s/newbuild.sh b/k8s/newbuild.sh new file mode 100644 index 00000000..dcdef4d9 --- /dev/null +++ b/k8s/newbuild.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +#记录开始时间 +start=$(date +%s) + +# 默认参数 +branch="master" +service="manage-front" +env="dev" + +# +show_help() { + echo "Usage: $0 [-b branch] [-s service] [-e environment]" + echo + echo "Options:" + echo " -b Branch to deploy" + echo " -s Service to deploy (manage-front, manage, front)" + echo " -e Environment (e.g., dev, prod)" + echo " -h Show this help message" +} + +# 解析命令行选项 +while getopts "b:s:e:h" opt; do + case $opt in + b) branch=$OPTARG ;; + s) service=$OPTARG ;; + e) env=$OPTARG ;; + h) show_help; exit 0 ;; + \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; + esac +done + +echo "branch: $branch" +echo "service: $service" +echo "env: $env" + +# 登录到目标环境 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + +# 拉取指定分支的最新代码 +echo "Checking out and pulling branch $branch..." +git checkout $branch +if [ $? -ne 0 ]; then + echo "切换到分支 $branch 失败,请检查分支名称是否正确!" + exit 1 +fi + +git pull origin $branch +if [ $? -ne 0 ]; then + echo "拉取代码失败,请检查网络或联系管理员!" + exit 1 +fi + +# 创建目录 +mkdir -p ${baseDir}/k8s/dockerfiles/jar +mkdir -p ${baseDir}/k8s/dockerfiles/html + +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + # 清理前端构建文件 + if [ -d "${baseDir}/react-ui/dist" ]; then + rm -rf ${baseDir}/react-ui/dist + fi + + # 编译前端 + docker run -v ${baseDir}:${baseDir} \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制前端文件 + cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html + if [ $? -ne 0 ]; then + echo "复制html文件失败,请检查代码!" + exit 1 + fi +fi + +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + # 清理java构建文件 + if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ]; then + rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar + fi + + # 编译java + docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制jar包 + cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar + if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 + fi +fi + + +# 构建和部署 +sh ${baseDir}/k8s/new_deploy.sh -s $service -e $env +# 记录结束时间 +end=$(date +%s) + +#计算运行时间 +runtime=$((end-start)) +echo "编译和发布成功,耗时:$runtime 秒" diff --git a/settings.xml b/settings.xml new file mode 100644 index 00000000..d0fe0f07 --- /dev/null +++ b/settings.xml @@ -0,0 +1,274 @@ + + + + + + + + /home/maven/repository + + + + + + + + + + + + + + + + + + + + + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + central + + + + + + + + + myjdk + + true + 1.8 + + + 1.8 + 1.8 + 1.8 + + + + + + + + myjdk + + \ No newline at end of file diff --git a/settings.xml.bak b/settings.xml.bak new file mode 100644 index 00000000..e27c579c --- /dev/null +++ b/settings.xml.bak @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 18ba733c40b124b7c0f7a03326063073f570a7ab Mon Sep 17 00:00:00 2001 From: somunslotus Date: Tue, 11 Jun 2024 17:35:41 +0800 Subject: [PATCH 018/381] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=96=87=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=92=8C=E5=8F=91=E5=B8=83=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 126 +++++++++++++++++------ k8s/build_and_deploy.sh | 60 +++++++++++ k8s/build_and_deploy_front_managenent.sh | 68 ------------ k8s/{new_deploy.sh => deploy.sh} | 0 k8s/newbuild.sh | 113 -------------------- 5 files changed, 152 insertions(+), 215 deletions(-) create mode 100644 k8s/build_and_deploy.sh delete mode 100644 k8s/build_and_deploy_front_managenent.sh rename k8s/{new_deploy.sh => deploy.sh} (100%) delete mode 100644 k8s/newbuild.sh diff --git a/k8s/build.sh b/k8s/build.sh index 384b4e19..3d1d49ac 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -1,54 +1,112 @@ #!/bin/bash -#登录到172.20.32.185 环境执行 -baseDir="/home/somuns/ci4s" -cd ${baseDir} +#记录开始时间 +start=$(date +%s) -#拉取master分支的最新代码 -git pull -if [ $? -ne 0 ]; then - echo "拉取代码失败,请检查网络或联系管理员!" - exit 1 -fi +# 默认参数 +branch="master" +service="manage-front" +env="dev" -if [ -d "${baseDir}/react-ui/dist" ]; then - rm -rf ${baseDir}/react-ui/dist -fi +# +show_help() { + echo "Usage: $0 [-b branch] [-s service] [-e environment]" + echo + echo "Options:" + echo " -b Branch to deploy" + echo " -s Service to deploy (manage-front, manage, front)" + echo " -e Environment (e.g., dev, prod)" + echo " -h Show this help message" +} -if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ];then - rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar -fi +# 解析命令行选项 +while getopts "b:s:e:h" opt; do + case $opt in + b) branch=$OPTARG ;; + s) service=$OPTARG ;; + e) env=$OPTARG ;; + h) show_help; exit 0 ;; + \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; + esac +done +echo "branch: $branch" +echo "service: $service" +echo "env: $env" -# 编译java -docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/java-build:jdk8-mvn3.6 ${baseDir}/k8s/build-java.sh +# 登录到目标环境 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + +# 拉取指定分支的最新代码 +echo "Checking out and pulling branch $branch..." +git checkout $branch if [ $? -ne 0 ]; then - echo "编译失败,请检查代码!" + echo "切换到分支 $branch 失败,请检查分支名称是否正确!" exit 1 fi -# 编译node -docker run -v ${baseDir}:${baseDir} -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh +git pull origin $branch if [ $? -ne 0 ]; then - echo "编译失败,请检查代码!" + echo "拉取代码失败,请检查网络或联系管理员!" exit 1 fi +# 创建目录 +mkdir -p ${baseDir}/k8s/dockerfiles/jar +mkdir -p ${baseDir}/k8s/dockerfiles/html -mkdir -p ${baseDir}/k8s/dockerfiles/jar -mkdir -p ${baseDir}/k8s/dockerfiles/html -# 复制jar包 -cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar -if [ $? -ne 0 ]; then - echo "复制jar包失败,请检查代码!" - exit 1 +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + # 清理前端构建文件 + if [ -d "${baseDir}/react-ui/dist" ]; then + rm -rf ${baseDir}/react-ui/dist + fi + + # 编译前端 + docker run -v ${baseDir}:${baseDir} \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制前端文件 + cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html + if [ $? -ne 0 ]; then + echo "复制html文件失败,请检查代码!" + exit 1 + fi fi -# 复制前端文件 -cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html -if [ $? -ne 0 ]; then - echo "复制html文件失败,请检查代码!" - exit 1 +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + # 清理java构建文件 + if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ]; then + rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar + fi + + # 编译java + docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制jar包 + cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar + if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 + fi fi -sh ${baseDir}/k8s/build_and_deploy_front_managenent.sh + + +# 记录结束时间 +end=$(date +%s) + +#计算运行时间 +runtime=$((end-start)) +echo "编译成功,耗时:$runtime 秒" diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh new file mode 100644 index 00000000..0a7b5aa0 --- /dev/null +++ b/k8s/build_and_deploy.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +#记录开始时间 +startTime=$(date +%s) + +# 登录到目标环境 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + + +#build +# 默认参数 +branch="master" +service="manage-front" +env="dev" + +# +show_help() { + echo "Usage: $0 [-b branch] [-s service] [-e environment]" + echo + echo "Options:" + echo " -b Branch to deploy" + echo " -s Service to deploy (manage-front, manage, front)" + echo " -e Environment (e.g., dev, prod)" + echo " -h Show this help message" +} + +# 解析命令行选项 +while getopts "b:s:e:h" opt; do + case $opt in + b) branch=$OPTARG ;; + s) service=$OPTARG ;; + e) env=$OPTARG ;; + h) show_help; exit 0 ;; + \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; + esac +done + +echo "start build" +sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service} +if [ $? -ne 0 ]; then + echo "Build failed" + exit 1 +fi +echo "build success" + +# 部署 +echo "start deploy" +sh ${baseDir}/k8s/deploy.sh -s ${service} -e ${env} +if [ $? -ne 0 ]; then + echo "Deploy failed" + exit 1 +fi +echo "deploy success" + +# 记录结束时间 +endTime=$(date +%s) +# 计算运行时间 +duration=$(( $endTime - $startTime )) +echo "编译发布总耗时: $duration 秒" \ No newline at end of file diff --git a/k8s/build_and_deploy_front_managenent.sh b/k8s/build_and_deploy_front_managenent.sh deleted file mode 100644 index 274a8463..00000000 --- a/k8s/build_and_deploy_front_managenent.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash - -bastDir=/home/somuns/ci4s -cd ${bastDir}/k8s/dockerfiles -mkdir -p ${bastDir}/k8s/template-yaml/deploy - -tag=$(date +'%Y%m%d%H%M') -managent=172.20.32.187/ci4s/managent:${tag} -front=172.20.32.187/ci4s/ci4s-front:${tag} - -docker build -t ${managent} -f managent-dockerfile . - -if [ "$?" -ne "0" ];then - echo "buid ${managent} image fail" - exit 1 -fi - -docker build -t ${front} -f nginx-dockerfile . - -if [ "$?" -ne "0" ];then - echo "buid ${front} image fail" - exit 2 -fi - -cd ${bastDir}/k8s/template-yaml - -cp -rf k8s-12front.yaml deploy/ -cp -rf k8s-7management.yaml deploy/ - -cd deploy/ - -#镜像替换 -sed -i "s#managenent-image#${managent}#g" k8s-7management.yaml -if [ "$?" -ne "0" ];then - echo "replace ${managent} image fail" - exit 3 -fi - - - -sed -i "s#front-image#${front}#g" k8s-12front.yaml - -if [ "$?" -ne "0" ];then - echo "replace ${front} image fail" - exit 4 -fi - - -docker push ${managent} -docker push ${front} - -kubectl apply -n argo -f k8s-7management.yaml - -if [ "$?" -ne "0" ];then - echo "deploy ${managent} image fail" - exit 5 -fi - - -kubectl apply -n argo -f k8s-12front.yaml - -if [ "$?" -ne "0" ];then - echo "buid ${front} image fail" - exit 6 -fi - - - diff --git a/k8s/new_deploy.sh b/k8s/deploy.sh similarity index 100% rename from k8s/new_deploy.sh rename to k8s/deploy.sh diff --git a/k8s/newbuild.sh b/k8s/newbuild.sh deleted file mode 100644 index dcdef4d9..00000000 --- a/k8s/newbuild.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash - -#记录开始时间 -start=$(date +%s) - -# 默认参数 -branch="master" -service="manage-front" -env="dev" - -# -show_help() { - echo "Usage: $0 [-b branch] [-s service] [-e environment]" - echo - echo "Options:" - echo " -b Branch to deploy" - echo " -s Service to deploy (manage-front, manage, front)" - echo " -e Environment (e.g., dev, prod)" - echo " -h Show this help message" -} - -# 解析命令行选项 -while getopts "b:s:e:h" opt; do - case $opt in - b) branch=$OPTARG ;; - s) service=$OPTARG ;; - e) env=$OPTARG ;; - h) show_help; exit 0 ;; - \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; - esac -done - -echo "branch: $branch" -echo "service: $service" -echo "env: $env" - -# 登录到目标环境 -baseDir="/home/somuns/ci4s" -cd ${baseDir} - -# 拉取指定分支的最新代码 -echo "Checking out and pulling branch $branch..." -git checkout $branch -if [ $? -ne 0 ]; then - echo "切换到分支 $branch 失败,请检查分支名称是否正确!" - exit 1 -fi - -git pull origin $branch -if [ $? -ne 0 ]; then - echo "拉取代码失败,请检查网络或联系管理员!" - exit 1 -fi - -# 创建目录 -mkdir -p ${baseDir}/k8s/dockerfiles/jar -mkdir -p ${baseDir}/k8s/dockerfiles/html - -if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then - # 清理前端构建文件 - if [ -d "${baseDir}/react-ui/dist" ]; then - rm -rf ${baseDir}/react-ui/dist - fi - - # 编译前端 - docker run -v ${baseDir}:${baseDir} \ - -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ - 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh - if [ $? -ne 0 ]; then - echo "编译失败,请检查代码!" - exit 1 - fi - - # 复制前端文件 - cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html - if [ $? -ne 0 ]; then - echo "复制html文件失败,请检查代码!" - exit 1 - fi -fi - -if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then - # 清理java构建文件 - if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ]; then - rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar - fi - - # 编译java - docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ - -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ - 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh - if [ $? -ne 0 ]; then - echo "编译失败,请检查代码!" - exit 1 - fi - - # 复制jar包 - cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar - if [ $? -ne 0 ]; then - echo "复制jar包失败,请检查代码!" - exit 1 - fi -fi - - -# 构建和部署 -sh ${baseDir}/k8s/new_deploy.sh -s $service -e $env -# 记录结束时间 -end=$(date +%s) - -#计算运行时间 -runtime=$((end-start)) -echo "编译和发布成功,耗时:$runtime 秒" From 6e4618c6f59ae10dc010621f4af34014350cae8d Mon Sep 17 00:00:00 2001 From: somunslotus Date: Tue, 11 Jun 2024 17:37:38 +0800 Subject: [PATCH 019/381] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- settings.xml | 274 ----------------------------------------------- settings.xml.bak | 257 -------------------------------------------- 2 files changed, 531 deletions(-) delete mode 100644 settings.xml delete mode 100644 settings.xml.bak diff --git a/settings.xml b/settings.xml deleted file mode 100644 index d0fe0f07..00000000 --- a/settings.xml +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - /home/maven/repository - - - - - - - - - - - - - - - - - - - - - - - - - - alimaven - aliyun maven - http://maven.aliyun.com/nexus/content/groups/public/ - central - - - - - - - - - myjdk - - true - 1.8 - - - 1.8 - 1.8 - 1.8 - - - - - - - - myjdk - - \ No newline at end of file diff --git a/settings.xml.bak b/settings.xml.bak deleted file mode 100644 index e27c579c..00000000 --- a/settings.xml.bak +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 69a51b95a93ab10973a9e462511415081ca66530 Mon Sep 17 00:00:00 2001 From: somunslotus Date: Wed, 12 Jun 2024 16:03:46 +0800 Subject: [PATCH 020/381] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/AAdeploy.sh | 142 ++++++++++++++++++ k8s/build-java.sh | 12 +- k8s/build.sh | 107 ++++++++----- k8s/build_and_deploy.sh | 2 +- k8s/deploy.sh | 20 ++- k8s/template-yaml/deploy/k8s-12front.yaml | 36 +++++ k8s/template-yaml/deploy/k8s-7management.yaml | 36 +++++ k8s/template-yaml/k8s-10gen.yaml | 36 +++++ k8s/template-yaml/k8s-11visual.yaml | 36 +++++ k8s/template-yaml/k8s-12front.yaml | 36 +++++ k8s/template-yaml/k8s-3nacos.yaml | 62 ++++++++ k8s/template-yaml/k8s-4gateway.yaml | 36 +++++ k8s/template-yaml/k8s-5auth.yaml | 36 +++++ k8s/template-yaml/k8s-6system.yaml | 36 +++++ k8s/template-yaml/k8s-7management.yaml | 36 +++++ k8s/template-yaml/k8s-8file.yaml | 36 +++++ k8s/template-yaml/k8s-9job.yaml | 36 +++++ 17 files changed, 697 insertions(+), 44 deletions(-) create mode 100644 k8s/AAdeploy.sh create mode 100644 k8s/template-yaml/deploy/k8s-12front.yaml create mode 100644 k8s/template-yaml/deploy/k8s-7management.yaml create mode 100644 k8s/template-yaml/k8s-10gen.yaml create mode 100644 k8s/template-yaml/k8s-11visual.yaml create mode 100644 k8s/template-yaml/k8s-12front.yaml create mode 100644 k8s/template-yaml/k8s-3nacos.yaml create mode 100644 k8s/template-yaml/k8s-4gateway.yaml create mode 100644 k8s/template-yaml/k8s-5auth.yaml create mode 100644 k8s/template-yaml/k8s-6system.yaml create mode 100644 k8s/template-yaml/k8s-7management.yaml create mode 100644 k8s/template-yaml/k8s-8file.yaml create mode 100644 k8s/template-yaml/k8s-9job.yaml diff --git a/k8s/AAdeploy.sh b/k8s/AAdeploy.sh new file mode 100644 index 00000000..e1b6dbfe --- /dev/null +++ b/k8s/AAdeploy.sh @@ -0,0 +1,142 @@ +#!/bin/bash + +# 记录开始时间 +start=$(date +%s) +# 默认参数 +service="manage-front" +env="dev" + +show_help() { + echo "Usage: $0 [-s service] [-e environment]" + echo + echo "Options:" + echo " -s Service to deploy (manage-front, manage, front, all default: manage-front)" + echo " -e Environment (e.g., dev, test, default: dev)" + echo " -h Show this help message" +} + +# 解析命令行参数 +while getopts "s:e:h" opt; do + case $opt in + s) service=$OPTARG ;; + e) env=$OPTARG ;; + h) show_help; exit 0 ;; + \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;; + esac +done + +echo "Deploy service: $service, environment: $env" + +# 根据环境设置 IP 地址 +if [ "$env" == "dev" ]; then + remote_ip="172.20.32.181" +elif [ "$env" == "test" ]; then + remote_ip="172.20.32.185" +else + echo "Invalid environment - $env" + exit 1 +fi + +baseDir=/home/somuns/ci4s +tag=$(date +'%Y%m%d%H%M') +remote_deploy_dir=/home/deploy/manage-platform + +# 构建镜像函数 +build_image() { + local dockerfile=$1 + local image=$2 + cd ${baseDir}/k8s/dockerfiles + docker build -t ${image} -f ${dockerfile} . + if [ $? -ne 0 ]; then + echo "Build ${image} image fail" + exit 1 + fi + docker push ${image} +} + +# 复制和替换 YAML 文件函数 +prepare_yaml() { + local yaml_file=$1 + local image=$2 + + placeholder="\${${yaml_file%.yaml}-image}" + cd ${baseDir}/k8s/template-yaml + cp -rf ${yaml_file} deploy/ + cd deploy/ + sed -i "s|${placeholder}|${image}|g" ${yaml_file} + if [ $? -ne 0 ]; then + echo "Replace ${image} image fail" + exit 1 + fi + + # 建立远程目录并备份文件 + ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${yaml_file} ]; then mv ${remote_deploy_dir}/${yaml_file} ${remote_deploy_dir}/${yaml_file}.bak; fi" + if [ $? -ne 0 ]; then + echo "Failed to create remote directory or backup ${yaml_file}" + exit 1 + else + echo "Successfully created remote directory and backup ${yaml_file}" + fi + + scp ${baseDir}/k8s/template-yaml/deploy/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file} + if [ $? -ne 0 ]; then + echo "Failed to copy ${yaml_file}" + exit 1 + else + echo "Successfully copied ${yaml_file}" + fi +} + +# 部署服务函数 +deploy_service() { + local yaml_file=$1 + ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${yaml_file}" + if [ $? -ne 0 ]; then + echo "Failed to deploy ${yaml_file}" + exit 1 + else + echo "Successfully deployed ${yaml_file}" + fi +} + +deploy_nacos() { + local yaml_file=$1 + scp ${baseDir}/k8s/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file} + deploy_service +} + +build_and_deploy() { + local dockerfile=$1 + local image=$2 + local yaml_file=$3 + + build_image ${dockerfile} ${image} + prepare_yaml ${yaml_file} ${image} + deploy_service ${yaml_file} +} + +# 构建和部署 manage 服务 +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" +fi + + +# 构建和部署 front 服务 +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" +fi + + +if [ "$service" == "all" ]; then + build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" + build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" + build_and_deploy "auth-dockerfile" "172.20.32.187/ci4s/ci4s-auth:${tag}" "k8s-5auth.yaml" + build_and_deploy "gateway-dockerfile" "172.20.32.187/ci4s/ci4s-gateway:${tag}" "k8s-4gateway.yaml" + build_and_deploy "system-dockerfile" "172.20.32.187/ci4s/ci4s-system:${tag}" "k8s-6system.yaml" + deploy_nacos "k8s-3nacos.yaml" +fi + + +# 记录结束时间 +end=$(date +%s) +echo "部署成功, 耗时: $((end-start))秒" diff --git a/k8s/build-java.sh b/k8s/build-java.sh index 2f9e1d7b..66ddbecc 100644 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -1,9 +1,16 @@ #!/bin/bash baseDir="/home/somuns/ci4s" -cd $baseDir && mvn clean install +#判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块 +if [ "$1" == "all" ]; then + buildDir=$baseDir +else + buildDir="$baseDir/ruoyi-modules/management-platform" +fi + +echo "Building $buildDir" +cd $buildDir && mvn clean install -#cd ${baseDir}/ruoyi-modules && mvn install if [ $? -ne 0 ]; then echo "Failed to build ruoyi-modules" exit 1 @@ -15,3 +22,4 @@ fi + diff --git a/k8s/build.sh b/k8s/build.sh index 3d1d49ac..31c9d8a0 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -6,16 +6,14 @@ start=$(date +%s) # 默认参数 branch="master" service="manage-front" -env="dev" -# + show_help() { - echo "Usage: $0 [-b branch] [-s service] [-e environment]" + echo "Usage: $0 [-b branch] [-s service]" echo echo "Options:" - echo " -b Branch to deploy" - echo " -s Service to deploy (manage-front, manage, front)" - echo " -e Environment (e.g., dev, prod)" + echo " -b Branch to deploy, default is master" + echo " -s Service to deploy (manage-front, manage, front, all, default is manage-front)" echo " -h Show this help message" } @@ -24,7 +22,6 @@ while getopts "b:s:e:h" opt; do case $opt in b) branch=$OPTARG ;; s) service=$OPTARG ;; - e) env=$OPTARG ;; h) show_help; exit 0 ;; \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; esac @@ -32,7 +29,7 @@ done echo "branch: $branch" echo "service: $service" -echo "env: $env" + # 登录到目标环境 baseDir="/home/somuns/ci4s" @@ -56,39 +53,35 @@ fi mkdir -p ${baseDir}/k8s/dockerfiles/jar mkdir -p ${baseDir}/k8s/dockerfiles/html -if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then - # 清理前端构建文件 - if [ -d "${baseDir}/react-ui/dist" ]; then - rm -rf ${baseDir}/react-ui/dist - fi - - # 编译前端 - docker run -v ${baseDir}:${baseDir} \ - -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ - 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh - if [ $? -ne 0 ]; then - echo "编译失败,请检查代码!" - exit 1 - fi - - # 复制前端文件 - cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html - if [ $? -ne 0 ]; then - echo "复制html文件失败,请检查代码!" - exit 1 - fi -fi - -if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then - # 清理java构建文件 - if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ]; then - rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar - fi +compile_front() { + # 清理前端构建文件 + if [ -d "${baseDir}/react-ui/dist" ]; then + rm -rf ${baseDir}/react-ui/dist + fi + + # 编译前端 + docker run -v ${baseDir}:${baseDir} \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制前端文件 + cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html + if [ $? -ne 0 ]; then + echo "复制html文件失败,请检查代码!" + exit 1 + fi +} - # 编译java +compile_java() { + param=$1 + # 编译java docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ - 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh + 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh $param if [ $? -ne 0 ]; then echo "编译失败,请检查代码!" exit 1 @@ -100,9 +93,47 @@ if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then echo "复制jar包失败,请检查代码!" exit 1 fi + + if [ "$param" == "all" ]; then + cp -rf ${baseDir}/ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar ${baseDir}/k8s/dockerfiles/jar/ruoyi-modules-system.jar + if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 + fi + + cp -rf ${baseDir}/ruoyi-auth/target/ruoyi-auth.jar ${baseDir}/k8s/dockerfiles/jar/ruoyi-auth.jar + if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 + fi + + cp -rf ${baseDir}/ruoyi-gateway/target/ruoyi-gateway.jar ${baseDir}/k8s/dockerfiles/jar/ruoyi-gateway.jar + if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 + fi + fi +} + +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + # 编译前端 + compile_front fi +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + # 编译java + compile_java $service +fi + +if [ "$service" == "all" ]; then + # 编译前端 + compile_front + + # 编译java + compile_java "all" +fi + # 记录结束时间 end=$(date +%s) diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index 0a7b5aa0..4c6ecaef 100644 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -46,7 +46,7 @@ echo "build success" # 部署 echo "start deploy" -sh ${baseDir}/k8s/deploy.sh -s ${service} -e ${env} +sh ${baseDir}/k8s/AAdeploy.sh -s ${service} -e ${env} if [ $? -ne 0 ]; then echo "Deploy failed" exit 1 diff --git a/k8s/deploy.sh b/k8s/deploy.sh index 785f34cc..899e45dc 100644 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -6,11 +6,21 @@ start=$(date +%s) service="manage-front" env="dev" +show_help() { + echo "Usage: $0 [-s service] [-e environment]" + echo + echo "Options:" + echo " -s Service to deploy (manage-front, manage, front, all ,default: manage-front)" + echo " -e Environment (e.g., dev, test, default: dev)" + echo " -h Show this help message" +} + # 解析命令行参数 -while getopts "s:e:" opt; do +while getopts "s:e:h" opt; do case $opt in s) service=$OPTARG ;; e) env=$OPTARG ;; + h) show_help; exit 0 ;; \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;; esac done @@ -52,7 +62,9 @@ if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then cp -rf ${manager_yaml} deploy/ # 镜像替换 cd deploy/ - sed -i "s#managenent-image#${managent}#g" ${manager_yaml} + placeholder="\${k8s-7management-image}" + #sed -i "s#managenent-image#${managent}#g" ${manager_yaml} + sed -i "s#$placeholder#${managent}#g" ${manager_yaml} if [ "$?" -ne "0" ];then echo "replace ${managent} image fail" exit 3 @@ -93,7 +105,9 @@ if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then # 镜像替换 cd deploy/ - sed -i "s#front-image#${front}#g" ${front_yaml} + placeholder="\${k8s-12front-image}" + #sed -i "s#front-image#${front}#g" ${front_yaml} + sed -i "s#$placeholder#${front}#g" ${front_yaml} if [ "$?" -ne "0" ];then echo "replace ${front} image fail" exit 4 diff --git a/k8s/template-yaml/deploy/k8s-12front.yaml b/k8s/template-yaml/deploy/k8s-12front.yaml new file mode 100644 index 00000000..565b12ec --- /dev/null +++ b/k8s/template-yaml/deploy/k8s-12front.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-front-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-front + template: + metadata: + labels: + app: ci4s-front + spec: + containers: + - name: ci4s-front + image: 172.20.32.187/ci4s/ci4s-front:202406120836 + ports: + - containerPort: 8000 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-front-service + namespace: argo +spec: + type: NodePort + ports: + - port: 8000 + nodePort: 31213 + protocol: TCP + selector: + app: ci4s-front + diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml new file mode 100644 index 00000000..d92c2d68 --- /dev/null +++ b/k8s/template-yaml/deploy/k8s-7management.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-management-platform-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-management-platform + template: + metadata: + labels: + app: ci4s-management-platform + spec: + containers: + - name: ci4s-management-platform + image: 172.20.32.187/ci4s/managent:202406121003 + ports: + - containerPort: 9213 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-management-platform-service + namespace: argo +spec: + type: NodePort + ports: + - port: 9213 + nodePort: 31208 + protocol: TCP + selector: + app: ci4s-management-platform + diff --git a/k8s/template-yaml/k8s-10gen.yaml b/k8s/template-yaml/k8s-10gen.yaml new file mode 100644 index 00000000..f9ae8b2f --- /dev/null +++ b/k8s/template-yaml/k8s-10gen.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-gen-deployment + namespace: ci4s-test +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-gen + template: + metadata: + labels: + app: ci4s-gen + spec: + containers: + - name: ci4s-gen + image: ${k8s-10gen-image} + ports: + - containerPort: 9202 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-gen-service + namespace: ci4s-test +spec: + type: NodePort + ports: + - port: 9202 + nodePort: 31211 + protocol: TCP + selector: + app: ci4s-gen + diff --git a/k8s/template-yaml/k8s-11visual.yaml b/k8s/template-yaml/k8s-11visual.yaml new file mode 100644 index 00000000..d479429e --- /dev/null +++ b/k8s/template-yaml/k8s-11visual.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-visual-deployment + namespace: ci4s-test +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-visual + template: + metadata: + labels: + app: ci4s-visual + spec: + containers: + - name: ci4s-visual + image: ${k8s-11visual-image} + ports: + - containerPort: 9100 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-visual-service + namespace: ci4s-test +spec: + type: NodePort + ports: + - port: 9100 + nodePort: 31212 + protocol: TCP + selector: + app: ci4s-visual + diff --git a/k8s/template-yaml/k8s-12front.yaml b/k8s/template-yaml/k8s-12front.yaml new file mode 100644 index 00000000..d37274e7 --- /dev/null +++ b/k8s/template-yaml/k8s-12front.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-front-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-front + template: + metadata: + labels: + app: ci4s-front + spec: + containers: + - name: ci4s-front + image: ${k8s-12front-image} + ports: + - containerPort: 8000 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-front-service + namespace: argo +spec: + type: NodePort + ports: + - port: 8000 + nodePort: 31213 + protocol: TCP + selector: + app: ci4s-front + diff --git a/k8s/template-yaml/k8s-3nacos.yaml b/k8s/template-yaml/k8s-3nacos.yaml new file mode 100644 index 00000000..f2d891b6 --- /dev/null +++ b/k8s/template-yaml/k8s-3nacos.yaml @@ -0,0 +1,62 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: argo + name: nacos-ci4s + labels: + app: nacos-ci4s +spec: + replicas: 1 + selector: + matchLabels: + app: nacos-ci4s + template: + metadata: + labels: + app: nacos-ci4s + spec: + containers: + - name: nacos-ci4s + image: ${k8s-3nacos-image} + env: + - name: SPRING_DATASOURCE_PLATFORM + value: mysql + - name: MODE + value: standalone + - name: MYSQL_SERVICE_HOST + value: mysql2.argo.svc + - name: MYSQL_SERVICE_PORT + value: "3306" + - name: MYSQL_SERVICE_DB_NAME + value: nacos-ci4s-config + - name: MYSQL_SERVICE_USER + value: root + - name: MYSQL_SERVICE_PASSWORD + value: qazxc123456. + ports: + - containerPort: 8848 + - containerPort: 9848 + restartPolicy: Always + +--- + +apiVersion: v1 +kind: Service +metadata: + namespace: argo + name: nacos-ci4s + labels: + app: nacos-ci4s +spec: + type: NodePort + selector: + app: nacos-ci4s + ports: + - port: 8848 + targetPort: 8848 + nodePort: 31203 + name: web + - port: 9848 + targetPort: 9848 + nodePort: 31204 + name: podsa diff --git a/k8s/template-yaml/k8s-4gateway.yaml b/k8s/template-yaml/k8s-4gateway.yaml new file mode 100644 index 00000000..261dfa92 --- /dev/null +++ b/k8s/template-yaml/k8s-4gateway.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-gateway-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-gateway + template: + metadata: + labels: + app: ci4s-gateway + spec: + containers: + - name: ci4s-gateway + image: ${k8s-4gateway-image} + ports: + - containerPort: 8082 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-gateway-service + namespace: argo +spec: + type: NodePort + ports: + - port: 8082 + nodePort: 31205 + protocol: TCP + selector: + app: ci4s-gateway + diff --git a/k8s/template-yaml/k8s-5auth.yaml b/k8s/template-yaml/k8s-5auth.yaml new file mode 100644 index 00000000..05a5f973 --- /dev/null +++ b/k8s/template-yaml/k8s-5auth.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-auth-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-auth + template: + metadata: + labels: + app: ci4s-auth + spec: + containers: + - name: ci4s-auth + image: ${k8s-5auth-image} + ports: + - containerPort: 9200 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-auth-service + namespace: argo +spec: + type: NodePort + ports: + - port: 9200 + nodePort: 31206 + protocol: TCP + selector: + app: ci4s-auth + diff --git a/k8s/template-yaml/k8s-6system.yaml b/k8s/template-yaml/k8s-6system.yaml new file mode 100644 index 00000000..cc17e5ea --- /dev/null +++ b/k8s/template-yaml/k8s-6system.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-system-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-system + template: + metadata: + labels: + app: ci4s-system + spec: + containers: + - name: ci4s-system + image: ${k8s-6system-image} + ports: + - containerPort: 9201 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-system-service + namespace: argo +spec: + type: NodePort + ports: + - port: 9201 + nodePort: 31207 + protocol: TCP + selector: + app: ci4s-system + diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml new file mode 100644 index 00000000..7e39f6f2 --- /dev/null +++ b/k8s/template-yaml/k8s-7management.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-management-platform-deployment + namespace: argo +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-management-platform + template: + metadata: + labels: + app: ci4s-management-platform + spec: + containers: + - name: ci4s-management-platform + image: ${k8s-7management-image} + ports: + - containerPort: 9213 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-management-platform-service + namespace: argo +spec: + type: NodePort + ports: + - port: 9213 + nodePort: 31208 + protocol: TCP + selector: + app: ci4s-management-platform + diff --git a/k8s/template-yaml/k8s-8file.yaml b/k8s/template-yaml/k8s-8file.yaml new file mode 100644 index 00000000..bcd2fd01 --- /dev/null +++ b/k8s/template-yaml/k8s-8file.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-file-deployment + namespace: ci4s-test +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-file + template: + metadata: + labels: + app: ci4s-file + spec: + containers: + - name: ci4s-file + image: ${k8s-8file-image} + ports: + - containerPort: 9300 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-file-service + namespace: ci4s-test +spec: + type: NodePort + ports: + - port: 9300 + nodePort: 31209 + protocol: TCP + selector: + app: ci4s-file + diff --git a/k8s/template-yaml/k8s-9job.yaml b/k8s/template-yaml/k8s-9job.yaml new file mode 100644 index 00000000..1a262cab --- /dev/null +++ b/k8s/template-yaml/k8s-9job.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ci4s-job-deployment + namespace: ci4s-test +spec: + replicas: 1 + selector: + matchLabels: + app: ci4s-job + template: + metadata: + labels: + app: ci4s-job + spec: + containers: + - name: ci4s-job + image: ${k8s-9job-image} + ports: + - containerPort: 9203 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ci4s-job-service + namespace: ci4s-test +spec: + type: NodePort + ports: + - port: 9203 + nodePort: 31210 + protocol: TCP + selector: + app: ci4s-job + From e88bfd3461a31b8b8acabfd80abd5322b22e8650 Mon Sep 17 00:00:00 2001 From: somunslotus Date: Wed, 12 Jun 2024 17:06:58 +0800 Subject: [PATCH 021/381] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=84=9A=E6=9C=ACbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/AAdeploy.sh | 142 ------------------------------------- k8s/build_and_deploy.sh | 8 +-- k8s/deploy.sh | 153 +++++++++++++++++++++------------------- 3 files changed, 84 insertions(+), 219 deletions(-) delete mode 100644 k8s/AAdeploy.sh diff --git a/k8s/AAdeploy.sh b/k8s/AAdeploy.sh deleted file mode 100644 index e1b6dbfe..00000000 --- a/k8s/AAdeploy.sh +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/bash - -# 记录开始时间 -start=$(date +%s) -# 默认参数 -service="manage-front" -env="dev" - -show_help() { - echo "Usage: $0 [-s service] [-e environment]" - echo - echo "Options:" - echo " -s Service to deploy (manage-front, manage, front, all default: manage-front)" - echo " -e Environment (e.g., dev, test, default: dev)" - echo " -h Show this help message" -} - -# 解析命令行参数 -while getopts "s:e:h" opt; do - case $opt in - s) service=$OPTARG ;; - e) env=$OPTARG ;; - h) show_help; exit 0 ;; - \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;; - esac -done - -echo "Deploy service: $service, environment: $env" - -# 根据环境设置 IP 地址 -if [ "$env" == "dev" ]; then - remote_ip="172.20.32.181" -elif [ "$env" == "test" ]; then - remote_ip="172.20.32.185" -else - echo "Invalid environment - $env" - exit 1 -fi - -baseDir=/home/somuns/ci4s -tag=$(date +'%Y%m%d%H%M') -remote_deploy_dir=/home/deploy/manage-platform - -# 构建镜像函数 -build_image() { - local dockerfile=$1 - local image=$2 - cd ${baseDir}/k8s/dockerfiles - docker build -t ${image} -f ${dockerfile} . - if [ $? -ne 0 ]; then - echo "Build ${image} image fail" - exit 1 - fi - docker push ${image} -} - -# 复制和替换 YAML 文件函数 -prepare_yaml() { - local yaml_file=$1 - local image=$2 - - placeholder="\${${yaml_file%.yaml}-image}" - cd ${baseDir}/k8s/template-yaml - cp -rf ${yaml_file} deploy/ - cd deploy/ - sed -i "s|${placeholder}|${image}|g" ${yaml_file} - if [ $? -ne 0 ]; then - echo "Replace ${image} image fail" - exit 1 - fi - - # 建立远程目录并备份文件 - ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${yaml_file} ]; then mv ${remote_deploy_dir}/${yaml_file} ${remote_deploy_dir}/${yaml_file}.bak; fi" - if [ $? -ne 0 ]; then - echo "Failed to create remote directory or backup ${yaml_file}" - exit 1 - else - echo "Successfully created remote directory and backup ${yaml_file}" - fi - - scp ${baseDir}/k8s/template-yaml/deploy/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file} - if [ $? -ne 0 ]; then - echo "Failed to copy ${yaml_file}" - exit 1 - else - echo "Successfully copied ${yaml_file}" - fi -} - -# 部署服务函数 -deploy_service() { - local yaml_file=$1 - ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${yaml_file}" - if [ $? -ne 0 ]; then - echo "Failed to deploy ${yaml_file}" - exit 1 - else - echo "Successfully deployed ${yaml_file}" - fi -} - -deploy_nacos() { - local yaml_file=$1 - scp ${baseDir}/k8s/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file} - deploy_service -} - -build_and_deploy() { - local dockerfile=$1 - local image=$2 - local yaml_file=$3 - - build_image ${dockerfile} ${image} - prepare_yaml ${yaml_file} ${image} - deploy_service ${yaml_file} -} - -# 构建和部署 manage 服务 -if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then - build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" -fi - - -# 构建和部署 front 服务 -if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then - build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" -fi - - -if [ "$service" == "all" ]; then - build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" - build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" - build_and_deploy "auth-dockerfile" "172.20.32.187/ci4s/ci4s-auth:${tag}" "k8s-5auth.yaml" - build_and_deploy "gateway-dockerfile" "172.20.32.187/ci4s/ci4s-gateway:${tag}" "k8s-4gateway.yaml" - build_and_deploy "system-dockerfile" "172.20.32.187/ci4s/ci4s-system:${tag}" "k8s-6system.yaml" - deploy_nacos "k8s-3nacos.yaml" -fi - - -# 记录结束时间 -end=$(date +%s) -echo "部署成功, 耗时: $((end-start))秒" diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index 4c6ecaef..0f7ebbcb 100644 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -19,9 +19,9 @@ show_help() { echo "Usage: $0 [-b branch] [-s service] [-e environment]" echo echo "Options:" - echo " -b Branch to deploy" - echo " -s Service to deploy (manage-front, manage, front)" - echo " -e Environment (e.g., dev, prod)" + echo " -b Branch to deploy, default: master" + echo " -s Service to deploy (manage-front, manage, front, all, default: manage-front)" + echo " -e Environment (e.g., dev, test, default: dev)" echo " -h Show this help message" } @@ -46,7 +46,7 @@ echo "build success" # 部署 echo "start deploy" -sh ${baseDir}/k8s/AAdeploy.sh -s ${service} -e ${env} +sh ${baseDir}/k8s/deploy.sh -s ${service} -e ${env} if [ $? -ne 0 ]; then echo "Deploy failed" exit 1 diff --git a/k8s/deploy.sh b/k8s/deploy.sh index 899e45dc..c9d296f9 100644 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -10,7 +10,7 @@ show_help() { echo "Usage: $0 [-s service] [-e environment]" echo echo "Options:" - echo " -s Service to deploy (manage-front, manage, front, all ,default: manage-front)" + echo " -s Service to deploy (manage-front, manage, front, all default: manage-front)" echo " -e Environment (e.g., dev, test, default: dev)" echo " -h Show this help message" } @@ -25,7 +25,8 @@ while getopts "s:e:h" opt; do esac done -echo "deploy service: $service, env: $env" +echo "Deploy service: $service, environment: $env" + # 根据环境设置 IP 地址 if [ "$env" == "dev" ]; then remote_ip="172.20.32.181" @@ -37,102 +38,108 @@ else fi baseDir=/home/somuns/ci4s -cd ${baseDir}/k8s/dockerfiles -mkdir -p ${baseDir}/k8s/template-yaml/deploy - tag=$(date +'%Y%m%d%H%M') -managent=172.20.32.187/ci4s/managent:${tag} -front=172.20.32.187/ci4s/ci4s-front:${tag} - remote_deploy_dir=/home/deploy/manage-platform -manager_yaml=k8s-7management.yaml -front_yaml=k8s-12front.yaml -# 构建 manage 镜像 -if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then +# 构建镜像函数 +build_image() { + local dockerfile=$1 + local image=$2 cd ${baseDir}/k8s/dockerfiles - docker build -t ${managent} -f managent-dockerfile . - if [ "$?" -ne "0" ]; then - echo "build ${managent} image fail" + docker build -t ${image} -f ${dockerfile} . + if [ $? -ne 0 ]; then + echo "Build ${image} image fail" exit 1 fi + docker push ${image} +} + +# 复制和替换 YAML 文件函数 +prepare_yaml() { + local yaml_file=$1 + local image=$2 + placeholder="\${${yaml_file%.yaml}-image}" cd ${baseDir}/k8s/template-yaml - # 复制 YAML 文件 - cp -rf ${manager_yaml} deploy/ - # 镜像替换 + cp -rf ${yaml_file} deploy/ cd deploy/ - placeholder="\${k8s-7management-image}" - #sed -i "s#managenent-image#${managent}#g" ${manager_yaml} - sed -i "s#$placeholder#${managent}#g" ${manager_yaml} - if [ "$?" -ne "0" ];then - echo "replace ${managent} image fail" - exit 3 + sed -i "s|${placeholder}|${image}|g" ${yaml_file} + if [ $? -ne 0 ]; then + echo "Replace ${image} image fail" + exit 1 fi - # 推送镜像 - docker push ${managent} - # 部署服务 - ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${manager_yaml} ]; then mv ${remote_deploy_dir}/${manager_yaml} ${remote_deploy_dir}/k8s-7management.yaml.bak; fi" - scp ${baseDir}/k8s/template-yaml/deploy/${manager_yaml} root@$remote_ip:${remote_deploy_dir}/${manager_yaml} + + # 建立远程目录并备份文件 + ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${yaml_file} ]; then mv ${remote_deploy_dir}/${yaml_file} ${remote_deploy_dir}/${yaml_file}.bak; fi" if [ $? -ne 0 ]; then - echo "Failed to copy ${managent} yaml file" + echo "Failed to create remote directory or backup ${yaml_file}" exit 1 else - echo "Successfully copied ${managent} yaml file" + echo "Successfully created remote directory and backup ${yaml_file}" fi - ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${manager_yaml}" + + scp ${baseDir}/k8s/template-yaml/deploy/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file} if [ $? -ne 0 ]; then - echo "Failed to deploy ${managent} image" + echo "Failed to copy ${yaml_file}" exit 1 else - echo "Successfully deployed ${managent} image" + echo "Successfully copied ${yaml_file}" fi -fi - +} -# 构建 front 镜像 -if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then - cd ${baseDir}/k8s/dockerfiles - docker build -t ${front} -f nginx-dockerfile . - if [ "$?" -ne "0" ];then - echo "build ${front} image fail" - exit 2 +# 部署服务函数 +deploy_service() { + local yaml_file=$1 + ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${yaml_file}" + if [ $? -ne 0 ]; then + echo "Failed to deploy ${yaml_file}" + exit 1 + else + echo "Successfully deployed ${yaml_file}" fi +} - # 复制 YAML 文件 - cd ${baseDir}/k8s/template-yaml - cp -rf ${front_yaml} deploy/ +deploy_nacos() { + local yaml_file=$1 + scp ${baseDir}/k8s/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file} + deploy_service ${yaml_file} +} - # 镜像替换 - cd deploy/ - placeholder="\${k8s-12front-image}" - #sed -i "s#front-image#${front}#g" ${front_yaml} - sed -i "s#$placeholder#${front}#g" ${front_yaml} - if [ "$?" -ne "0" ];then - echo "replace ${front} image fail" - exit 4 - fi +build_and_deploy() { + local dockerfile=$1 + local image=$2 + local yaml_file=$3 + + build_image ${dockerfile} ${image} + prepare_yaml ${yaml_file} ${image} + deploy_service ${yaml_file} +} + +# 构建和部署 manage 服务 +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" +fi - # 镜像推送 - docker push ${front} +# 构建和部署 front 服务 +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" +fi - #部署服务 - ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${front_yaml} ]; then mv ${remote_deploy_dir}/${front_yaml} ${remote_deploy_dir}/k8s-12front.yaml.bak; fi" - scp ${baseDir}/k8s/template-yaml/deploy/${front_yaml} root@$remote_ip:${remote_deploy_dir}/${front_yaml} - if [ $? -ne 0 ]; then - echo "Failed to copy ${managent} yaml file" - exit 1 - else - echo "Successfully copied ${managent} yaml file" - fi - ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${front_yaml}" - if [ $? -ne 0 ]; then - echo "Failed to deploy ${front} image" - exit 1 - else - echo "Successfully deployed ${front} image" - fi + +if [ "$service" == "all" ]; then + #部署前端 + build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" + #部署管理平台 + build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" + #部署认证中心 + build_and_deploy "auth-dockerfile" "172.20.32.187/ci4s/ci4s-auth:${tag}" "k8s-5auth.yaml" + #部署网关 + build_and_deploy "gateway-dockerfile" "172.20.32.187/ci4s/ci4s-gateway:${tag}" "k8s-4gateway.yaml" + #部署系统服务 + build_and_deploy "system-dockerfile" "172.20.32.187/ci4s/ci4s-system:${tag}" "k8s-6system.yaml" + #部署配置中心 + deploy_nacos "k8s-3nacos.yaml" fi From 0af15f819cba0d9f3121a67164e46cc539c6971d Mon Sep 17 00:00:00 2001 From: somunslotus Date: Wed, 12 Jun 2024 17:16:00 +0800 Subject: [PATCH 022/381] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dnacos=20yaml=E6=96=87?= =?UTF-8?q?=E4=BB=B6bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/k8s-3nacos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/k8s-3nacos.yaml b/k8s/k8s-3nacos.yaml index 874efca9..0c293016 100644 --- a/k8s/k8s-3nacos.yaml +++ b/k8s/k8s-3nacos.yaml @@ -24,7 +24,7 @@ spec: - name: MODE value: standalone - name: MYSQL_SERVICE_HOST - value: mysql2.argo.svc + value: mysql.argo.svc - name: MYSQL_SERVICE_PORT value: "3306" - name: MYSQL_SERVICE_DB_NAME From e32035711d1d8d10fafc252202f677706ec10991 Mon Sep 17 00:00:00 2001 From: somunslotus Date: Thu, 13 Jun 2024 10:00:48 +0800 Subject: [PATCH 023/381] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=EF=BC=8C=E4=BF=AE=E6=94=B9dockerhub=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E4=B8=BA=E7=A7=81=E6=9C=89=E4=BB=93=E5=BA=93=E9=95=9C?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 ++++- k8s/build.sh | 8 +++++++- k8s/build_and_deploy.sh | 14 ++++++++++++++ k8s/deploy.sh | 14 ++++++++++++++ k8s/dockerfiles/auth-dockerfile | 3 ++- k8s/dockerfiles/file-dockerfile | 3 ++- k8s/dockerfiles/gateway-dockerfile | 3 ++- k8s/dockerfiles/gen-dockerfile | 3 ++- k8s/dockerfiles/job-dockerfile | 3 ++- k8s/dockerfiles/managent-dockerfile | 3 ++- k8s/dockerfiles/nginx-dockerfile | 3 ++- k8s/dockerfiles/system-dockerfile | 3 ++- k8s/dockerfiles/visual-dockerfile | 3 ++- 13 files changed, 57 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 0203dc65..0014ee8f 100644 --- a/.gitignore +++ b/.gitignore @@ -51,4 +51,7 @@ mvnw.cmd mvnw # Files or folders need to be retained -# ... \ No newline at end of file +# ... +/k8s/template-yaml/deploy/ +/k8s/dockerfiles/html/ +/k8s/dockerfiles/jar diff --git a/k8s/build.sh b/k8s/build.sh index 31c9d8a0..c9d46265 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -18,7 +18,7 @@ show_help() { } # 解析命令行选项 -while getopts "b:s:e:h" opt; do +while getopts "b:s:h" opt; do case $opt in b) branch=$OPTARG ;; s) service=$OPTARG ;; @@ -30,6 +30,12 @@ done echo "branch: $branch" echo "service: $service" +valid_services=("manage-front" "manage" "front" "all") +if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then + echo "Invalid service name: $service" >&2 + echo "Valid services are: ${valid_services[*]}" + exit 1 +fi # 登录到目标环境 baseDir="/home/somuns/ci4s" diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index 0f7ebbcb..eacc9c6b 100644 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -36,6 +36,20 @@ while getopts "b:s:e:h" opt; do esac done +valid_services=("manage-front" "manage" "front" "all") +if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then + echo "Invalid service name: $service" >&2 + echo "Valid services are: ${valid_services[*]}" + exit 1 +fi + +valid_envs=("dev" "test") +if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then + echo "Invalid environment: $env" >&2 + echo "Valid environments are: ${valid_envs[*]}" + exit 1 +fi + echo "start build" sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service} if [ $? -ne 0 ]; then diff --git a/k8s/deploy.sh b/k8s/deploy.sh index c9d296f9..a9fe57f8 100644 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -27,6 +27,20 @@ done echo "Deploy service: $service, environment: $env" +valid_services=("manage-front" "manage" "front" "all") +if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then + echo "Invalid service name: $service" >&2 + echo "Valid services are: ${valid_services[*]}" + exit 1 +fi + +valid_envs=("dev" "test") +if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then + echo "Invalid environment: $env" >&2 + echo "Valid environments are: ${valid_envs[*]}" + exit 1 +fi + # 根据环境设置 IP 地址 if [ "$env" == "dev" ]; then remote_ip="172.20.32.181" diff --git a/k8s/dockerfiles/auth-dockerfile b/k8s/dockerfiles/auth-dockerfile index 40c54603..0eb3dc52 100644 --- a/k8s/dockerfiles/auth-dockerfile +++ b/k8s/dockerfiles/auth-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/file-dockerfile b/k8s/dockerfiles/file-dockerfile index 0d6e0258..d5a2b843 100644 --- a/k8s/dockerfiles/file-dockerfile +++ b/k8s/dockerfiles/file-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre +#FROM openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/gateway-dockerfile b/k8s/dockerfiles/gateway-dockerfile index 6082ce2d..4ce7ee42 100644 --- a/k8s/dockerfiles/gateway-dockerfile +++ b/k8s/dockerfiles/gateway-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/gen-dockerfile b/k8s/dockerfiles/gen-dockerfile index 0693b1d7..8c871a89 100644 --- a/k8s/dockerfiles/gen-dockerfile +++ b/k8s/dockerfiles/gen-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/job-dockerfile b/k8s/dockerfiles/job-dockerfile index 028a6526..dca8596c 100644 --- a/k8s/dockerfiles/job-dockerfile +++ b/k8s/dockerfiles/job-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile index 9df2566d..c4a1b85f 100644 --- a/k8s/dockerfiles/managent-dockerfile +++ b/k8s/dockerfiles/managent-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/nginx-dockerfile b/k8s/dockerfiles/nginx-dockerfile index 378afcac..42e9891a 100644 --- a/k8s/dockerfiles/nginx-dockerfile +++ b/k8s/dockerfiles/nginx-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM nginx:latest +#FROM nginx:latest +FROM 172.20.32.187/ci4s/nginx:latest # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/system-dockerfile b/k8s/dockerfiles/system-dockerfile index f57952b0..f01b3c34 100644 --- a/k8s/dockerfiles/system-dockerfile +++ b/k8s/dockerfiles/system-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/visual-dockerfile b/k8s/dockerfiles/visual-dockerfile index 3549bacc..34ba71b9 100644 --- a/k8s/dockerfiles/visual-dockerfile +++ b/k8s/dockerfiles/visual-dockerfile @@ -1,5 +1,6 @@ # 基础镜像 -FROM openjdk:8-jre +#FROM openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk:8-jre # author MAINTAINER ruoyi From 9e1b8a75350c8467ec5119de148ac66133d65357 Mon Sep 17 00:00:00 2001 From: somunslotus Date: Thu, 13 Jun 2024 10:10:06 +0800 Subject: [PATCH 024/381] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E8=BD=AC=E5=8F=91=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/dockerfiles/conf/nginx.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/k8s/dockerfiles/conf/nginx.conf b/k8s/dockerfiles/conf/nginx.conf index 93596a18..281ad4f4 100644 --- a/k8s/dockerfiles/conf/nginx.conf +++ b/k8s/dockerfiles/conf/nginx.conf @@ -30,6 +30,12 @@ http { add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/"; } + location /api/v1/model/ { + proxy_pass http://pipeline-convert-service.argo.svc:80; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location / { rewrite ^/prod-api/(.*)$ /$1 break; root /home/ruoyi/projects/ruoyi-ui; From 5a27d7972649e72c5b283e4182e1a7dc185e6758 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 29 Aug 2024 11:24:04 +0800 Subject: [PATCH 025/381] Update K8sClientUtil.java --- .../ruoyi/platform/utils/K8sClientUtil.java | 77 +++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index aea538f7..06e40622 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -33,6 +33,8 @@ import java.util.*; @Slf4j @Component public class K8sClientUtil { + private String http; + private String token; /** * k8s-api客户端 */ @@ -48,6 +50,8 @@ public class K8sClientUtil { */ @Autowired public K8sClientUtil(@Value("${k8s.http}") String http, @Value("${k8s.token}") String token) { + this.http = http; + this.token = token; try { this.apiClient = new ClientBuilder(). setBasePath(http).setVerifyingSsl(false). @@ -132,8 +136,8 @@ public class K8sClientUtil { if (v1ServiceList!=null) { for (V1Service svc : v1ServiceList.getItems()) { if (StringUtils.equals(svc.getMetadata().getName(), serviceName)) { - // PVC 已存在 - return svc; + // SVC 已存在 + return svc; } } } @@ -373,9 +377,48 @@ public class K8sClientUtil { // 创建配置好的Pod public Integer createConfiguredPod(String podName, String namespace, Integer port, String mountPath, V1PersistentVolumeClaim pvc, String image, String dataPvcName, String datasetPath, String modelPath) { + + //设置选择节点,pod反亲和性 Map selector = new LinkedHashMap<>(); - selector.put("k8s-jupyter", podName); + selector.put("k8s-jupyter", "CPU-GPU"); + Map nodeSelector = new LinkedHashMap<>(); + nodeSelector.put("resource-type", "CPU-GPU"); + + V1LabelSelectorRequirement labelSelectorRequirement = new V1LabelSelectorRequirement() + .key("k8s-jupyter").operator("NotIn").values(Collections.singletonList("CPU-GPU")); + + V1LabelSelector labelSelector = new V1LabelSelector() + .matchExpressions(Collections.singletonList(labelSelectorRequirement)); + + V1PodAffinityTerm podAffinityTerm = new V1PodAffinityTerm() + .labelSelector(labelSelector) + .namespaces(Collections.singletonList(namespace)) + .topologyKey("kubernetes.io/hostname"); + + V1PodAffinity podAffinity = new V1PodAffinity() + .requiredDuringSchedulingIgnoredDuringExecution(Collections.singletonList(podAffinityTerm)); + V1LabelSelectorRequirement antiLabelSelectorRequirement = new V1LabelSelectorRequirement() + .key("k8s-jupyter").operator("In").values(Collections.singletonList("CPU-GPU")); + + V1LabelSelector antiLabelSelector = new V1LabelSelector() + .matchExpressions(Collections.singletonList(antiLabelSelectorRequirement)); + + V1PodAffinityTerm antiPodAffinityTerm = new V1PodAffinityTerm() + .labelSelector(antiLabelSelector) + .namespaces(Collections.singletonList(namespace)) + .topologyKey("kubernetes.io/hostname"); + +// V1WeightedPodAffinityTerm weightedPodAffinityTerm = new V1WeightedPodAffinityTerm().weight(100).podAffinityTerm(podAffinityTerm); + + V1PodAntiAffinity podAntiAffinity = new V1PodAntiAffinity() + .requiredDuringSchedulingIgnoredDuringExecution(Collections.singletonList(antiPodAffinityTerm)); + + V1Affinity v1Affinity = new V1Affinity() + .podAffinity(podAffinity) + .podAntiAffinity(podAntiAffinity); + + // 创建Pod CoreV1Api api = new CoreV1Api(apiClient); V1PodList v1PodList = null; try { @@ -398,8 +441,8 @@ public class K8sClientUtil { // 配置卷和卷挂载 List volumeMounts = new ArrayList<>(); volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); - volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/datasets").subPath(datasetPath).readOnly(true)); - volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/model").subPath(modelPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); List volumes = new ArrayList<>(); volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); @@ -419,6 +462,8 @@ public class K8sClientUtil { .withVolumeMounts(volumeMounts) .endContainer() .withVolumes(volumes) + .withNodeSelector(nodeSelector) + .withAffinity(v1Affinity) .endSpec() .build(); @@ -502,6 +547,28 @@ public class K8sClientUtil { return pod.getStatus().getPhase(); } + /** + * 根据Pod的名称和Namespace查询Pod的容器信息 + * @param podName Pod的名称 + * @param namespace Pod所在的Namespace + */ + public String getPodContainerId(String podName, String namespace) throws Exception { + CoreV1Api api = new CoreV1Api(apiClient); + V1Pod pod = api.readNamespacedPod(podName, namespace, null, null, null); + + if(pod.getStatus().getContainerStatuses().size() !=1){ + throw new RuntimeException("容器错误"); + } + String containerId = pod.getStatus().getContainerStatuses().get(0).getContainerID().split("//")[1]; + return containerId; + } + + public String getHostIp(String podName, String namespace) throws Exception { + CoreV1Api api = new CoreV1Api(apiClient); + V1Pod pod = api.readNamespacedPod(podName, namespace, null, null, null); + return pod.getStatus().getHostIP(); + } + public String getPodLogs(String podName,String namespace,String container,int line) { CoreV1Api api = new CoreV1Api(apiClient); try { From 9df8e654a1685de0e57364dfb8a42b10bd9fe299 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 2 Sep 2024 09:17:59 +0800 Subject: [PATCH 026/381] update pom version --- ruoyi-modules/management-platform/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index e7c559fd..35026e20 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -140,7 +140,7 @@ com.github.docker-java docker-java - 3.2.13 + 3.4.0 commons-beanutils @@ -150,7 +150,7 @@ com.github.docker-java docker-java-transport-httpclient5 - 3.2.13 + 3.4.0 com.baomidou @@ -235,12 +235,12 @@ org.eclipse.jgit org.eclipse.jgit - 5.13.0.202109080827-r + 6.10.0.202406032230-r redis.clients jedis - 3.6.0 + 5.1.4 From 6eab18c50739a4b7704db6833df64343b5007f18 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 2 Sep 2024 10:49:36 +0800 Subject: [PATCH 027/381] Update pom.xml --- ruoyi-modules/management-platform/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index 35026e20..e7c559fd 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -140,7 +140,7 @@ com.github.docker-java docker-java - 3.4.0 + 3.2.13 commons-beanutils @@ -150,7 +150,7 @@ com.github.docker-java docker-java-transport-httpclient5 - 3.4.0 + 3.2.13 com.baomidou @@ -235,12 +235,12 @@ org.eclipse.jgit org.eclipse.jgit - 6.10.0.202406032230-r + 5.13.0.202109080827-r redis.clients jedis - 5.1.4 + 3.6.0 From 0bb008ae9fe572b8bef7569e669ad9db45d932b6 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 3 Sep 2024 15:52:03 +0800 Subject: [PATCH 028/381] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86git?= =?UTF-8?q?linkpassword=E5=8F=96=E6=B6=88=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/system/controller/SysUserController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 713c6cd2..aa7b3039 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -186,7 +186,7 @@ public class SysUserController extends BaseController { } user.setCreateBy(SecurityUtils.getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - user.setGitLinkPassword(SecurityUtils.encryptPassword(user.getGitLinkPassword())); +// user.setGitLinkPassword(SecurityUtils.encryptPassword(user.getGitLinkPassword())); return toAjax(userService.insertUser(user)); } @@ -212,9 +212,9 @@ public class SysUserController extends BaseController { if(StringUtils.isNotEmpty(user.getPassword())){ user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); } - if(StringUtils.isNotEmpty(user.getGitLinkPassword())){ - user.setGitLinkPassword(SecurityUtils.encryptPassword(user.getGitLinkPassword())); - } +// if(StringUtils.isNotEmpty(user.getGitLinkPassword())){ +// user.setGitLinkPassword(SecurityUtils.encryptPassword(user.getGitLinkPassword())); +// } return toAjax(userService.updateUser(user)); } From 3d67f58e5bf732717247d1a338facd1656b36318 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 3 Sep 2024 16:35:32 +0800 Subject: [PATCH 029/381] =?UTF-8?q?=E6=96=B0=E6=A8=A1=E5=9E=8Bdvc=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/NewDatasetFromGitController.java | 2 +- .../model/NewModelFromGitController.java | 86 +++++ .../ruoyi/platform/service/ModelsService.java | 21 +- .../service/impl/ModelsServiceImpl.java | 362 +++++++++++++++--- .../java/com/ruoyi/platform/vo/ModelsVo.java | 84 +--- .../com/ruoyi/platform/vo/NewDatasetVo.java | 2 - 6 files changed, 433 insertions(+), 124 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 0821d3ac..26e76b9a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -15,7 +15,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @RestController @RequestMapping("newdataset") -@Api(value = "新数据集管理") +//@Api(value = "新数据集管理") public class NewDatasetFromGitController { /** * 服务对象 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java new file mode 100644 index 00000000..2966d2bb --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -0,0 +1,86 @@ +package com.ruoyi.platform.controller.model; + +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.platform.service.ModelsService; +import com.ruoyi.platform.vo.ModelsVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.core.io.InputStreamResource; +import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("newmodel") +@Api(value = "新模型管理") +public class NewModelFromGitController { + + @Resource + private ModelsService modelsService; + + @PostMapping("/addModelAndVersion") + @ApiOperation("添加模型和版本") + public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { + return AjaxResult.success(this.modelsService.newCreateModel(modelsVo)); + } + + @PostMapping("/addVersion") + @ApiOperation("添加版本") + public AjaxResult addVersion(@RequestBody ModelsVo modelsVo) throws Exception { + return AjaxResult.success(this.modelsService.newCreateVersion(modelsVo)); + } + + /** + * 模型打包下载 + * + * @param version 模型版本 + * @return 模型 + */ + @GetMapping("/downloadAllFiles") + @ApiOperation(value = "下载同一版本下所有模型,并打包") + public ResponseEntity downloadAllDatasetFiles(@RequestParam(value = "repository_name") String repositoryName, + @RequestParam(value = "version") String version, + @RequestParam(value = "git_link_username") String gitLinkUsername, + @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { + return modelsService.downloadAllModelFilesNew(repositoryName, version, gitLinkUsername, gitLinkPassword); + } + + + /** + * 下载模型 + * + * @param model_version_id ps:这里的id是model_version表的主键 + * @return 模型 + */ + + @GetMapping("/download/{model_version_id}") + @ApiOperation(value = "下载单个模型文件", notes = "根据模型版本表id下载单个模型文件") + public ResponseEntity downloadModel(@PathVariable("model_version_id") Integer model_version_id) throws Exception { + return modelsService.downloadModels(model_version_id); + } + + @GetMapping("/queryDatasets") + @ApiOperation("模型广场公开模型分页查询,根据model_type,model_tag筛选,true公开false私有") + public AjaxResult queryDatasets(@RequestParam(value = "page") int page, + @RequestParam(value = "size") int size, + @RequestParam(value = "is_public") Boolean isPublic, + @RequestParam(value = "model_type", required = false) String modelType, + @RequestParam(value = "model_tag", required = false) String modelTag, + @RequestParam(value = "git_link_username") String gitLinkUsername, + @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { + PageRequest pageRequest = PageRequest.of(page, size); + ModelsVo modelsVo = new ModelsVo(); + modelsVo.setModelType(modelType); + modelsVo.setModelTag(modelTag); + modelsVo.setGitLinkUsername(gitLinkUsername); + modelsVo.setGitLinkPassword(gitLinkPassword); + if (isPublic) { + return AjaxResult.success(this.modelsService.newPubilcQueryByPage(modelsVo, pageRequest)); + } else { + return AjaxResult.success(this.modelsService.newPersonalQueryByPage(modelsVo, pageRequest)); + } + } + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index c4e5b920..8502fd95 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -1,8 +1,6 @@ package com.ruoyi.platform.service; - -import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.vo.ModelsVo; @@ -12,8 +10,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; /** * (Models)表服务接口 @@ -34,8 +34,8 @@ public interface ModelsService { /** * 分页查询 * - * @param models 筛选条件 - * @param pageRequest 分页对象 + * @param models 筛选条件 + * @param pageRequest 分页对象 * @return 查询结果 */ Page queryByPage(Models models, PageRequest pageRequest); @@ -70,12 +70,12 @@ public interface ModelsService { ResponseEntity downloadModels(Integer id) throws Exception; - List> uploadModels(MultipartFile[] files, String uuid) throws Exception; Map uploadModelsPipeline(ModelsVersion modelsVersion) throws Exception; ResponseEntity downloadAllModelFiles(Integer modelsId, String version) throws Exception; + List getModelVersions(Integer modelId) throws Exception; String insertModelAndVersion(ModelsVo modelsVo) throws Exception; @@ -85,4 +85,15 @@ public interface ModelsService { public void checkDeclaredName(Models insert) throws Exception; List> exportModels(String path, String uuid) throws Exception; + + + CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception; + + CompletableFuture newCreateVersion(ModelsVo modelsVo); + + ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception; + + Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; + + Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index b3603484..caef5b1d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1,26 +1,23 @@ package com.ruoyi.platform.service.impl; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.AssetIcon; -import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.mapper.ModelsDao; import com.ruoyi.platform.mapper.ModelsVersionDao; -import com.ruoyi.platform.service.AssetIconService; -import com.ruoyi.platform.service.MinioService; -import com.ruoyi.platform.service.ModelsService; -import com.ruoyi.platform.service.ModelsVersionService; -import com.ruoyi.platform.utils.BeansUtils; -import com.ruoyi.platform.utils.FileUtil; -import com.ruoyi.platform.utils.MinioUtil; +import com.ruoyi.platform.service.*; +import com.ruoyi.platform.utils.*; +import com.ruoyi.platform.vo.GitProjectVo; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; import io.minio.messages.Item; -import io.netty.util.Version; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -32,14 +29,17 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import redis.clients.jedis.Jedis; import javax.annotation.Resource; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; +import java.io.*; import java.lang.reflect.Field; import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -52,6 +52,9 @@ import java.util.zip.ZipOutputStream; */ @Service("modelsService") public class ModelsServiceImpl implements ModelsService { + + private static final Logger logger = LoggerFactory.getLogger(ModelsServiceImpl.class); + @Resource private ModelsDao modelsDao; @Resource @@ -63,6 +66,9 @@ public class ModelsServiceImpl implements ModelsService { @Resource private MinioService minioService; + @Resource + private GitService gitService; + @Resource private AssetIconService assetIconService; @@ -71,8 +77,20 @@ public class ModelsServiceImpl implements ModelsService { @Value("${minio.dataReleaseBucketName}") private String bucketName; @Resource - private MinioUtil minioUtil; - + private MinioUtil minioUtil; + + @Value("${spring.redis.host}") + private String redisHost; + @Value("${git.endpoint}") + String gitendpoint; + @Value("${git.localPath}") + String localPath; + @Value("${minio.accessKey}") + String accessKeyId; + @Value("${minio.secretKey}") + String secretAccessKey; + @Value("${minio.endpoint}") + String endpoint; /** * 通过ID查询单条数据 @@ -86,15 +104,15 @@ public class ModelsServiceImpl implements ModelsService { String modelType = models.getModelType(); String modelTag = models.getModelTag(); //去资产管理表中查询对应的图标名,注意判空逻辑,只有当dataType和dataTag不为空时,才进行查询 - if(modelType != null && !modelType.isEmpty()){ + if (modelType != null && !modelType.isEmpty()) { AssetIcon modelTypeAssetIcon = assetIconService.queryById(Integer.valueOf(modelType)); - if (modelTypeAssetIcon != null){ + if (modelTypeAssetIcon != null) { models.setModelTypeName(modelTypeAssetIcon.getName()); } } - if(modelTag != null && !modelTag.isEmpty()){ + if (modelTag != null && !modelTag.isEmpty()) { AssetIcon modelTagAssetIcon = assetIconService.queryById(Integer.valueOf(modelTag)); - if (modelTagAssetIcon != null){ + if (modelTagAssetIcon != null) { models.setModelTagName(modelTagAssetIcon.getName()); } } @@ -104,8 +122,8 @@ public class ModelsServiceImpl implements ModelsService { /** * 分页查询 * - * @param models 筛选条件 - * @param pageRequest 分页对象 + * @param models 筛选条件 + * @param pageRequest 分页对象 * @return 查询结果 */ @Override @@ -142,7 +160,7 @@ public class ModelsServiceImpl implements ModelsService { @Override public Models update(Models models) { int currentState = models.getState(); - if(currentState == 0){ + if (currentState == 0) { throw new RuntimeException("模型已被删除,无法更新。"); } LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -166,7 +184,7 @@ public class ModelsServiceImpl implements ModelsService { @Override public String removeById(Integer id) throws Exception { Models models = this.modelsDao.queryById(id); - if (models == null){ + if (models == null) { throw new Exception("模型不存在"); } @@ -176,15 +194,15 @@ public class ModelsServiceImpl implements ModelsService { String createdBy = models.getCreateBy(); - if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ + if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createdBy))) { throw new Exception("无权限删除该模型"); } //判断是否有版本文件 - if (!modelsVersionService.queryByModelsId(id).isEmpty()){ + if (!modelsVersionService.queryByModelsId(id).isEmpty()) { throw new Exception("请先删除该模型下的版本文件"); } models.setState(0); - return this.modelsDao.update(models)>0?"删除成功":"删除失败"; + return this.modelsDao.update(models) > 0 ? "删除成功" : "删除失败"; } /** @@ -192,7 +210,6 @@ public class ModelsServiceImpl implements ModelsService { * * @param id models_version表的主键 * @return 文件内容 - * */ @Override @@ -204,19 +221,19 @@ public class ModelsServiceImpl implements ModelsService { } // 从数据库中获取存储路径(即MinIO中的对象名称) String objectName = modelsVersion.getUrl(); - if(objectName == null || objectName.isEmpty() ){ + if (objectName == null || objectName.isEmpty()) { throw new Exception("未找到该版本模型文件"); } try { // 使用ByteArrayOutputStream来捕获下载的数据 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - minioUtil.downloadObject(bucketName,objectName,outputStream); + minioUtil.downloadObject(bucketName, objectName, outputStream); ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); InputStreamResource resource = new InputStreamResource(inputStream); return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + URLEncoder.encode(extractFileName(objectName),"UTF-8") + "\"") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + URLEncoder.encode(extractFileName(objectName), "UTF-8") + "\"") .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); @@ -231,13 +248,13 @@ public class ModelsServiceImpl implements ModelsService { * 上传模型文件 * * @param files 文件 - * @param uuid 唯一标识 + * @param uuid 唯一标识 * @return 是否成功 */ @Override public List> uploadModels(MultipartFile[] files, String uuid) throws Exception { List> results = new ArrayList<>(); - for (MultipartFile file:files) { + for (MultipartFile file : files) { // 构建objectName String username = SecurityUtils.getLoginUser().getUsername(); String fileName = file.getOriginalFilename(); @@ -265,7 +282,7 @@ public class ModelsServiceImpl implements ModelsService { //插表,因为这里是一次直接插表所以这里定掉date,然后用DAO插入 Date date = new Date(); //String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(date); - url = "models/" + username + "/" + models.getName() + "-" + "/" + modelsVersion.getVersion() + "/" + modelsVersion.getFileName(); + url = "models/" + username + "/" + models.getName() + "-" + "/" + modelsVersion.getVersion() + "/" + modelsVersion.getFileName(); modelsVersion.setUrl(url); modelsVersion.setCreateBy(username); modelsVersion.setUpdateBy(username); @@ -273,7 +290,7 @@ public class ModelsServiceImpl implements ModelsService { modelsVersion.setUpdateTime(date); modelsVersion.setState(1); modelsVersionDao.insert(modelsVersion); - }else { + } else { //改表 BeansUtils.copyPropertiesIgnoreNull(modelsVersion, version); Date createTime = version.getCreateTime(); @@ -283,21 +300,21 @@ public class ModelsServiceImpl implements ModelsService { modelsVersionService.update(version); } Map result = new HashMap(); - result.put("url",url); + result.put("url", url); return result; } /** * 下载所有模型文件,用压缩包的方式返回 * - * @param modelsId 模型ID - * @param version 模型版本号 + * @param modelsId 模型ID + * @param version 模型版本号 * @return 文件内容 */ @Override public ResponseEntity downloadAllModelFiles(Integer modelsId, String version) throws Exception { // 根据模型id查模型名 - Models model = this.modelsDao.queryById(modelsId); + Models model = this.modelsDao.queryById(modelsId); String modelName = model.getName(); // 查询特定模型和版本对应的所有文件 List modelsVersionList = this.modelsVersionDao.queryAllByModelsVersion(modelsId, version); @@ -328,7 +345,7 @@ public class ModelsServiceImpl implements ModelsService { // 设置响应 return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + modelName + "_" + version + ".zip\"") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + modelName + "_" + version + ".zip\"") .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); } catch (Exception e) { @@ -361,7 +378,7 @@ public class ModelsServiceImpl implements ModelsService { public String insertModelAndVersion(ModelsVo modelsVo) throws Exception { List modelsVersionVos = modelsVo.getModelsVersionVos(); - if (modelsVersionVos==null || modelsVersionVos.isEmpty()){ + if (modelsVersionVos == null || modelsVersionVos.isEmpty()) { throw new Exception("模型版本信息错误"); } Models models = new Models(); @@ -371,11 +388,11 @@ public class ModelsServiceImpl implements ModelsService { models.setModelType(modelsVo.getModelType()); models.setModelTag(modelsVo.getModelTag()); Models modelsInsert = this.insert(models); - if (modelsInsert == null){ + if (modelsInsert == null) { throw new Exception("新增模型失败"); } //遍历版本信息列表,把文件信息插入数据库 - for(VersionVo modelsVersionVo : modelsVersionVos){ + for (VersionVo modelsVersionVo : modelsVersionVos) { ModelsVersion modelsVersion = new ModelsVersion(); modelsVersion.setModelsId(modelsInsert.getId()); modelsVersion.setVersion(modelsVo.getVersion()); @@ -394,16 +411,16 @@ public class ModelsServiceImpl implements ModelsService { /** - * 根据模型id和版本读取文件内容 + * 根据模型id和版本读取文件内容 * - * @param modelsId 模型ID - * @param version 模型版本号 + * @param modelsId 模型ID + * @param version 模型版本号 * @return 文件内容 */ @Override public String readFileContent(Integer modelsId, String version) throws Exception { // 根据模型id查模型名 - Models model = this.modelsDao.queryById(modelsId); + Models model = this.modelsDao.queryById(modelsId); if (model == null) { throw new Exception("模型不存在"); } @@ -415,9 +432,9 @@ public class ModelsServiceImpl implements ModelsService { throw new Exception("对应模型版本不存在"); } //遍历文件列表 - for(ModelsVersion modelsVersion : modelsVersionList){ + for (ModelsVersion modelsVersion : modelsVersionList) { String fileName = modelsVersion.getFileName(); - if("readme.md".equalsIgnoreCase(fileName)){ + if ("readme.md".equalsIgnoreCase(fileName)) { //如果存在readme文件,读取minio中的url objectName = modelsVersion.getUrl(); // 读取MinIO中的对象为字符串 @@ -473,7 +490,7 @@ public class ModelsServiceImpl implements ModelsService { minioUtil.copyDirectory(srcBucketName, srcDir, bucketName, targetDir); List movedItems = minioUtil.getAllObjectsByPrefix(bucketName, targetDir, true); for (Item movedItem : movedItems) { - if(!movedItem.isDir() && movedItem.size() > 0){ // 检查是否为非目录且文件大小大于0 + if (!movedItem.isDir() && movedItem.size() > 0) { // 检查是否为非目录且文件大小大于0 Map result = new HashMap<>(); String url = movedItem.objectName(); String fileName = extractFileName(url); @@ -493,5 +510,254 @@ public class ModelsServiceImpl implements ModelsService { return urlStr.substring(urlStr.lastIndexOf('/') + 1); } + @Override + public CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception { + return CompletableFuture.supplyAsync(() -> { + try { + String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + Integer userId = (Integer) userInfo.get("user_id"); + + // 拼接project + String repositoryName = ci4sUsername + "_model_" + DateUtils.dateTimeNow(); + GitProjectVo gitProjectVo = new GitProjectVo(); + gitProjectVo.setRepositoryName(repositoryName); + gitProjectVo.setName(modelsVo.getName()); + gitProjectVo.setDescription(modelsVo.getDescription()); + gitProjectVo.setPrivate(modelsVo.getAvailableRange() == 0); + gitProjectVo.setUserId(userId); + + // 创建项目 + Map project = gitService.createProject(token, gitProjectVo); + + // 创建分支 + String branchName = modelsVo.getVersion(); + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); + // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType + gitService.createTopic(token, (Integer) project.get("id"), "ci4s_model"); + gitService.createTopic(token, (Integer) project.get("id"), "ModelTag_" + modelsVo.getModelTag()); + gitService.createTopic(token, (Integer) project.get("id"), "ModelType_" + modelsVo.getModelType()); + // 得到项目地址 + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + // 得到用户操作的路径 + String url = modelsVo.getModelsVersionVos().get(0).getUrl(); + String localPath1 = localPath + modelsVo.getName(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + // 命令行操作 git clone 项目地址 + DVCUtils.gitClone(localPath1, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + String s3Path = "management-platform-files/" + ci4sUsername + "/models/" + repositoryName + "/" + branchName; + + // 拼接生产的元数据后写入yaml文件 + YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelsVo), sourcePath, "model"); + + DVCUtils.moveFiles(sourcePath, localPath1 + "/model"); + + // dvc init 初始化 + DVCUtils.dvcInit(localPath1); + // 配置远程S3地址 + DVCUtils.dvcRemoteAdd(localPath1, s3Path); + DVCUtils.dvcConfigS3Credentials(localPath1, endpoint); + DVCUtils.dvcConfigS3Credentials2(localPath1, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(localPath1, secretAccessKey); + // dvc 跟踪 + DVCUtils.dvcAdd(localPath1, "model"); + // git commit + DVCUtils.gitAdd(localPath1, "."); + DVCUtils.gitCommit(localPath1, "commit from ci4s with " + ci4sUsername); + DVCUtils.gitPush(localPath1, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + // dvc push 到远程S3 + DVCUtils.dvcPush(localPath1); + return "新增模型成功"; + } catch (Exception e) { + logger.error(e.getMessage()); + throw new RuntimeException(e); + } + }); + } + + @Override + public CompletableFuture newCreateVersion(ModelsVo modelsVo) { + return CompletableFuture.supplyAsync(() -> { + try { + String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + // 创建分支 + String branchName = modelsVo.getVersion(); + String repositoryName = modelsVo.getRepositoryName(); + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); + // 得到项目地址 + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + // 得到用户操作的路径 + String url = modelsVo.getModelVersionVos().get(0).getUrl(); + String localPath1 = localPath + ci4sUsername + "/model/" + modelsVo.getName(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + // 命令行操作 git clone 项目地址 + DVCUtils.gitClone(localPath1, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + repositoryName + "/" + branchName; + //拼接生产的元数据后写入yaml文件 + YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelsVo), sourcePath, "dataset"); + + DVCUtils.moveFiles(sourcePath, localPath1 + "/model"); + // dvc init 初始化 + DVCUtils.dvcInit(localPath1); + // 配置远程S3地址 + DVCUtils.dvcRemoteAdd(localPath1, s3Path); + DVCUtils.dvcConfigS3Credentials(localPath1, endpoint); + DVCUtils.dvcConfigS3Credentials2(localPath1, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(localPath1, secretAccessKey); + // dvc 跟踪 + DVCUtils.dvcAdd(localPath1, "model"); + // git commit + DVCUtils.gitAdd(localPath1, "."); + DVCUtils.gitCommit(localPath1, "commit from ci4s with " + ci4sUsername); + DVCUtils.gitPush(localPath1, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + // dvc push 到远程S3 + DVCUtils.dvcPush(localPath1); + return "新增模型成功"; + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + + @Override + public ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception { + // 命令行操作 git clone 项目地址 + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + Integer userId = (Integer) userInfo.get("user_id"); + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + String localPath1 = localPath + ci4sUsername + "/model/" + repositoryName; + File folder = new File(localPath1); + if (folder.exists() && folder.isDirectory()) { + //切换分支 + DVCUtils.gitCheckoutBranch(localPath1, version); + //pull + DVCUtils.gitPull(localPath1, gitLinkUsername, gitLinkPassword); + //dvc pull + DVCUtils.dvcPull(localPath1); + } else { + DVCUtils.gitClone(localPath1, projectUrl, version, gitLinkUsername, gitLinkPassword); + } + // 打包 data 文件夹 + String dataFolderPath = localPath1 + "/model"; + String zipFilePath = localPath1 + "/model.zip"; + try (FileOutputStream fos = new FileOutputStream(zipFilePath); + ZipOutputStream zos = new ZipOutputStream(fos)) { + Path sourcePath = Paths.get(dataFolderPath); + Files.walk(sourcePath).forEach(path -> { + if (!Files.isDirectory(path)) { + ZipEntry zipEntry = new ZipEntry(sourcePath.relativize(path).toString()); + try { + zos.putNextEntry(zipEntry); + Files.copy(path, zos); + zos.closeEntry(); + } catch (IOException e) { + throw new RuntimeException("Error while zipping: " + path, e); + } + } + }); + } + + // 返回压缩文件的输入流 + File zipFile = new File(zipFilePath); + InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); + + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=data.zip") + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .contentLength(zipFile.length()) + .body(resource); + } + + @Override + public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + //拼接查询url + String modelTagName = modelsVo.getModelTag(); + String modelTypeName = modelsVo.getModelType(); + String topic_name = "ci4s_model"; + topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTypeName; + topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; + String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name; + String req = HttpUtils.sendGetWithToken(url, null, token); + Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); + Integer total = (Integer) stringObjectMap.get("count"); + List> projects = (List>) stringObjectMap.get("projects"); + return new PageImpl<>(convert(projects), pageRequest, total); + } + + @Override + public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + Integer userId = (Integer) userInfo.get("user_id"); + //拼接查询url + String modelTagName = modelsVo.getModelTag(); + String modelTypeName = modelsVo.getModelType(); + String topic_name = "ci4s_model"; + topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTagName; + topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; + + String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name; + String req = HttpUtils.sendGetWithToken(url, null, token); + Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); + Integer total = (Integer) stringObjectMap.get("total_count"); + List> projects = (List>) stringObjectMap.get("projects"); + return new PageImpl<>(convert(projects), pageRequest, total); + } + + public List convert(List> lst) { + if (lst != null && lst.size() > 0) { + List newModelVos = ConvertUtil.convertListMapToObjectList(lst, ModelsVo.class); + + for (ModelsVo newModelVo : newModelVos) { + Map map = lst.stream() + .filter(m -> m.get("repo_id").equals(newModelVo.getRepoId())) + .findFirst() + .orElse(null); + + if (map != null) { + List> topics = (List>) map.get("topics"); + if (topics != null) { + topics.forEach(topic -> { + String name = (String) topic.get("name"); + if (name != null) { + if (name.startsWith("modeltag_")) { + newModelVo.setModelTag(name.substring("modeltag_".length())); + } else if (name.startsWith("modeltype_")) { + newModelVo.setModelType(name.substring("modeltype_".length())); + } + } + }); + } + } + } + + return newModelVos; + } + return new ArrayList<>(); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java index 315d60d4..1189da76 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java @@ -2,13 +2,14 @@ package com.ruoyi.platform.vo; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; -import com.ruoyi.platform.domain.ModelsVersion; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.io.Serializable; import java.util.List; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@Data public class ModelsVo implements Serializable { @@ -25,7 +26,6 @@ public class ModelsVo implements Serializable { @ApiModelProperty(name = "available_range") private int availableRange; - // private String url; @ApiModelProperty(name = "model_type") private String modelType; @@ -39,80 +39,28 @@ public class ModelsVo implements Serializable { @ApiModelProperty(name = "version") private String version; + @ApiModelProperty(name = "model_version_vos") + private List modelVersionVos; + /** * 状态 */ @ApiModelProperty(name = "status") private Integer status; - @ApiModelProperty(name = "models_version_vos") - private List modelsVersionVos; - - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getAvailableRange() { - return availableRange; - } - - public void setAvailableRange(int availableRange) { - this.availableRange = availableRange; - } - + private String gitLinkUsername; - public String getModelType() { - return modelType; - } + private String gitLinkPassword; - public void setModelType(String modelType) { - this.modelType = modelType; - } - - public String getModelTag() { - return modelTag; - } - - public void setModelTag(String modelTag) { - this.modelTag = modelTag; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public List getModelsVersionVos() { - return modelsVersionVos; - } - - public void setModelsVersionVos(List modelsVersionVos) { - this.modelsVersionVos = modelsVersionVos; - } + @ApiModelProperty(name = "models_version_vos") + private List modelsVersionVos; + /** + * 数据集仓库名称 + */ + @ApiModelProperty(name = "repository_name") + private String repositoryName; + @ApiModelProperty(name = "repo_id") + private Integer repoId; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 7ea72767..d8b5a2c5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -4,10 +4,8 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.apache.ibatis.annotations.MapKey; import java.io.Serializable; -import java.util.List; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data From c3723ee716a751f6863c5e10122e758b324bad9d Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 5 Sep 2024 08:35:29 +0800 Subject: [PATCH 030/381] update pom version --- .../dataset/NewDatasetFromGitController.java | 15 ++- .../controller/jupyter/JupyterController.java | 14 +-- .../platform/service/DatasetService.java | 6 +- .../service/impl/DatasetServiceImpl.java | 119 +++++++++++++----- .../com/ruoyi/platform/utils/ConvertUtil.java | 2 +- .../com/ruoyi/platform/utils/DVCUtils.java | 70 +++++++++++ .../com/ruoyi/platform/utils/FileUtil.java | 12 ++ .../com/ruoyi/platform/utils/YamlUtils.java | 19 ++- .../com/ruoyi/platform/vo/NewDatasetVo.java | 37 ++++-- 9 files changed, 238 insertions(+), 56 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index d2cc77c3..26bf86be 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.service.DatasetService; import com.ruoyi.platform.vo.DatasetVo; +import com.ruoyi.platform.vo.NewDatasetVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.core.io.InputStreamResource; @@ -33,7 +34,7 @@ public class NewDatasetFromGitController { */ @PostMapping("/addDatasetAndVersion") @ApiOperation("添加数据集和版本") - public AjaxResult addDatasetAndVersion(@RequestBody DatasetVo datasetVo) throws Exception { + public AjaxResult addDatasetAndVersion(@RequestBody NewDatasetVo datasetVo) throws Exception { return AjaxResult.success(this.datasetService.newCreateDataset(datasetVo)); } @@ -47,7 +48,7 @@ public class NewDatasetFromGitController { */ @PostMapping("/addVersion") @ApiOperation("添加版本") - public AjaxResult addVersion(@RequestBody DatasetVo datasetVo) throws Exception { + public AjaxResult addVersion(@RequestBody NewDatasetVo datasetVo) throws Exception { return AjaxResult.success(this.datasetService.newCreateVersion(datasetVo)); } @@ -107,9 +108,15 @@ public class NewDatasetFromGitController { } } + @GetMapping("/getVersionList") + @ApiOperation(value = "获取分支列表") + public AjaxResult getVersionList(@RequestParam("name") String name,@RequestParam("repo_id") Integer repoId,@RequestParam("version")String version) throws Exception { + return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,version)); + } + @GetMapping("/getdatasetDetail") @ApiOperation(value = "获取数据集详情") - public AjaxResult getDatasetVersions(@PathVariable("datasetId") Integer datasetId) throws Exception { - return AjaxResult.success(this.datasetService.getDatasetVersions(datasetId)); + public AjaxResult getDatasetVersions(@RequestParam("name") String name,@RequestParam("repo_id") Integer repoId,@RequestParam("version")String version) throws Exception { + return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,version)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java index 02bff0db..2a52ff87 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java @@ -6,10 +6,7 @@ import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.DevEnvironment; import com.ruoyi.platform.service.DatasetService; import com.ruoyi.platform.service.JupyterService; -import com.ruoyi.platform.vo.DatasetVo; -import com.ruoyi.platform.vo.FrameLogPathVo; -import com.ruoyi.platform.vo.PodStatusVo; -import com.ruoyi.platform.vo.VersionVo; +import com.ruoyi.platform.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -89,16 +86,19 @@ public class JupyterController extends BaseController { @GetMapping(value = "/testdvc") public AjaxResult testdvc() throws Exception { - DatasetVo datasetVo = new DatasetVo(); - datasetVo.setName("testdassad23"); + NewDatasetVo datasetVo = new NewDatasetVo(); + datasetVo.setName("testdvc90412"); datasetVo.setDescription("sss"); - datasetVo.setAvailableRange(0); + datasetVo.setIsPublic(false); datasetVo.setDataTag("计算机视觉"); datasetVo.setDataType("机器翻译"); datasetVo.setVersion("dev"); List datasetVersionVos = new ArrayList<>(); VersionVo versionVo = new VersionVo(); versionVo.setUrl("E:/test/bb/data/xssa.doc"); + datasetVo.setDescription("this is a test"); + datasetVo.setProcessingCode("python code"); + datasetVo.setVersionDesc("this is a test"); datasetVersionVos.add(versionVo); datasetVo.setDatasetVersionVos(datasetVersionVos); return AjaxResult.success(datasetService.newCreateDataset(datasetVo)); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index a22e7101..cddbd552 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -92,8 +92,8 @@ DatasetService { - CompletableFuture newCreateDataset(DatasetVo datasetVo) throws Exception; - CompletableFuture newCreateVersion(DatasetVo datasetVo); + CompletableFuture newCreateDataset(NewDatasetVo datasetVo) throws Exception; + CompletableFuture newCreateVersion(NewDatasetVo datasetVo); @@ -102,4 +102,6 @@ DatasetService { ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws IOException, Exception; Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; + + NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName, String version); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 55284187..4233d62d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -91,6 +91,8 @@ public class DatasetServiceImpl implements DatasetService { String endpoint; @Value("${git.endpoint}") String gitendpoint; + @Value("${git.localPath}") + String localPathlocal; /** * 通过ID查询单条数据 @@ -459,11 +461,14 @@ public class DatasetServiceImpl implements DatasetService { @Override - public CompletableFuture newCreateDataset(DatasetVo datasetVo) { + public CompletableFuture newCreateDataset(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { try { - String token = gitService.login("fanshuai", "h1n2x3j4y5@"); LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + String ci4sUsername = loginUser.getUsername(); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); @@ -475,34 +480,41 @@ public class DatasetServiceImpl implements DatasetService { gitProjectVo.setRepositoryName(repositoryName); gitProjectVo.setName(datasetVo.getName()); gitProjectVo.setDescription(datasetVo.getDescription()); - gitProjectVo.setPrivate(datasetVo.getAvailableRange() == 0); + gitProjectVo.setPrivate(!datasetVo.getIsPublic()); gitProjectVo.setUserId(userId); // 创建项目 Map project = gitService.createProject(token, gitProjectVo); + Integer repoId = (Integer) project.get("id"); // 创建分支 String branchName = datasetVo.getVersion(); gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType - gitService.createTopic(token, (Integer) project.get("id"), "ci4s_dataset"); - gitService.createTopic(token, (Integer) project.get("id"), "DataTag_" + datasetVo.getDataTag()); - gitService.createTopic(token, (Integer) project.get("id"), "DataType_" + datasetVo.getDataType()); + gitService.createTopic(token, repoId, "ci4s_dataset"); + gitService.createTopic(token, repoId, "DataTag_" + datasetVo.getDataTag()); + gitService.createTopic(token, repoId, "DataType_" + datasetVo.getDataType()); // 得到项目地址 String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; // 得到用户操作的路径 String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = "E:/test/" + datasetVo.getName(); + String localPath = localPathlocal + "/" + repoId+"/"+datasetVo.getName(); String sourcePath = url.substring(0, url.lastIndexOf("/")); // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath, projectUrl, branchName, "fanshuai", "h1n2x3j4y5@"); - String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/" + repositoryName + "/" + branchName; - //拼接生产的元数据后写入yaml文件 - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),sourcePath, "dataset"); + DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); + String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/"+repoId+"/"+ repositoryName + "/" + branchName; DVCUtils.moveFiles(sourcePath, localPath); - - - + //拼接生产的元数据后写入yaml文件 + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setVersionDesc(datasetVo.getDescription()); + datasetVo.setUsage("```bash\n" + + "# 克隆数据集配置文件与存储参数到本地\n" + + "git clone -b " + branchName + " " + projectUrl + "\n" + + "# 远程拉取配置文件\n" + + "dvc pull\n" + + "```"); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),localPath, "dataset"); // dvc init 初始化 DVCUtils.dvcInit(localPath); // 配置远程S3地址 @@ -515,7 +527,7 @@ public class DatasetServiceImpl implements DatasetService { // git commit DVCUtils.gitAdd(localPath, "."); DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); - DVCUtils.gitPush(localPath, "fanshuai", "h1n2x3j4y5@"); + DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); // dvc push 到远程S3 DVCUtils.dvcPush(localPath); return "新增数据集成功"; @@ -526,18 +538,20 @@ public class DatasetServiceImpl implements DatasetService { } @Override - public CompletableFuture newCreateVersion(DatasetVo datasetVo) { + public CompletableFuture newCreateVersion(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { try { - String token = gitService.login("fanshuai", "h1n2x3j4y5@"); LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); String ci4sUsername = loginUser.getUsername(); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); // 创建分支 String branchName = StringUtils.isEmpty(datasetVo.getVersion())? "master" : datasetVo.getVersion(); - String repositoryName = datasetVo.getRepositoryName(); + String repositoryName = datasetVo.getIdentifier(); if (StringUtils.equals(branchName, "master")) { gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); } @@ -546,15 +560,31 @@ public class DatasetServiceImpl implements DatasetService { // 得到用户操作的路径 String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = "E:/test/"+ loginUser.getUsername()+"/datasets/"+ datasetVo.getName(); + String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+ datasetVo.getName(); String sourcePath = url.substring(0, url.lastIndexOf("/")); // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath, projectUrl, branchName, "fanshuai", "h1n2x3j4y5@"); - String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/" + repositoryName + "/" + branchName; - //拼接生产的元数据后写入yaml文件 - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),sourcePath, "dataset"); + if(FileUtil.checkDirectoryExists(localPath)){ + DVCUtils.gitFetch(localPath); + DVCUtils.gitCheckoutBranch(localPath,branchName); + }else { + DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); + } + + String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/"+ datasetVo.getRepoId()+"/"+ repositoryName + "/" + branchName; DVCUtils.moveFiles(sourcePath, localPath); + //拼接生产的元数据后写入yaml文件 + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setVersionDesc(datasetVo.getDescription()); + datasetVo.setUsage("```bash\n" + + "# 克隆数据集配置文件与存储参数到本地\n" + + "git clone -b " + branchName + " " + projectUrl + "\n" + + "# 远程拉取配置文件\n" + + "dvc pull\n" + + "```"); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),localPath, "dataset"); + // dvc init 初始化 DVCUtils.dvcInit(localPath); // 配置远程S3地址 @@ -567,7 +597,7 @@ public class DatasetServiceImpl implements DatasetService { // git commit DVCUtils.gitAdd(localPath, "."); DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); - DVCUtils.gitPush(localPath, "fanshuai", "h1n2x3j4y5@"); + DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); // dvc push 到远程S3 DVCUtils.dvcPush(localPath); return "新增数据集成功"; @@ -581,7 +611,9 @@ public class DatasetServiceImpl implements DatasetService { @Override public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); - String token = gitService.login("fanshuai", "h1n2x3j4y5@"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); String ci4sUsername = loginUser.getUsername(); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); @@ -602,9 +634,10 @@ public class DatasetServiceImpl implements DatasetService { @Override public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - LoginUser loginUser = SecurityUtils.getLoginUser(); - String token = gitService.login("fanshuai", "h1n2x3j4y5@"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); String ci4sUsername = loginUser.getUsername(); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); @@ -626,6 +659,28 @@ public class DatasetServiceImpl implements DatasetService { } + @Override + public NewDatasetVo getNewDatasetDesc(Integer repoId,String repositoryName, String version) { + // cd到 localPathlocal/repoId/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal+repoId, repositoryName, version); + //在localPathlocal+repoId+"/"+repositoryName目录下的dataset.yaml中取到元数据 + Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + repoId + "/" + repositoryName + "/dataset.yaml"); + NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); + List versionVos = new ArrayList(); + if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){ + for(Map fileDetail : fileDetailsAfterGitPull){ + VersionVo versionVo = new VersionVo(); + versionVo.setUrl((String) fileDetail.get("filePath")); + versionVo.setFileName((String) fileDetail.get("fileName")); + long size = (long) fileDetail.get("size"); + versionVo.setFileSize(FileUtil.formatFileSize(size)); + versionVos.add(versionVo); + } + } + newDatasetVo.setDatasetVersionVos(versionVos); + return newDatasetVo; + } + @Override public List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception { List> results = new ArrayList<>(); @@ -657,24 +712,26 @@ public class DatasetServiceImpl implements DatasetService { public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); - String token = gitService.login("fanshuai", "h1n2x3j4y5@"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); String ci4sUsername = loginUser.getUsername(); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); Integer userId = (Integer) userInfo.get("user_id"); String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; - String localPath = "E:/test/"+ loginUser.getUsername()+"/datasets/" +repositoryName; + String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/" +repositoryName; File folder = new File(localPath); if(folder.exists() && folder.isDirectory()){ //切换分支 DVCUtils.gitCheckoutBranch(localPath, version); //pull - DVCUtils.gitPull(localPath,"fanshuai", "h1n2x3j4y5@"); + DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword); //dvc pull DVCUtils.dvcPull(localPath); }else { - DVCUtils.gitClone(localPath, projectUrl, version, "fanshuai", "h1n2x3j4y5@"); + DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword); } // 打包 data 文件夹 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index ca138614..281664ce 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -78,7 +78,7 @@ public class ConvertUtil { return resultList; } - private static T convertMapToObject(Map map, Class targetClass) { + public static T convertMapToObject(Map map, Class targetClass) { try { T targetObject = targetClass.newInstance(); for (Map.Entry entry : map.entrySet()) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 387f09ab..e364dcb3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -9,6 +9,10 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import java.io.*; import java.nio.file.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class DVCUtils { @@ -95,6 +99,16 @@ public class DVCUtils { } } + public static void gitFetch(String localPath) { + try { + ProcessBuilder pb = new ProcessBuilder("git", "fetch"); + pb.directory(new File(localPath)); + Process process = pb.start(); + process.waitFor(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + } public static void gitCheckoutBranch(String localPath, String branchName) throws IOException, GitAPIException { FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(localPath, ".git")) @@ -162,4 +176,60 @@ public class DVCUtils { String command = "dvc pull"; runCommand(command, localPath); } + + + /** + * 切换到指定分支并执行git pull,然后获取data文件夹下所有文件的路径、名称和大小 + * + * @param localPath 本地路径 + * @param repoFolder 仓库文件夹名称 + * @param branch 分支名称 + * @return 包含文件路径、名称和大小的List> + */ + public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch) { + List> fileInfoList = new ArrayList<>(); + + try { + // 切换到指定目录 + Path repoPath = Paths.get(localPath, repoFolder); + + // 切换到指定分支 + ProcessBuilder pb = new ProcessBuilder("git", "checkout", branch); + pb.directory(repoPath.toFile()); + Process process = pb.start(); + process.waitFor(); + + // 执行git pull + pb = new ProcessBuilder("git", "pull"); + pb.directory(repoPath.toFile()); + process = pb.start(); + process.waitFor(); + + // 读取data文件夹中的文件列表 + Path dataPath = Paths.get(repoPath.toString(), "data"); + File[] files = dataPath.toFile().listFiles(); + + if (files != null) { + for (File file : files) { + if (file.isFile()) { + long size = Files.size(file.toPath()); + String filePath = file.getAbsolutePath(); + String fileName = file.getName(); + + Map fileDetails = new HashMap<>(); + fileDetails.put("size", size); + fileDetails.put("filePath", filePath); + fileDetails.put("fileName", fileName); + + fileInfoList.add(fileDetails); + } + } + } + + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + + return fileInfoList; + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index aab81e56..c70b223a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -1,5 +1,7 @@ package com.ruoyi.platform.utils; +import java.io.File; + public class FileUtil { // 格式化文件大小为可读的字符串表示 @@ -30,6 +32,16 @@ public class FileUtil { } } + /** + * 检查指定路径的文件夹是否存在 + * + * @param localPath 本地路径 + * @return 如果文件夹存在返回true,否则返回false + */ + public static boolean checkDirectoryExists(String localPath) { + File directory = new File(localPath); + return directory.exists() && directory.isDirectory(); + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 395e78b3..03ec45b8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -2,8 +2,7 @@ package com.ruoyi.platform.utils; import org.yaml.snakeyaml.Yaml; -import java.io.FileWriter; -import java.io.IOException; +import java.io.*; import java.util.Map; public class YamlUtils { @@ -25,4 +24,20 @@ public class YamlUtils { e.printStackTrace(); } } + + /** + * 读取YAML文件并将其内容转换为Map + * + * @param filePath YAML文件路径 + * @return 包含YAML内容的Map + */ + public static Map loadYamlFile(String filePath) { + Yaml yaml = new Yaml(); + try (InputStream inputStream = new FileInputStream(new File(filePath))) { + return yaml.load(inputStream); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 0ddb7e14..f4566b5f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.Date; +import java.util.List; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data @@ -17,25 +19,42 @@ public class NewDatasetVo implements Serializable { /** * 数据集仓库名称 */ - @ApiModelProperty(name = "identifier") + @ApiModelProperty(name = "identifier", value = "数据集仓库名称") private String identifier; - @ApiModelProperty(name = "description") + @ApiModelProperty(name = "description",value = "数据集描述") private String description; /** * 是否公开1公开,0私有 */ - @ApiModelProperty(name = "is_public") + @ApiModelProperty(name = "is_public", value = "是否公开1公开,0私有") private Boolean isPublic; - @ApiModelProperty(name = "data_type") + @ApiModelProperty(name = "data_type",value = "数据集类型") private String dataType; - @ApiModelProperty(name = "data_tag") + @ApiModelProperty(name = "data_tag",value = "数据集标签") private String dataTag; - @ApiModelProperty(name = "time_ago") + /** + * 版本 + */ + @ApiModelProperty(name = "version",value = "版本") + private String version; + @ApiModelProperty(name = "dataset_version_vos",value = "文件列表") + private List datasetVersionVos; + + @ApiModelProperty(name = "time_ago",value = "更新时间") private String timeAgo; - @ApiModelProperty(name = "repo_id") + @ApiModelProperty(name = "repo_id",value = "数据集仓库id") private Integer repoId; - @ApiModelProperty(name = "visits") + @ApiModelProperty(name = "visits",value = "访问次数") private Integer visits; - @ApiModelProperty(name = "create_by") + @ApiModelProperty(name = "create_by",value = "创建者") private String createBy; + @ApiModelProperty(name = "version_desc",value = "版本描述") + private String versionDesc; + @ApiModelProperty(name = "usage",value = "使用示例") + private String usage; + @ApiModelProperty(name = "update_time",value = "更新时间") + private String updateTime; + @ApiModelProperty(name = "processing_code",value = "处理代码") + private String processingCode; + } From 230029734c3d7e952a23274127529a8f983cc820 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 5 Sep 2024 15:31:35 +0800 Subject: [PATCH 031/381] update dataset version --- .../dataset/NewDatasetFromGitController.java | 76 +++++++++++-------- .../platform/service/DatasetService.java | 10 ++- .../ruoyi/platform/service/GitService.java | 8 ++ .../service/impl/DatasetServiceImpl.java | 61 ++++++++++++++- .../platform/service/impl/GitServiceImpl.java | 26 ++++++- .../com/ruoyi/platform/utils/DVCUtils.java | 43 ++++++----- .../com/ruoyi/platform/utils/HttpUtils.java | 43 +++++++++++ .../com/ruoyi/platform/vo/NewDatasetVo.java | 2 +- 8 files changed, 208 insertions(+), 61 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 26bf86be..faea384c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -53,6 +53,47 @@ public class NewDatasetFromGitController { } + @GetMapping("/queryDatasets") + @ApiOperation("数据集广场公开数据集分页查询,根据data_type,data_tag筛选,true公开false私有") + public AjaxResult queryDatasets(Dataset dataset, @RequestParam("page") int page, + @RequestParam("size") int size, + @RequestParam(value = "is_public") Boolean isPublic, + @RequestParam(value = "data_type", required = false) String dataType, + @RequestParam(value = "data_tag", required = false) String dataTag) throws Exception { + PageRequest pageRequest = PageRequest.of(page, size); + if(isPublic){ + return AjaxResult.success(this.datasetService.newPubilcQueryByPage(dataset, pageRequest)); + }else { + return AjaxResult.success(this.datasetService.newPersonalQueryByPage(dataset, pageRequest)); + } + } + + @GetMapping("/getVersionList") + @ApiOperation(value = "获取分支列表") + public AjaxResult getVersionList(@RequestParam("String") String repo,@RequestParam("owner")String owner) throws Exception { + return AjaxResult.success(this.datasetService.getVersionList(repo,owner)); + } + + @GetMapping("/getdatasetDetail") + @ApiOperation(value = "获取数据集详情") + public AjaxResult getDatasetVersions(@RequestParam("name") String name,@RequestParam("repo_id") Integer repoId,@RequestParam("version")String version) throws Exception { + return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,version)); + } + + @DeleteMapping("/deleteDataset") + @ApiOperation(value = "删除数据集") + public AjaxResult deleteDataset(@RequestParam("String") String repo,@RequestParam("owner")String owner) throws Exception { + this.datasetService.deleteDatasetNew(repo,owner); + return AjaxResult.success(); + } + + @DeleteMapping("/deleteDatasetVersion") + @ApiOperation(value = "删除数据集版本") + public AjaxResult deleteDatasetVersion(@RequestParam("String") String repo,@RequestParam("owner")String owner,@RequestParam("version")String version) throws Exception { + this.datasetService.deleteDatasetVersionNew(repo,owner,version); + return AjaxResult.success(); + } + /** * 上传数据集 @@ -83,40 +124,13 @@ public class NewDatasetFromGitController { /** * 下载数据集 * - * @param dataset_version_id ps:这里的id是dataset_version表的主键 + * @param url ps:路径 * @return 单条数据 */ - @GetMapping("/download/{dataset_version_id}") + @GetMapping("/downloadSinggerFile") @ApiOperation(value = "下载单个数据集文件", notes = "根据数据集版本表id下载单个数据集文件") - public ResponseEntity downloadDataset(@PathVariable("dataset_version_id") Integer dataset_version_id) throws Exception { - return datasetService.downloadDataset(dataset_version_id); - } - - @GetMapping("/queryDatasets") - @ApiOperation("数据集广场公开数据集分页查询,根据data_type,data_tag筛选,true公开false私有") - public AjaxResult queryDatasets(Dataset dataset, @RequestParam("page") int page, - @RequestParam("size") int size, - @RequestParam(value = "is_public") Boolean isPublic, - @RequestParam(value = "data_type", required = false) String dataType, - @RequestParam(value = "data_tag", required = false) String dataTag) throws Exception { - PageRequest pageRequest = PageRequest.of(page, size); - if(isPublic){ - return AjaxResult.success(this.datasetService.newPubilcQueryByPage(dataset, pageRequest)); - }else { - return AjaxResult.success(this.datasetService.newPersonalQueryByPage(dataset, pageRequest)); - } - } - - @GetMapping("/getVersionList") - @ApiOperation(value = "获取分支列表") - public AjaxResult getVersionList(@RequestParam("name") String name,@RequestParam("repo_id") Integer repoId,@RequestParam("version")String version) throws Exception { - return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,version)); - } - - @GetMapping("/getdatasetDetail") - @ApiOperation(value = "获取数据集详情") - public AjaxResult getDatasetVersions(@RequestParam("name") String name,@RequestParam("repo_id") Integer repoId,@RequestParam("version")String version) throws Exception { - return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,version)); + public ResponseEntity downloadDataset(@RequestParam("url") String url) throws Exception { + return datasetService.downloadDatasetlocal(url); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index cddbd552..423e8956 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -95,13 +95,17 @@ DatasetService { CompletableFuture newCreateDataset(NewDatasetVo datasetVo) throws Exception; CompletableFuture newCreateVersion(NewDatasetVo datasetVo); - - List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception; - + ResponseEntity downloadDatasetlocal(String filePath) throws Exception; ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws IOException, Exception; Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName, String version); + + List> getVersionList(String repo, String owner) throws Exception; + + void deleteDatasetNew(String repo, String owner) throws Exception; + + void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java index e130896b..96af9291 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java @@ -2,6 +2,8 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.GitProjectVo; +import java.io.IOException; +import java.util.List; import java.util.Map; public interface GitService { @@ -14,4 +16,10 @@ public interface GitService { void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception; void createTopic(String token, Integer id, String topicName) throws Exception; + + List> getBrancheList(String token, String owner, String projectName) throws Exception; + + void deleteProject(String token, String owner, String projectName) throws Exception; + + void deleteBranch(String token, String owner,String projectName ,String branchName) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 4233d62d..3e54976f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -506,7 +506,7 @@ public class DatasetServiceImpl implements DatasetService { DVCUtils.moveFiles(sourcePath, localPath); //拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); - datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setUpdateTime(DateUtils.getNowDate()); datasetVo.setVersionDesc(datasetVo.getDescription()); datasetVo.setUsage("```bash\n" + "# 克隆数据集配置文件与存储参数到本地\n" + @@ -564,7 +564,7 @@ public class DatasetServiceImpl implements DatasetService { String sourcePath = url.substring(0, url.lastIndexOf("/")); // 命令行操作 git clone 项目地址 if(FileUtil.checkDirectoryExists(localPath)){ - DVCUtils.gitFetch(localPath); + DVCUtils.gitFetch(localPath,gitLinkUsername, gitLinkPassword); DVCUtils.gitCheckoutBranch(localPath,branchName); }else { DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); @@ -575,7 +575,7 @@ public class DatasetServiceImpl implements DatasetService { DVCUtils.moveFiles(sourcePath, localPath); //拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); - datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setUpdateTime(DateUtils.getNowDate()); datasetVo.setVersionDesc(datasetVo.getDescription()); datasetVo.setUsage("```bash\n" + "# 克隆数据集配置文件与存储参数到本地\n" + @@ -661,8 +661,11 @@ public class DatasetServiceImpl implements DatasetService { @Override public NewDatasetVo getNewDatasetDesc(Integer repoId,String repositoryName, String version) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); // cd到 localPathlocal/repoId/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal+repoId, repositoryName, version); + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal+repoId, repositoryName, version,gitLinkUsername, gitLinkPassword); //在localPathlocal+repoId+"/"+repositoryName目录下的dataset.yaml中取到元数据 Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + repoId + "/" + repositoryName + "/dataset.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); @@ -681,6 +684,34 @@ public class DatasetServiceImpl implements DatasetService { return newDatasetVo; } + @Override + public List> getVersionList(String repo, String owner) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + List> brancheList = gitService.getBrancheList(token, owner, repo); + return brancheList; + } + + @Override + public void deleteDatasetNew(String repo, String owner) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + gitService.deleteProject(token, owner, repo); + } + + @Override + public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + gitService.deleteBranch(token, owner, repo, version); + } + @Override public List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception { List> results = new ArrayList<>(); @@ -708,6 +739,28 @@ public class DatasetServiceImpl implements DatasetService { return results; } + @Override + public ResponseEntity downloadDatasetlocal(String filePath) throws Exception { + File file = new File(filePath); + + if (!file.exists()) { + throw new FileNotFoundException("File not found: " + filePath); + } + + InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); + + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName()); + headers.add(HttpHeaders.CONTENT_LENGTH, String.valueOf(file.length())); + headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); + + return ResponseEntity.ok() + .headers(headers) + .contentLength(file.length()) + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(resource); + } + @Override public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { // 命令行操作 git clone 项目地址 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 40980dc9..73e42491 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -1,9 +1,9 @@ package com.ruoyi.platform.service.impl; -import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.service.GitService; import com.ruoyi.platform.utils.HttpUtils; +import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.vo.GitProjectVo; import com.ruoyi.system.api.model.LoginUser; @@ -14,7 +14,9 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import redis.clients.jedis.Jedis; +import java.io.IOException; import java.util.HashMap; +import java.util.List; import java.util.Map; @Service @@ -95,4 +97,26 @@ public class GitServiceImpl implements GitService { String req = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/v1/project_topics.json",JsonUtils.objectToJson(resMap),token); System.out.println(req); } + + @Override + public List> getBrancheList(String token, String owner, String projectName) throws Exception { + String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/"+owner+"/"+projectName+"/branches/all.json",null, token); + // 解析响应JSON + if (StringUtils.isEmpty(req)) { + throw new RuntimeException("终止响应内容为空。"); + } + // 将响应的JSON字符串转换为List对象 + List> mapList = JacksonUtil.parseJSONStr2MapList(req); + return mapList; + } + + @Override + public void deleteProject(String token, String owner, String projectName) throws Exception { + HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/"+owner+"/"+projectName+".json", token); + } + + @Override + public void deleteBranch(String token, String owner, String projectName, String branchName) throws Exception { + HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/"+owner+"/"+projectName+"/branches/"+branchName+".json", token); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index e364dcb3..2fa7780f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -6,6 +6,8 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import org.eclipse.jgit.transport.CredentialsProvider; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.*; import java.nio.file.*; @@ -16,6 +18,8 @@ import java.util.Map; public class DVCUtils { + private static final Logger log = LoggerFactory.getLogger(DVCUtils.class); + private static void runCommand(String command, String workingDir) throws Exception { ProcessBuilder processBuilder = new ProcessBuilder(command.split(" ")); processBuilder.directory(new File(workingDir)); @@ -99,14 +103,17 @@ public class DVCUtils { } } - public static void gitFetch(String localPath) { - try { - ProcessBuilder pb = new ProcessBuilder("git", "fetch"); - pb.directory(new File(localPath)); - Process process = pb.start(); - process.waitFor(); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); + public static void gitFetch(String localPath, String username, String password) throws IOException, GitAPIException { + FileRepositoryBuilder builder = new FileRepositoryBuilder(); + Repository repository = builder.setGitDir(new File(localPath, ".git")) + .readEnvironment() + .findGitDir() + .build(); + + try (Git git = new Git(repository)) { + CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + FetchCommand fetchCommand = git.fetch(); + fetchCommand.setCredentialsProvider(credentialsProvider).call(); } } public static void gitCheckoutBranch(String localPath, String branchName) throws IOException, GitAPIException { @@ -186,25 +193,19 @@ public class DVCUtils { * @param branch 分支名称 * @return 包含文件路径、名称和大小的List> */ - public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch) { + public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch,String username, String password) { List> fileInfoList = new ArrayList<>(); try { // 切换到指定目录 Path repoPath = Paths.get(localPath, repoFolder); + //刷新 + gitFetch(localPath, username, password); // 切换到指定分支 - ProcessBuilder pb = new ProcessBuilder("git", "checkout", branch); - pb.directory(repoPath.toFile()); - Process process = pb.start(); - process.waitFor(); - + gitCheckoutBranch(localPath, branch); // 执行git pull - pb = new ProcessBuilder("git", "pull"); - pb.directory(repoPath.toFile()); - process = pb.start(); - process.waitFor(); - + gitPull(localPath, username, password); // 读取data文件夹中的文件列表 Path dataPath = Paths.get(repoPath.toString(), "data"); File[] files = dataPath.toFile().listFiles(); @@ -226,8 +227,8 @@ public class DVCUtils { } } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); + } catch (Exception e) { + log.error("Error occurred while getting file details after git pull", e); } return fileInfoList; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java index 504c4c6a..7a3d5518 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java @@ -9,6 +9,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; @@ -622,4 +623,46 @@ public class HttpUtils { } return resultStr; } + + + + // 其他方法保持不变 + + /** + * 向指定 URL 发送带 token 的 DELETE 方法的请求 + * + * @param url 发送请求的 URL + * @param token 认证 token,作为请求头的一部分。 + * @return 所代表远程资源的响应结果 + * @throws IOException 如果请求失败或发生其他 I/O 错误。 + */ + public static String sendDeleteRequest(String url, String token) throws IOException { + String result = ""; + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + HttpDelete httpDelete = new HttpDelete(url); + + // 设置请求头 + httpDelete.setHeader("Authorization", "Bearer " + token); + httpDelete.setHeader("Content-Type", "application/json"); + + // 创建请求配置 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(15000) // 连接服务区主机超时时间 + .setConnectionRequestTimeout(60000) // 连接请求超时时间 + .setSocketTimeout(60000) // 设置读取响应数据超时时间 + .build(); + httpDelete.setConfig(requestConfig); + + // 执行请求 + try (CloseableHttpResponse response = httpClient.execute(httpDelete)) { + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == 200) { + result = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + } else { + throw new IOException("HTTP request failed with response code: " + statusCode); + } + } + } + return result; + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index f4566b5f..bd329b12 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -53,7 +53,7 @@ public class NewDatasetVo implements Serializable { @ApiModelProperty(name = "usage",value = "使用示例") private String usage; @ApiModelProperty(name = "update_time",value = "更新时间") - private String updateTime; + private Date updateTime; @ApiModelProperty(name = "processing_code",value = "处理代码") private String processingCode; From 16332d4d0b0b1ded3ffce07159d507adc483e569 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 5 Sep 2024 16:33:03 +0800 Subject: [PATCH 032/381] =?UTF-8?q?=E6=96=B0=E6=A8=A1=E5=9E=8Bdvc=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 48 ++- .../platform/domain/ModelDependency1.java | 25 ++ .../com/ruoyi/platform/domain/Models.java | 27 +- .../platform/mapper/ModelDependency1Dao.java | 17 ++ .../ruoyi/platform/service/ModelsService.java | 11 +- .../service/impl/DatasetServiceImpl.java | 118 +++---- .../service/impl/ModelsServiceImpl.java | 289 +++++++++++------- .../com/ruoyi/platform/utils/ConvertUtil.java | 17 +- .../com/ruoyi/platform/utils/DVCUtils.java | 10 +- .../com/ruoyi/platform/utils/YamlUtils.java | 10 +- .../platform/vo/ModelDependency1TreeVo.java | 18 ++ .../com/ruoyi/platform/vo/ModelMetaVo.java | 67 ++++ .../java/com/ruoyi/platform/vo/ModelsVo.java | 35 +-- .../ModelDependency1DaoMapper.xml | 29 ++ .../managementPlatform/ModelsDaoMapper.xml | 4 +- 15 files changed, 505 insertions(+), 220 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelDependency1TreeVo.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java create mode 100644 ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 2966d2bb..14f53e80 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -9,6 +9,7 @@ import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -20,16 +21,17 @@ public class NewModelFromGitController { @Resource private ModelsService modelsService; - @PostMapping("/addModelAndVersion") - @ApiOperation("添加模型和版本") + @PostMapping("/addModel") + @ApiOperation("添加模型") public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { return AjaxResult.success(this.modelsService.newCreateModel(modelsVo)); } - @PostMapping("/addVersion") - @ApiOperation("添加版本") - public AjaxResult addVersion(@RequestBody ModelsVo modelsVo) throws Exception { - return AjaxResult.success(this.modelsService.newCreateVersion(modelsVo)); + @CrossOrigin(origins = "*", allowedHeaders = "*") + @PostMapping("/upload") + @ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。") + public AjaxResult uploadModel(@RequestParam("file") MultipartFile[] files, @RequestParam("uuid") String uuid) throws Exception { + return AjaxResult.success(this.modelsService.uploadModelLocal(files, uuid)); } /** @@ -61,15 +63,15 @@ public class NewModelFromGitController { return modelsService.downloadModels(model_version_id); } - @GetMapping("/queryDatasets") + @GetMapping("/queryModels") @ApiOperation("模型广场公开模型分页查询,根据model_type,model_tag筛选,true公开false私有") - public AjaxResult queryDatasets(@RequestParam(value = "page") int page, - @RequestParam(value = "size") int size, - @RequestParam(value = "is_public") Boolean isPublic, - @RequestParam(value = "model_type", required = false) String modelType, - @RequestParam(value = "model_tag", required = false) String modelTag, - @RequestParam(value = "git_link_username") String gitLinkUsername, - @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { + public AjaxResult queryModels(@RequestParam(value = "page") int page, + @RequestParam(value = "size") int size, + @RequestParam(value = "is_public") Boolean isPublic, + @RequestParam(value = "model_type", required = false) String modelType, + @RequestParam(value = "model_tag", required = false) String modelTag, + @RequestParam(value = "git_link_username") String gitLinkUsername, + @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { PageRequest pageRequest = PageRequest.of(page, size); ModelsVo modelsVo = new ModelsVo(); modelsVo.setModelType(modelType); @@ -83,4 +85,22 @@ public class NewModelFromGitController { } } + @GetMapping("/getModelVersions/{modelName}") + @ApiOperation(value = "获取模型所有版本号") + public AjaxResult getModelVersions(@PathVariable("modelName") String modelName) throws Exception { + return AjaxResult.success(this.modelsService.getNewModelVersion(modelName)); + } + + + @GetMapping("/getModelMeta") + @ApiOperation(value = "获取模型元数据") + public AjaxResult getModelMeta(@RequestParam("modelName") String modelName, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelMeta(modelName, version)); + } + + @GetMapping("/getModelDependencyTree") + @ApiOperation(value = "获取模型依赖关系树") + public AjaxResult getModelDependencyTree(@RequestParam("modelName") String modelName, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDependencyTree(modelName, version)); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java new file mode 100644 index 00000000..2cd34060 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java @@ -0,0 +1,25 @@ +package com.ruoyi.platform.domain; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; + +import java.io.Serializable; + +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@Data +public class ModelDependency1 implements Serializable { + private Long id; + + private String parentModel; + + private String modelName; + + private String version; + + private Integer repoId; + + private String repoName; + + private Integer state; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java index 449ae7f0..db7f6bb8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Models.java @@ -6,8 +6,8 @@ import com.ruoyi.platform.annotations.CheckDuplicate; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import java.util.Date; import java.io.Serializable; +import java.util.Date; /** * (Models)实体类 @@ -53,17 +53,18 @@ public class Models implements Serializable { @ApiModelProperty(value = "状态,0失效,1生效") private Integer state; + @ApiModelProperty(value = "模型gitLink仓库id") + private Integer repoId; + + @ApiModelProperty(value = "模型gitLink仓库名称") + private String repoName; @ApiModelProperty(value = "模型类型名") private String modelTypeName; - - @ApiModelProperty(value = "模型tag名") private String modelTagName; - - public Integer getId() { return id; } @@ -170,6 +171,22 @@ public class Models implements Serializable { this.state = state; } + public Integer getRepoId() { + return repoId; + } + + public void setRepoId(Integer repoId) { + this.repoId = repoId; + } + + public String getRepoName() { + return repoName; + } + + public void setRepoName(String repoName) { + this.repoName = repoName; + } + public String getModelTagName() { return modelTagName; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java new file mode 100644 index 00000000..cb54b28f --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java @@ -0,0 +1,17 @@ +package com.ruoyi.platform.mapper; + +import com.ruoyi.platform.domain.ModelDependency1; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ModelDependency1Dao { + + int insert(ModelDependency1 modelDependency1); + + List queryByModelName(@Param("modelName") String modelName); + + ModelDependency1 queryByModelNameAndVersion(@Param("modelName") String modelName, @Param("version") String version); + + List queryByParentModel(@Param("parentModel") String parentModel); +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 8502fd95..aea4559a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -3,6 +3,8 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.vo.ModelDependency1TreeVo; +import com.ruoyi.platform.vo.ModelMetaVo; import com.ruoyi.platform.vo.ModelsVo; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -86,14 +88,19 @@ public interface ModelsService { List> exportModels(String path, String uuid) throws Exception; - CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception; - CompletableFuture newCreateVersion(ModelsVo modelsVo); + List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception; ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception; Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; + + List getNewModelVersion(String modelName); + + ModelMetaVo getModelMeta(String modelName, String version) throws Exception; + + ModelDependency1TreeVo getModelDependencyTree(String modelName, String version)throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 4233d62d..887b3ed7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -79,7 +79,7 @@ public class DatasetServiceImpl implements DatasetService { private String bucketName; @Resource - private MinioUtil minioUtil; + private MinioUtil minioUtil; @Value("${spring.redis.host}") private String redisHost; @@ -130,8 +130,8 @@ public class DatasetServiceImpl implements DatasetService { /** * 分页查询 * - * @param dataset 筛选条件 - * @param pageRequest 分页对象 + * @param dataset 筛选条件 + * @param pageRequest 分页对象 * @return 查询结果 */ @Override @@ -171,7 +171,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public Dataset update(Dataset dataset) { int currentState = dataset.getState(); - if (currentState == 0){ + if (currentState == 0) { throw new RuntimeException("数据集已被删除,无法更新。"); } LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -195,7 +195,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public String removeById(Integer id) throws Exception { Dataset dataset = this.datasetDao.queryById(id); - if (dataset == null){ + if (dataset == null) { throw new Exception("数据集不存在"); } @@ -203,15 +203,15 @@ public class DatasetServiceImpl implements DatasetService { LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); String createdBy = dataset.getCreateBy(); - if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ + if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createdBy))) { throw new Exception("无权限删除该数据集"); } - if (datasetVersionService.queryByDatasetId(id).size()>0){ + if (datasetVersionService.queryByDatasetId(id).size() > 0) { throw new Exception("请先删除该数据集下的版本文件"); } dataset.setState(0); - return this.datasetDao.update(dataset)>0?"删除数据集成功":"删除数据集失败"; + return this.datasetDao.update(dataset) > 0 ? "删除数据集成功" : "删除数据集失败"; } /** @@ -230,14 +230,14 @@ public class DatasetServiceImpl implements DatasetService { // 从数据库中获取存储路径(即MinIO中的对象名称) String objectName = datasetVersion.getUrl(); - if(objectName == null || objectName.isEmpty() ){ + if (objectName == null || objectName.isEmpty()) { throw new Exception("未找到该版本数据集文件"); } try { // 使用ByteArrayOutputStream来捕获下载的数据 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - minioUtil.downloadObject(bucketName,objectName,outputStream); + minioUtil.downloadObject(bucketName, objectName, outputStream); ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); InputStreamResource resource = new InputStreamResource(inputStream); @@ -250,20 +250,20 @@ public class DatasetServiceImpl implements DatasetService { e.printStackTrace(); throw new Exception("下载数据集文件错误"); } - } + } /** * 上传数据集 * * @param files 文件 - * @param uuid 唯一标识 + * @param uuid 唯一标识 * @return 是否成功 */ @Override public List> uploadDataset(MultipartFile[] files, String uuid) throws Exception { List> results = new ArrayList<>(); - for (MultipartFile file:files){ + for (MultipartFile file : files) { // 构建objectName String username = SecurityUtils.getLoginUser().getUsername(); String fileName = file.getOriginalFilename(); @@ -296,7 +296,7 @@ public class DatasetServiceImpl implements DatasetService { datasetVersion.setUpdateTime(date); datasetVersion.setState(1); datasetVersionDao.insert(datasetVersion); - }else { + } else { //改表 BeansUtils.copyPropertiesIgnoreNull(datasetVersion, version); Date createTime = version.getCreateTime(); @@ -306,7 +306,7 @@ public class DatasetServiceImpl implements DatasetService { datasetVersionService.update(version); } Map result = new HashMap(); - result.put("url",url); + result.put("url", url); return result; } @@ -330,7 +330,7 @@ public class DatasetServiceImpl implements DatasetService { @Transactional public String insertDatasetAndVersion(DatasetVo datasetVo) throws Exception { List datasetVersionVos = datasetVo.getDatasetVersionVos(); - if (datasetVersionVos==null || datasetVersionVos.isEmpty()){ + if (datasetVersionVos == null || datasetVersionVos.isEmpty()) { throw new Exception("数据集版本信息错误"); } @@ -342,11 +342,11 @@ public class DatasetServiceImpl implements DatasetService { dataset.setDataType(datasetVo.getDataType()); dataset.setDataTag(datasetVo.getDataTag()); Dataset datasetInsert = this.insert(dataset); - if (datasetInsert == null){ + if (datasetInsert == null) { throw new Exception("新增数据集失败"); } - for (VersionVo datasetVersionVo : datasetVersionVos){ + for (VersionVo datasetVersionVo : datasetVersionVos) { DatasetVersion datasetVersion = new DatasetVersion(); datasetVersion.setDatasetId(datasetInsert.getId()); datasetVersion.setVersion(datasetVo.getVersion()); @@ -388,7 +388,7 @@ public class DatasetServiceImpl implements DatasetService { } @Override - public ResponseEntity downloadAllDatasetFiles(Integer datasetId, String version) throws Exception { + public ResponseEntity downloadAllDatasetFiles(Integer datasetId, String version) throws Exception { // 根据数据集id查数据名 Dataset dataset = this.datasetDao.queryById(datasetId); String datasetName = dataset.getName(); @@ -420,7 +420,7 @@ public class DatasetServiceImpl implements DatasetService { // 设置响应 return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + datasetName + "_" + version + ".zip\"") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + datasetName + "_" + version + ".zip\"") .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); } catch (Exception e) { @@ -442,7 +442,7 @@ public class DatasetServiceImpl implements DatasetService { minioUtil.copyDirectory(srcBucketName, srcDir, bucketName, targetDir); List movedItems = minioUtil.getAllObjectsByPrefix(bucketName, targetDir, true); for (Item movedItem : movedItems) { - if(!movedItem.isDir() && movedItem.size() > 0){ // 检查是否为非目录且文件大小大于0 + if (!movedItem.isDir() && movedItem.size() > 0) { // 检查是否为非目录且文件大小大于0 Map result = new HashMap<>(); String url = movedItem.objectName(); String fileName = extractFileName(url); @@ -459,7 +459,6 @@ public class DatasetServiceImpl implements DatasetService { } - @Override public CompletableFuture newCreateDataset(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { @@ -493,19 +492,19 @@ public class DatasetServiceImpl implements DatasetService { gitService.createTopic(token, repoId, "DataTag_" + datasetVo.getDataTag()); gitService.createTopic(token, repoId, "DataType_" + datasetVo.getDataType()); // 得到项目地址 - String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; // 得到用户操作的路径 String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal + "/" + repoId+"/"+datasetVo.getName(); + String localPath = localPathlocal + ci4sUsername + "/datasets/" + datasetVo.getName() + "/" + branchName; String sourcePath = url.substring(0, url.lastIndexOf("/")); // 命令行操作 git clone 项目地址 DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/"+repoId+"/"+ repositoryName + "/" + branchName; + String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/" + repoId + "/" + repositoryName + "/" + branchName; - DVCUtils.moveFiles(sourcePath, localPath); + DVCUtils.moveFiles(sourcePath, localPath + "/data"); //拼接生产的元数据后写入yaml文件 - datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); datasetVo.setVersionDesc(datasetVo.getDescription()); datasetVo.setUsage("```bash\n" + @@ -514,7 +513,7 @@ public class DatasetServiceImpl implements DatasetService { "# 远程拉取配置文件\n" + "dvc pull\n" + "```"); - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),localPath, "dataset"); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath + "/metadata", "metadata"); // dvc init 初始化 DVCUtils.dvcInit(localPath); // 配置远程S3地址 @@ -550,31 +549,31 @@ public class DatasetServiceImpl implements DatasetService { String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); // 创建分支 - String branchName = StringUtils.isEmpty(datasetVo.getVersion())? "master" : datasetVo.getVersion(); + String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); String repositoryName = datasetVo.getIdentifier(); if (StringUtils.equals(branchName, "master")) { gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); } // 得到项目地址 - String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; // 得到用户操作的路径 String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+ datasetVo.getName(); + String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + datasetVo.getName() + "/" + branchName; String sourcePath = url.substring(0, url.lastIndexOf("/")); // 命令行操作 git clone 项目地址 - if(FileUtil.checkDirectoryExists(localPath)){ + if (FileUtil.checkDirectoryExists(localPath)) { DVCUtils.gitFetch(localPath); - DVCUtils.gitCheckoutBranch(localPath,branchName); - }else { + DVCUtils.gitCheckoutBranch(localPath, branchName); + } else { DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); } - String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/"+ datasetVo.getRepoId()+"/"+ repositoryName + "/" + branchName; + String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/" + datasetVo.getRepoId() + "/" + repositoryName + "/" + branchName; - DVCUtils.moveFiles(sourcePath, localPath); + DVCUtils.moveFiles(sourcePath, localPath + "/data"); //拼接生产的元数据后写入yaml文件 - datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); datasetVo.setVersionDesc(datasetVo.getDescription()); datasetVo.setUsage("```bash\n" + @@ -583,7 +582,7 @@ public class DatasetServiceImpl implements DatasetService { "# 远程拉取配置文件\n" + "dvc pull\n" + "```"); - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),localPath, "dataset"); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath + "/metadata", "metadata"); // dvc init 初始化 DVCUtils.dvcInit(localPath); @@ -622,10 +621,10 @@ public class DatasetServiceImpl implements DatasetService { String datasetTagName = dataset.getDatasetTagName(); String datasetTypeName = dataset.getDatasetTypeName(); String topic_name = "ci4s_dataset"; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatag_" + datasetTagName; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatype_" + datasetTypeName; - String url = gitendpoint + "/api/users/"+(String) userInfo.get("login")+"/projects.json?page="+pageRequest.getPageNumber()+"&limit="+pageRequest.getPageSize()+"&category=manage&topic_name="+topic_name; - String req = HttpUtils.sendGetWithToken(url,null,token); + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName; + String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name; + String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("count"); List> projects = (List>) stringObjectMap.get("projects"); @@ -647,11 +646,11 @@ public class DatasetServiceImpl implements DatasetService { String datasetTagName = dataset.getDatasetTagName(); String datasetTypeName = dataset.getDatasetTypeName(); String topic_name = "ci4s_dataset"; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatag_" + datasetTagName; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatype_" + datasetTypeName; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName; - String url = gitendpoint + "/api/projects.json?user_id="+userId+"&page="+pageRequest.getPageNumber()+"&limit="+pageRequest.getPageSize()+"&sort_by=praises_count&topic_name="+topic_name; - String req = HttpUtils.sendGetWithToken(url,null,token); + String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name; + String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("total_count"); List> projects = (List>) stringObjectMap.get("projects"); @@ -660,15 +659,17 @@ public class DatasetServiceImpl implements DatasetService { } @Override - public NewDatasetVo getNewDatasetDesc(Integer repoId,String repositoryName, String version) { + public NewDatasetVo getNewDatasetDesc(Integer repoId, String repositoryName, String version) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); // cd到 localPathlocal/repoId/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal+repoId, repositoryName, version); + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal + ci4sUsername + "/datasets/", repositoryName, version, "data"); //在localPathlocal+repoId+"/"+repositoryName目录下的dataset.yaml中取到元数据 - Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + repoId + "/" + repositoryName + "/dataset.yaml"); + Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + ci4sUsername + "/datasets/" + repositoryName + "/" + version + "/metadata/metadata.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); List versionVos = new ArrayList(); - if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){ - for(Map fileDetail : fileDetailsAfterGitPull){ + if (fileDetailsAfterGitPull != null && fileDetailsAfterGitPull.size() > 0) { + for (Map fileDetail : fileDetailsAfterGitPull) { VersionVo versionVo = new VersionVo(); versionVo.setUrl((String) fileDetail.get("filePath")); versionVo.setFileName((String) fileDetail.get("fileName")); @@ -685,11 +686,11 @@ public class DatasetServiceImpl implements DatasetService { public List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception { List> results = new ArrayList<>(); - for (MultipartFile file:files){ + for (MultipartFile file : files) { // 构建objectName String username = SecurityUtils.getLoginUser().getUsername(); String fileName = file.getOriginalFilename(); - String path = "/temp/"+ username +"/datasets/"+ uuid + "/"+"/data/" + fileName; + String path = "/temp/" + username + "/datasets/" + uuid + "/" + "/data/" + fileName; long sizeInBytes = file.getSize(); String formattedSize = FileUtil.formatFileSize(sizeInBytes); File targetFile = new File(path, file.getOriginalFilename()); @@ -720,17 +721,17 @@ public class DatasetServiceImpl implements DatasetService { String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); Integer userId = (Integer) userInfo.get("user_id"); - String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; - String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/" +repositoryName; + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + repositoryName; File folder = new File(localPath); - if(folder.exists() && folder.isDirectory()){ + if (folder.exists() && folder.isDirectory()) { //切换分支 DVCUtils.gitCheckoutBranch(localPath, version); //pull - DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword); + DVCUtils.gitPull(localPath, gitLinkUsername, gitLinkPassword); //dvc pull DVCUtils.dvcPull(localPath); - }else { + } else { DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword); } @@ -767,7 +768,6 @@ public class DatasetServiceImpl implements DatasetService { } - public List convert(List> lst) { if (lst != null && lst.size() > 0) { List newDatasetVos = ConvertUtil.convertListMapToObjectList(lst, NewDatasetVo.class); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index caef5b1d..92038a0b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -4,20 +4,22 @@ import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.AssetIcon; +import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.mapper.ModelsDao; import com.ruoyi.platform.mapper.ModelsVersionDao; import com.ruoyi.platform.service.*; import com.ruoyi.platform.utils.*; -import com.ruoyi.platform.vo.GitProjectVo; -import com.ruoyi.platform.vo.ModelsVo; -import com.ruoyi.platform.vo.VersionVo; +import com.ruoyi.platform.vo.*; import com.ruoyi.system.api.model.LoginUser; import io.minio.messages.Item; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -63,6 +65,9 @@ public class ModelsServiceImpl implements ModelsService { @Resource private ModelsVersionService modelsVersionService; + @Resource + private ModelDependency1Dao modelDependency1Dao; + @Resource private MinioService minioService; @@ -376,7 +381,7 @@ public class ModelsServiceImpl implements ModelsService { @Override @Transactional public String insertModelAndVersion(ModelsVo modelsVo) throws Exception { - List modelsVersionVos = modelsVo.getModelsVersionVos(); + List modelsVersionVos = modelsVo.getModelVersionVos(); if (modelsVersionVos == null || modelsVersionVos.isEmpty()) { throw new Exception("模型版本信息错误"); @@ -514,7 +519,6 @@ public class ModelsServiceImpl implements ModelsService { public CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception { return CompletableFuture.supplyAsync(() -> { try { - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); Jedis jedis = new Jedis(redisHost); @@ -522,55 +526,45 @@ public class ModelsServiceImpl implements ModelsService { Map userInfo = JsonUtils.jsonToMap(userReq); Integer userId = (Integer) userInfo.get("user_id"); - // 拼接project - String repositoryName = ci4sUsername + "_model_" + DateUtils.dateTimeNow(); - GitProjectVo gitProjectVo = new GitProjectVo(); - gitProjectVo.setRepositoryName(repositoryName); - gitProjectVo.setName(modelsVo.getName()); - gitProjectVo.setDescription(modelsVo.getDescription()); - gitProjectVo.setPrivate(modelsVo.getAvailableRange() == 0); - gitProjectVo.setUserId(userId); - - // 创建项目 - Map project = gitService.createProject(token, gitProjectVo); - - // 创建分支 - String branchName = modelsVo.getVersion(); - gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); - // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType - gitService.createTopic(token, (Integer) project.get("id"), "ci4s_model"); - gitService.createTopic(token, (Integer) project.get("id"), "ModelTag_" + modelsVo.getModelTag()); - gitService.createTopic(token, (Integer) project.get("id"), "ModelType_" + modelsVo.getModelType()); - // 得到项目地址 - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - // 得到用户操作的路径 - String url = modelsVo.getModelsVersionVos().get(0).getUrl(); - String localPath1 = localPath + modelsVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath1, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - String s3Path = "management-platform-files/" + ci4sUsername + "/models/" + repositoryName + "/" + branchName; - - // 拼接生产的元数据后写入yaml文件 - YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelsVo), sourcePath, "model"); - - DVCUtils.moveFiles(sourcePath, localPath1 + "/model"); - - // dvc init 初始化 - DVCUtils.dvcInit(localPath1); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath1, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath1, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath1, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath1, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath1, "model"); - // git commit - DVCUtils.gitAdd(localPath1, "."); - DVCUtils.gitCommit(localPath1, "commit from ci4s with " + ci4sUsername); - DVCUtils.gitPush(localPath1, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath1); + String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName(); + ModelDependency1 modelDependency = new ModelDependency1(); + List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName()); + + if (oldModelDependencys != null && !oldModelDependencys.isEmpty()) { + if (oldModelDependencys.stream().map(ModelDependency1::getVersion).anyMatch(version -> version.equals(modelsVo.getVersion()))) { + throw new RuntimeException("模型版本已存在,请勿重复创建"); + } + + //新建版本 + commonDvc(token, userInfo, ci4sUsername, modelsVo.getRepositoryName(), modelsVo, "CreateModelFromPipeline"); + modelDependency.setRepoId(modelsVo.getRepoId()); + } else { + //新建模型 + // 拼接project + GitProjectVo gitProjectVo = new GitProjectVo(); + gitProjectVo.setRepositoryName(repositoryName); + gitProjectVo.setName(modelsVo.getName()); + gitProjectVo.setDescription(modelsVo.getDescription()); + gitProjectVo.setPrivate(modelsVo.getAvailableRange() == 0); + gitProjectVo.setUserId(userId); + + // 创建项目 + Map project = gitService.createProject(token, gitProjectVo); + modelDependency.setRepoId((Integer) project.get("id")); + // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType + gitService.createTopic(token, (Integer) project.get("id"), "ci4s_model"); + gitService.createTopic(token, (Integer) project.get("id"), "modeltag_" + modelsVo.getModelTag()); + gitService.createTopic(token, (Integer) project.get("id"), "modeltype_" + modelsVo.getModelType()); + commonDvc(token, userInfo, ci4sUsername, repositoryName, modelsVo, "createModel"); + } + + //保存模型依赖 + modelDependency.setRepoName(repositoryName); + modelDependency.setModelName(modelsVo.getName()); + modelDependency.setVersion(modelsVo.getVersion()); + modelDependency.setParentModel(modelsVo.getParentModel()); + modelDependency1Dao.insert(modelDependency); return "新增模型成功"; } catch (Exception e) { logger.error(e.getMessage()); @@ -579,53 +573,32 @@ public class ModelsServiceImpl implements ModelsService { }); } + @Override - public CompletableFuture newCreateVersion(ModelsVo modelsVo) { - return CompletableFuture.supplyAsync(() -> { - try { - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - // 创建分支 - String branchName = modelsVo.getVersion(); - String repositoryName = modelsVo.getRepositoryName(); - gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); - // 得到项目地址 - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - // 得到用户操作的路径 - String url = modelsVo.getModelVersionVos().get(0).getUrl(); - String localPath1 = localPath + ci4sUsername + "/model/" + modelsVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath1, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + repositoryName + "/" + branchName; - //拼接生产的元数据后写入yaml文件 - YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelsVo), sourcePath, "dataset"); - - DVCUtils.moveFiles(sourcePath, localPath1 + "/model"); - // dvc init 初始化 - DVCUtils.dvcInit(localPath1); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath1, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath1, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath1, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath1, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath1, "model"); - // git commit - DVCUtils.gitAdd(localPath1, "."); - DVCUtils.gitCommit(localPath1, "commit from ci4s with " + ci4sUsername); - DVCUtils.gitPush(localPath1, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath1); - return "新增模型成功"; - } catch (Exception e) { - throw new RuntimeException(e); - } - }); + public List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception { + List> results = new ArrayList<>(); + + for (MultipartFile file : files) { + // 构建objectName + String username = SecurityUtils.getLoginUser().getUsername(); + String fileName = file.getOriginalFilename(); + String path = "/temp/" + username + "/models/" + uuid + "/model/"; + long sizeInBytes = file.getSize(); + String formattedSize = FileUtil.formatFileSize(sizeInBytes); + File targetFile = new File(path, file.getOriginalFilename()); + // 确保目录存在 + targetFile.getParentFile().mkdirs(); + // 保存文件到目标路径 + FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile); + // 返回上传文件的路径 + String absolutePath = targetFile.getAbsolutePath(); + Map result = new HashMap<>(); + result.put("fileName", fileName); + result.put("url", absolutePath); // objectName根据实际情况定义 + result.put("fileSize", formattedSize); + results.add(result); + } + return results; } @Override @@ -684,7 +657,7 @@ public class ModelsServiceImpl implements ModelsService { @Override public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { - LoginUser loginUser = SecurityUtils.getLoginUser(); + LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); Jedis jedis = new Jedis(redisHost); @@ -728,6 +701,90 @@ public class ModelsServiceImpl implements ModelsService { return new PageImpl<>(convert(projects), pageRequest, total); } + @Override + public List getNewModelVersion(String modelName) { + List modelDependency1List = modelDependency1Dao.queryByModelName(modelName); + return modelDependency1List.stream().map(ModelDependency1::getVersion).collect(Collectors.toList()); + } + + @Override + public ModelMetaVo getModelMeta(String modelName, String version) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model"); + + Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + modelName + "/" + version + "/metadata/metadata.yaml"); + return ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + } + + @Override + public ModelDependency1TreeVo getModelDependencyTree(String modelName, String version) throws Exception { + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByModelNameAndVersion(modelName, version); + ModelDependency1TreeVo modelDependency1TreeVo = new ModelDependency1TreeVo(); + BeanUtils.copyProperties(modelDependency1, modelDependency1TreeVo); + + //递归查询父模型 + List parentModelList = new ArrayList<>(); + getParentModel(parentModelList, modelDependency1); + modelDependency1TreeVo.setPatrentModelList(parentModelList); + + //递归查询子模型 + getChildModel(modelDependency1TreeVo); + + return modelDependency1TreeVo; + } + + void commonDvc(String token, Map userInfo, String username, String repositoryName, ModelsVo modelsVo, String type) throws Exception { + String branchName = modelsVo.getVersion(); + + // 创建分支 + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); + + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + String url = modelsVo.getModelVersionVos().get(0).getUrl(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + String rootPath = localPath + username + "/model/" + modelsVo.getName() + "/" + branchName; + String modelPath = rootPath + "/model"; + String metaPath = rootPath + "/metadata"; + + + if (type.equals("CreateModelFromPipeline") && FileUtil.checkDirectoryExists(rootPath)) { + DVCUtils.gitFetch(rootPath); + DVCUtils.gitCheckoutBranch(rootPath, branchName); + } else { + DVCUtils.gitClone(rootPath, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + } + + DVCUtils.moveFiles(sourcePath, modelPath); + + //拼接生产的元数据后写入yaml文件 + ModelMetaVo modelMetaVo = new ModelMetaVo(); + BeanUtils.copyProperties(modelsVo, modelMetaVo); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelMetaVo), metaPath, "metadata"); + + // dvc init 初始化 + DVCUtils.dvcInit(rootPath); + + // 配置远程S3地址 + String s3Path = "management-platform-files/" + username + "/model/" + repositoryName + "/" + branchName; + DVCUtils.dvcRemoteAdd(rootPath, s3Path); + DVCUtils.dvcConfigS3Credentials(rootPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); + + // dvc 跟踪 + DVCUtils.dvcAdd(rootPath, "model"); + + // git commit + DVCUtils.gitAdd(rootPath, "."); + DVCUtils.gitCommit(rootPath, "commit from ci4s with " + username); + DVCUtils.gitPush(rootPath, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + + // dvc push 到远程S3 + DVCUtils.dvcPush(rootPath); + } + public List convert(List> lst) { if (lst != null && lst.size() > 0) { List newModelVos = ConvertUtil.convertListMapToObjectList(lst, ModelsVo.class); @@ -754,10 +811,38 @@ public class ModelsServiceImpl implements ModelsService { } } } - return newModelVos; } return new ArrayList<>(); } + void getParentModel(List modelList, ModelDependency1 modelDependency1) { + if (modelDependency1.getParentModel() != null) { + String[] split = modelDependency1.getParentModel().split(":"); + String parentModelName = split[0]; + String parentModelVersion = split[1]; + ModelDependency1 parentModel = modelDependency1Dao.queryByModelNameAndVersion(parentModelName, parentModelVersion); + modelList.add(parentModel); + if (parentModel.getParentModel() != null) { + getParentModel(modelList, parentModel); + } + } + } + + void getChildModel(ModelDependency1TreeVo modelDependency1TreeVo) { + List childModelList = new ArrayList<>(); + String model = modelDependency1TreeVo.getModelName() + ":" + modelDependency1TreeVo.getVersion(); + + List children = modelDependency1Dao.queryByParentModel(model); + if (children != null && !children.isEmpty()) { + for (ModelDependency1 modelDependency1 : children) { + ModelDependency1TreeVo modelDependency1TreeVo1 = new ModelDependency1TreeVo(); + BeanUtils.copyProperties(modelDependency1, modelDependency1TreeVo1); + getChildModel(modelDependency1TreeVo1); + childModelList.add(modelDependency1TreeVo1); + } + } + modelDependency1TreeVo.setChildModelList(childModelList); + } + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index 281664ce..24cede7e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -1,10 +1,11 @@ package com.ruoyi.platform.utils; +import org.apache.commons.beanutils.PropertyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; -import org.apache.commons.beanutils.PropertyUtils; + import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -23,7 +24,7 @@ public class ConvertUtil { public static final Logger logger = LoggerFactory.getLogger(ConvertUtil.class); - /** + /** * 将实体对象转换为VO对象 * @param source 源实体对象 * @param target 目标VO对象的类 @@ -90,7 +91,8 @@ public class ConvertUtil { } } return targetObject; - } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | + NoSuchMethodException e) { e.printStackTrace(); } return null; @@ -98,8 +100,13 @@ public class ConvertUtil { private static boolean hasProperty(Class clazz, String propertyName) { try { - Field field = clazz.getDeclaredField(propertyName); - return field != null; + Class superClazz = clazz.getSuperclass(); + if(superClazz != Object.class){ + return hasProperty(superClazz, propertyName); + } else { + Field field = clazz.getDeclaredField(propertyName); + return field != null; + } } catch (NoSuchFieldException e) { return false; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index e364dcb3..1a6dd3bb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -186,12 +186,12 @@ public class DVCUtils { * @param branch 分支名称 * @return 包含文件路径、名称和大小的List> */ - public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch) { + public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath) { List> fileInfoList = new ArrayList<>(); try { // 切换到指定目录 - Path repoPath = Paths.get(localPath, repoFolder); + Path repoPath = Paths.get(localPath, repoFolder, branch); // 切换到指定分支 ProcessBuilder pb = new ProcessBuilder("git", "checkout", branch); @@ -206,19 +206,19 @@ public class DVCUtils { process.waitFor(); // 读取data文件夹中的文件列表 - Path dataPath = Paths.get(repoPath.toString(), "data"); + Path dataPath = Paths.get(repoPath.toString(), filePath); File[] files = dataPath.toFile().listFiles(); if (files != null) { for (File file : files) { if (file.isFile()) { long size = Files.size(file.toPath()); - String filePath = file.getAbsolutePath(); + String absoluteFilePath = file.getAbsolutePath(); String fileName = file.getName(); Map fileDetails = new HashMap<>(); fileDetails.put("size", size); - fileDetails.put("filePath", filePath); + fileDetails.put("filePath", absoluteFilePath); fileDetails.put("fileName", fileName); fileInfoList.add(fileDetails); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 03ec45b8..c18081f5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -16,8 +16,16 @@ public class YamlUtils { */ public static void generateYamlFile(Map data, String path, String fileName) { Yaml yaml = new Yaml(); - String fullPath = path + "/" + fileName + ".yaml"; + File directory = new File(path); + if (!directory.exists()) { + boolean isCreated = directory.mkdirs(); + if (!isCreated) { + throw new RuntimeException("创建路径失败: " + path); + } + } + + String fullPath = path + "/" + fileName + ".yaml"; try (FileWriter writer = new FileWriter(fullPath)) { yaml.dump(data, writer); } catch (IOException e) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelDependency1TreeVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelDependency1TreeVo.java new file mode 100644 index 00000000..f5505443 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelDependency1TreeVo.java @@ -0,0 +1,18 @@ +package com.ruoyi.platform.vo; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ruoyi.platform.domain.ModelDependency1; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +public class ModelDependency1TreeVo extends ModelDependency1 implements Serializable { + + List patrentModelList; + + List childModelList; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java new file mode 100644 index 00000000..2716bf50 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -0,0 +1,67 @@ +package com.ruoyi.platform.vo; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +public class ModelMetaVo implements Serializable { + @ApiModelProperty(name = "模型名称") + private String name; + + @ApiModelProperty(name = "版本") + private String version; + + @ApiModelProperty(name = "版本描述") + private String versionDescription; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "训练镜像") + private String image; + + @ApiModelProperty(value = "训练代码") + private String code; + + @ApiModelProperty(value = "模型来源") + private String modelSource; + + @ApiModelProperty(value = "训练数据集") + private List trainDatasets; + + @ApiModelProperty(value = "测试数据集") + private List testDatasets; + + @ApiModelProperty(value = "参数") + private HashMap params; + + @ApiModelProperty(value = "指标") + private HashMap metrics; + + @ApiModelProperty(value = "训练任务") + private String trainTask; + + @ApiModelProperty(value = "模型标签(模型能力)") + private String modelTag; + + @ApiModelProperty(value = "模型类型(模型框架)") + private String modelType; + + @ApiModelProperty(value = "模型描述") + private String description; + + @ApiModelProperty(value = "示例用法") + private String examples; + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java index 1189da76..a57184ca 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java @@ -10,15 +10,9 @@ import java.util.List; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data -public class ModelsVo implements Serializable { +public class ModelsVo extends ModelMetaVo implements Serializable { - - @ApiModelProperty(name = "name") - private String name; - - // private String version; - @ApiModelProperty(name = "description") - private String description; + private Integer id; /** * 模型可见范围 @@ -26,22 +20,6 @@ public class ModelsVo implements Serializable { @ApiModelProperty(name = "available_range") private int availableRange; - // private String url; - @ApiModelProperty(name = "model_type") - private String modelType; - - - @ApiModelProperty(name = "model_tag") - private String modelTag; - /** - * 版本 - */ - @ApiModelProperty(name = "version") - private String version; - - @ApiModelProperty(name = "model_version_vos") - private List modelVersionVos; - /** * 状态 */ @@ -53,14 +31,19 @@ public class ModelsVo implements Serializable { private String gitLinkPassword; @ApiModelProperty(name = "models_version_vos") - private List modelsVersionVos; + private List modelVersionVos; /** - * 数据集仓库名称 + * 模型仓库名称 */ @ApiModelProperty(name = "repository_name") private String repositoryName; @ApiModelProperty(name = "repo_id") private Integer repoId; + + /** + * 父模型 + */ + private String parentModel; } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml new file mode 100644 index 00000000..64bedb3a --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -0,0 +1,29 @@ + + + + + + + insert into model_dependency1(parent_model, model_name, version, repo_id, repo_name) + values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{repoName}) + + + + + + + + \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelsDaoMapper.xml index 07a92767..1b57c812 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelsDaoMapper.xml @@ -14,12 +14,14 @@ + + From 4ec2ee52b365f146ec62ed44fc179abffd514e4a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 5 Sep 2024 16:58:13 +0800 Subject: [PATCH 033/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 24 ++++++++++++------- .../com/ruoyi/platform/utils/DVCUtils.java | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 92038a0b..5d7d4ad3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -521,12 +521,14 @@ public class ModelsServiceImpl implements ModelsService { try { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); Integer userId = (Integer) userInfo.get("user_id"); - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + String token = gitService.login(gitLinkUsername, gitLinkPassword); String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName(); ModelDependency1 modelDependency = new ModelDependency1(); List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName()); @@ -537,7 +539,7 @@ public class ModelsServiceImpl implements ModelsService { } //新建版本 - commonDvc(token, userInfo, ci4sUsername, modelsVo.getRepositoryName(), modelsVo, "CreateModelFromPipeline"); + commonDvc(token, userInfo, ci4sUsername, modelsVo.getRepositoryName(), modelsVo, gitLinkUsername, gitLinkPassword, "CreateModelFromPipeline"); modelDependency.setRepoId(modelsVo.getRepoId()); } else { //新建模型 @@ -556,7 +558,7 @@ public class ModelsServiceImpl implements ModelsService { gitService.createTopic(token, (Integer) project.get("id"), "ci4s_model"); gitService.createTopic(token, (Integer) project.get("id"), "modeltag_" + modelsVo.getModelTag()); gitService.createTopic(token, (Integer) project.get("id"), "modeltype_" + modelsVo.getModelType()); - commonDvc(token, userInfo, ci4sUsername, repositoryName, modelsVo, "createModel"); + commonDvc(token, userInfo, ci4sUsername, repositoryName, modelsVo, gitLinkUsername, gitLinkPassword, "createModel"); } //保存模型依赖 @@ -659,7 +661,9 @@ public class ModelsServiceImpl implements ModelsService { public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); @@ -681,7 +685,9 @@ public class ModelsServiceImpl implements ModelsService { public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); @@ -711,8 +717,10 @@ public class ModelsServiceImpl implements ModelsService { public ModelMetaVo getModelMeta(String modelName, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model"); + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + modelName + "/" + version + "/metadata/metadata.yaml"); return ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); @@ -735,7 +743,7 @@ public class ModelsServiceImpl implements ModelsService { return modelDependency1TreeVo; } - void commonDvc(String token, Map userInfo, String username, String repositoryName, ModelsVo modelsVo, String type) throws Exception { + void commonDvc(String token, Map userInfo, String username, String repositoryName, ModelsVo modelsVo, String gitLinkUsername, String gitLinkPassword, String type) throws Exception { String branchName = modelsVo.getVersion(); // 创建分支 @@ -750,7 +758,7 @@ public class ModelsServiceImpl implements ModelsService { if (type.equals("CreateModelFromPipeline") && FileUtil.checkDirectoryExists(rootPath)) { - DVCUtils.gitFetch(rootPath); + DVCUtils.gitFetch(rootPath, gitLinkUsername, gitLinkPassword); DVCUtils.gitCheckoutBranch(rootPath, branchName); } else { DVCUtils.gitClone(rootPath, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 2d7d10a7..1cbcfd4c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -193,7 +193,7 @@ public class DVCUtils { * @param branch 分支名称 * @return 包含文件路径、名称和大小的List> */ - public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch,String username, String password) { + public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) { List> fileInfoList = new ArrayList<>(); try { From 7cbd258afeb6ba1a7fa666d39b1441776a068f6d Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 5 Sep 2024 17:10:34 +0800 Subject: [PATCH 034/381] update dataset version --- .../dataset/NewDatasetFromGitController.java | 14 +++++++++----- .../ruoyi/platform/service/DatasetService.java | 2 +- .../platform/service/impl/DatasetServiceImpl.java | 15 +++++++++++++-- .../java/com/ruoyi/platform/vo/NewDatasetVo.java | 2 ++ 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index faea384c..88fecb11 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -70,26 +70,30 @@ public class NewDatasetFromGitController { @GetMapping("/getVersionList") @ApiOperation(value = "获取分支列表") - public AjaxResult getVersionList(@RequestParam("String") String repo,@RequestParam("owner")String owner) throws Exception { + public AjaxResult getVersionList(@RequestParam("repo") String repo,@RequestParam("owner")String owner) throws Exception { return AjaxResult.success(this.datasetService.getVersionList(repo,owner)); } @GetMapping("/getdatasetDetail") @ApiOperation(value = "获取数据集详情") - public AjaxResult getDatasetVersions(@RequestParam("name") String name,@RequestParam("repo_id") Integer repoId,@RequestParam("version")String version) throws Exception { - return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,version)); + public AjaxResult getDatasetVersions(@RequestParam("name") String name, + @RequestParam("repo_id") Integer repoId, + @RequestParam("owner")String owner, + @RequestParam(value = "identifier") String repo, + @RequestParam(value = "version",required = false)String version) throws Exception { + return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,repo,owner,version)); } @DeleteMapping("/deleteDataset") @ApiOperation(value = "删除数据集") - public AjaxResult deleteDataset(@RequestParam("String") String repo,@RequestParam("owner")String owner) throws Exception { + public AjaxResult deleteDataset(@RequestParam("identifier") String repo,@RequestParam("owner")String owner) throws Exception { this.datasetService.deleteDatasetNew(repo,owner); return AjaxResult.success(); } @DeleteMapping("/deleteDatasetVersion") @ApiOperation(value = "删除数据集版本") - public AjaxResult deleteDatasetVersion(@RequestParam("String") String repo,@RequestParam("owner")String owner,@RequestParam("version")String version) throws Exception { + public AjaxResult deleteDatasetVersion(@RequestParam("identifier") String repo,@RequestParam("owner")String owner,@RequestParam("version")String version) throws Exception { this.datasetService.deleteDatasetVersionNew(repo,owner,version); return AjaxResult.success(); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index 423e8956..64a1262c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -101,7 +101,7 @@ DatasetService { Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; - NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName, String version); + NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName,String repo, String owner, String version)throws Exception; List> getVersionList(String repo, String owner) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 3e54976f..a374c43d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -660,11 +660,19 @@ public class DatasetServiceImpl implements DatasetService { } @Override - public NewDatasetVo getNewDatasetDesc(Integer repoId,String repositoryName, String version) { + public NewDatasetVo getNewDatasetDesc(Integer repoId,String repositoryName,String repo, String owner,String version) throws Exception{ LoginUser loginUser = SecurityUtils.getLoginUser(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); // cd到 localPathlocal/repoId/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP + if (StringUtils.isEmpty(version)){ + List> versionList = this.getVersionList(repo, owner); + if (versionList.size() == 0){ + throw new Exception("数据集文件不存在"); + } + version = (String) versionList.get(0).get("name"); + } + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal+repoId, repositoryName, version,gitLinkUsername, gitLinkPassword); //在localPathlocal+repoId+"/"+repositoryName目录下的dataset.yaml中取到元数据 Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + repoId + "/" + repositoryName + "/dataset.yaml"); @@ -691,7 +699,9 @@ public class DatasetServiceImpl implements DatasetService { String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); String token = gitService.login(gitLinkUsername, gitLinkPassword); List> brancheList = gitService.getBrancheList(token, owner, repo); - return brancheList; + return brancheList.stream() + .filter(branch -> "master".equals(branch.get("name"))) + .collect(Collectors.toList()); } @Override @@ -848,6 +858,7 @@ public class DatasetServiceImpl implements DatasetService { Map author = (Map) map.get("author"); newDatasetVo.setCreateBy((String) author.get("name")); + newDatasetVo.setOwner((String) author.get("login")); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index bd329b12..74cccf6e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -56,5 +56,7 @@ public class NewDatasetVo implements Serializable { private Date updateTime; @ApiModelProperty(name = "processing_code",value = "处理代码") private String processingCode; + @ApiModelProperty(name = "owner",value = "项目所有者") + private String owner; } From e8cea9df8317c31946991518ef5cc811e0c4c652 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 5 Sep 2024 17:45:32 +0800 Subject: [PATCH 035/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 12 +++++------- .../platform/domain/ModelDependency1.java | 4 +++- .../platform/mapper/ModelDependency1Dao.java | 2 +- .../ruoyi/platform/service/ModelsService.java | 2 +- .../service/impl/ModelsServiceImpl.java | 19 +++++++++++-------- .../ModelDependency1DaoMapper.xml | 6 +++--- 6 files changed, 24 insertions(+), 21 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 14f53e80..92491e53 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -67,17 +67,15 @@ public class NewModelFromGitController { @ApiOperation("模型广场公开模型分页查询,根据model_type,model_tag筛选,true公开false私有") public AjaxResult queryModels(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size, - @RequestParam(value = "is_public") Boolean isPublic, + @RequestParam(value = "is_public", required = false) Boolean isPublic, @RequestParam(value = "model_type", required = false) String modelType, @RequestParam(value = "model_tag", required = false) String modelTag, - @RequestParam(value = "git_link_username") String gitLinkUsername, - @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { + @RequestParam(value = "name", required = false) String name) throws Exception { PageRequest pageRequest = PageRequest.of(page, size); ModelsVo modelsVo = new ModelsVo(); modelsVo.setModelType(modelType); modelsVo.setModelTag(modelTag); - modelsVo.setGitLinkUsername(gitLinkUsername); - modelsVo.setGitLinkPassword(gitLinkPassword); + modelsVo.setName(name); if (isPublic) { return AjaxResult.success(this.modelsService.newPubilcQueryByPage(modelsVo, pageRequest)); } else { @@ -100,7 +98,7 @@ public class NewModelFromGitController { @GetMapping("/getModelDependencyTree") @ApiOperation(value = "获取模型依赖关系树") - public AjaxResult getModelDependencyTree(@RequestParam("modelName") String modelName, @RequestParam("version") String version) throws Exception { - return AjaxResult.success(this.modelsService.getModelDependencyTree(modelName, version)); + public AjaxResult getModelDependencyTree(@RequestParam("repoId")Integer repoId, @RequestParam("modelName") String modelName, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDependencyTree(repoId, modelName, version)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java index 2cd34060..60bedb72 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java @@ -19,7 +19,9 @@ public class ModelDependency1 implements Serializable { private Integer repoId; - private String repoName; + private String identifier; + + private String owner; private Integer state; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java index cb54b28f..2d1de127 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java @@ -11,7 +11,7 @@ public interface ModelDependency1Dao { List queryByModelName(@Param("modelName") String modelName); - ModelDependency1 queryByModelNameAndVersion(@Param("modelName") String modelName, @Param("version") String version); + ModelDependency1 queryByModelNameAndVersion(@Param("repoId") Integer repoId, @Param("modelName") String modelName, @Param("version") String version); List queryByParentModel(@Param("parentModel") String parentModel); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index aea4559a..c437aa08 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -102,5 +102,5 @@ public interface ModelsService { ModelMetaVo getModelMeta(String modelName, String version) throws Exception; - ModelDependency1TreeVo getModelDependencyTree(String modelName, String version)throws Exception; + ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version)throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 5d7d4ad3..6e4c0f9e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -562,10 +562,11 @@ public class ModelsServiceImpl implements ModelsService { } //保存模型依赖 - modelDependency.setRepoName(repositoryName); + modelDependency.setIdentifier(repositoryName); modelDependency.setModelName(modelsVo.getName()); modelDependency.setVersion(modelsVo.getVersion()); modelDependency.setParentModel(modelsVo.getParentModel()); + modelDependency.setOwner(ci4sUsername); modelDependency1Dao.insert(modelDependency); return "新增模型成功"; } catch (Exception e) { @@ -723,12 +724,13 @@ public class ModelsServiceImpl implements ModelsService { List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + modelName + "/" + version + "/metadata/metadata.yaml"); + assert stringObjectMap != null; return ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); } @Override - public ModelDependency1TreeVo getModelDependencyTree(String modelName, String version) throws Exception { - ModelDependency1 modelDependency1 = modelDependency1Dao.queryByModelNameAndVersion(modelName, version); + public ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version) throws Exception { + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByModelNameAndVersion(repoId, modelName, version); ModelDependency1TreeVo modelDependency1TreeVo = new ModelDependency1TreeVo(); BeanUtils.copyProperties(modelDependency1, modelDependency1TreeVo); @@ -827,11 +829,12 @@ public class ModelsServiceImpl implements ModelsService { void getParentModel(List modelList, ModelDependency1 modelDependency1) { if (modelDependency1.getParentModel() != null) { String[] split = modelDependency1.getParentModel().split(":"); - String parentModelName = split[0]; - String parentModelVersion = split[1]; - ModelDependency1 parentModel = modelDependency1Dao.queryByModelNameAndVersion(parentModelName, parentModelVersion); + Integer parentRepoId = Integer.valueOf(split[0]); + String parentModelName = split[1]; + String parentModelVersion = split[2]; + ModelDependency1 parentModel = modelDependency1Dao.queryByModelNameAndVersion(parentRepoId, parentModelName, parentModelVersion); modelList.add(parentModel); - if (parentModel.getParentModel() != null) { + if (parentModel != null && parentModel.getParentModel() != null) { getParentModel(modelList, parentModel); } } @@ -839,7 +842,7 @@ public class ModelsServiceImpl implements ModelsService { void getChildModel(ModelDependency1TreeVo modelDependency1TreeVo) { List childModelList = new ArrayList<>(); - String model = modelDependency1TreeVo.getModelName() + ":" + modelDependency1TreeVo.getVersion(); + String model = modelDependency1TreeVo.getRepoId() + ":" + modelDependency1TreeVo.getModelName() + ":" + modelDependency1TreeVo.getVersion(); List children = modelDependency1Dao.queryByParentModel(model); if (children != null && !children.isEmpty()) { diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 64bedb3a..e7967bce 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -4,8 +4,8 @@ - insert into model_dependency1(parent_model, model_name, version, repo_id, repo_name) - values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{repoName}) + insert into model_dependency1(parent_model, model_name, version, repo_id, identifier, owner) + values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{identifier}, #{owner}) select * from model_dependency1 - where model_name = #{modelName} and version = #{version} and state = 1 + where repo_id = #{repoId} and model_name = #{modelName} and version = #{version} and state = 1 select * from model_dependency1 - where model_name = #{modelName} and state = 1 + where model_name = #{modelName} + and state = 1 + + + update model_dependency1 + set state = 0 + where repo_id = #{repoId} and identifier = #{identifier} and owner = #{owner} + + and version = #{version} + + + + + update model_dependency1 + set parent_model = null + where parent_model like concat(#{repoId}, ':', #{identifier}, + + ':', #{version}, + + '%') + \ No newline at end of file From 77fadb29d97f8887af134caea75df071bd1006d5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 6 Sep 2024 14:02:34 +0800 Subject: [PATCH 038/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 12 ++-- .../ruoyi/platform/service/ModelsService.java | 7 +-- .../service/impl/DatasetServiceImpl.java | 50 +++------------- .../platform/service/impl/GitServiceImpl.java | 58 ++++++++++++++----- .../service/impl/ModelsServiceImpl.java | 56 +++++++++++------- 5 files changed, 95 insertions(+), 88 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 59abe04a..145f84d8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -81,17 +81,17 @@ public class NewModelFromGitController { } } - @GetMapping("/getModelVersions/{model_name}") - @ApiOperation(value = "获取模型所有版本号") - public AjaxResult getModelVersions(@PathVariable("model_name") String modelName) throws Exception { - return AjaxResult.success(this.modelsService.getNewModelVersion(modelName)); + @GetMapping("/getVersionList") + @ApiOperation(value = "获取模型分支列表") + public AjaxResult getVersionList(@RequestParam("identifier") String identifier, @RequestParam("owner")String owner) throws Exception { + return AjaxResult.success(this.modelsService.getVersionList(identifier, owner)); } @GetMapping("/getModelDetail") @ApiOperation(value = "获取模型详细信息") - public AjaxResult getModelDetail(@RequestParam("model_name") String modelName, @RequestParam("version") String version) throws Exception { - return AjaxResult.success(this.modelsService.getModelDetail(modelName, version)); + public AjaxResult getModelDetail(@RequestParam("model_name") String modelName, @RequestParam("identifier") String identifier,@RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDetail(modelName, identifier, owner, version)); } @GetMapping("/getModelDependencyTree") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index b9f8fae8..a2aac1b1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -4,7 +4,6 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.vo.ModelDependency1TreeVo; -import com.ruoyi.platform.vo.ModelMetaVo; import com.ruoyi.platform.vo.ModelsVo; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -98,11 +97,11 @@ public interface ModelsService { Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; - List getNewModelVersion(String modelName); + List> getVersionList(String identifier, String owner) throws Exception; - ModelsVo getModelDetail(String modelName, String version) throws Exception; + ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception; - ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version)throws Exception; + ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version) throws Exception; void deleteModel(Integer repoId, String identifier, String owner) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 1fca5c86..7f0f42b3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -464,7 +464,7 @@ public class DatasetServiceImpl implements DatasetService { public CompletableFuture newCreateDataset(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { try { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -541,7 +541,7 @@ public class DatasetServiceImpl implements DatasetService { public CompletableFuture newCreateVersion(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { try { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -611,7 +611,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -634,7 +634,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -696,12 +696,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public List> getVersionList(String repo, String owner) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - List> brancheList = gitService.getBrancheList(token, owner, repo); + List> brancheList = gitService.getBrancheList(owner, repo); return brancheList.stream() .filter(branch -> "master".equals(branch.get("name"))) .collect(Collectors.toList()); @@ -709,7 +704,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public void deleteDatasetNew(String repo, String owner) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -719,7 +714,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -779,7 +774,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { // 命令行操作 git clone 项目地址 - checkoutToken(); + gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); @@ -872,33 +867,4 @@ public class DatasetServiceImpl implements DatasetService { return new ArrayList<>(); } - private String checkoutToken(){ - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - - if(StringUtils.isEmpty(token)){ - gitService.login(gitLinkUsername, gitLinkPassword); - token = jedis.get(ci4sUsername+"_gitToken"); - }else { - try { - Map userInfo = gitService.getUserInfo(token); - if (userInfo == null ||(userInfo.get("status")!=null&&401==(Integer) userInfo.get("status"))){ - gitService.login(gitLinkUsername, gitLinkPassword); - token = jedis.get(ci4sUsername+"_gitToken"); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - - } - return token; - - } - - - } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 842e47da..f0c55c95 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -39,7 +39,7 @@ public class GitServiceImpl implements GitService { params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE"); try { // 发送POST请求 - String req = HttpUtils.sendPostRequest("https://www.gitlink.org.cn/oauth/token",null, JsonUtils.mapToJson(params)); + String req = HttpUtils.sendPostRequest("https://www.gitlink.org.cn/oauth/token", null, JsonUtils.mapToJson(params)); // 解析响应JSON if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -51,7 +51,7 @@ public class GitServiceImpl implements GitService { String accessToken = (String) runResMap.get("access_token"); //通过access_token获取用户信息 - String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, accessToken); + String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json", null, accessToken); if (StringUtils.isEmpty(userReq)) { throw new RuntimeException("终止响应内容为空。"); } @@ -59,8 +59,8 @@ public class GitServiceImpl implements GitService { String ci4sUsername = loginUser.getUsername(); // 将access_token存入Redis Jedis jedis = new Jedis(redisHost); - jedis.set(ci4sUsername+"_gitToken", accessToken); - jedis.set(ci4sUsername+"_gitUserInfo", userReq); + jedis.set(ci4sUsername + "_gitToken", accessToken); + jedis.set(ci4sUsername + "_gitUserInfo", userReq); return accessToken; } catch (Exception e) { log.error("登录GitLink失败。", e); @@ -68,24 +68,51 @@ public class GitServiceImpl implements GitService { } } + @Override + public String checkoutToken() { + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + + if (StringUtils.isEmpty(token)) { + login(gitLinkUsername, gitLinkPassword); + token = jedis.get(ci4sUsername + "_gitToken"); + } else { + try { + Map userInfo = getUserInfo(token); + if (userInfo == null || (userInfo.get("status") != null && 401 == (Integer) userInfo.get("status"))) { + login(gitLinkUsername, gitLinkPassword); + token = jedis.get(ci4sUsername + "_gitToken"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + return token; + } + @Override public Map createProject(String token, GitProjectVo gitProjectVo) throws Exception { - String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json",JsonUtils.objectToJson(gitProjectVo),token); + String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token); return JsonUtils.jsonToMap(userReq); } @Override - public void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception { + public void createBranch(String token, String owner, String projectName, String branchName, String oldBranchName) throws Exception { //https://www.gitlink.org.cn/api/v1/fanshuai/testdssa8755/branches.json // { // "new_branch_name": "SsS", // "old_branch_name": "master" // } - String createBranchUrl = "https://www.gitlink.org.cn/api/v1/"+ owner + "/" + projectName + "/branches.json"; + String createBranchUrl = "https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches.json"; Map resMap = new HashMap<>(); resMap.put("new_branch_name", branchName); resMap.put("old_branch_name", oldBranchName); - String req = HttpUtils.sendPostWithToken(createBranchUrl,JsonUtils.objectToJson(resMap),token); + String req = HttpUtils.sendPostWithToken(createBranchUrl, JsonUtils.objectToJson(resMap), token); } @Override @@ -94,12 +121,13 @@ public class GitServiceImpl implements GitService { Map resMap = new HashMap<>(); resMap.put("project_id", id); resMap.put("name", topicName); - String req = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/v1/project_topics.json",JsonUtils.objectToJson(resMap),token); + String req = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/v1/project_topics.json", JsonUtils.objectToJson(resMap), token); } @Override - public List> getBrancheList(String token, String owner, String projectName) throws Exception { - String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/"+owner+"/"+projectName+"/branches/all.json",null, token); + public List> getBrancheList(String owner, String projectName) throws Exception { + String token = checkoutToken(); + String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token); // 解析响应JSON if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -111,18 +139,18 @@ public class GitServiceImpl implements GitService { @Override public void deleteProject(String token, String owner, String projectName) throws Exception { - HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/"+owner+"/"+projectName+".json", token); + HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/" + owner + "/" + projectName + ".json", token); } @Override public void deleteBranch(String token, String owner, String projectName, String branchName) throws Exception { - HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/"+owner+"/"+projectName+"/branches/"+branchName+".json", token); + HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token); } @Override public Map getUserInfo(String token) throws Exception { - String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, token); + String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json", null, token); Map runResMap = JsonUtils.jsonToMap(userReq); - return runResMap; + return runResMap; } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 82f5775f..7d7869ea 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -519,14 +519,17 @@ public class ModelsServiceImpl implements ModelsService { public CompletableFuture newCreateModel(ModelsVo modelsVo) { return CompletableFuture.supplyAsync(() -> { try { + gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + String token = (String) userInfo.get("token"); + - String token = gitService.login(gitLinkUsername, gitLinkPassword); String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName(); ModelDependency1 modelDependency = new ModelDependency1(); List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName()); @@ -659,10 +662,8 @@ public class ModelsServiceImpl implements ModelsService { public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); //拼接查询url String modelTagName = modelsVo.getModelTag(); @@ -684,11 +685,9 @@ public class ModelsServiceImpl implements ModelsService { public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + String token = (String) userInfo.get("token"); //拼接查询url String modelTagName = modelsVo.getModelTag(); @@ -707,18 +706,28 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public List getNewModelVersion(String modelName) { - List modelDependency1List = modelDependency1Dao.queryByModelName(modelName); - return modelDependency1List.stream().map(ModelDependency1::getVersion).collect(Collectors.toList()); + public List> getVersionList(String identifier, String owner) throws Exception { + List> brancheList = gitService.getBrancheList(owner, identifier); + return brancheList.stream() + .filter(branch -> "master".equals(branch.get("name"))) + .collect(Collectors.toList()); } @Override - public ModelsVo getModelDetail(String modelName, String version) { + public ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + if (StringUtils.isEmpty(version)){ + List> versionList = this.getVersionList(owner, identifier); + if (versionList.size() == 0){ + throw new Exception("数据集文件不存在"); + } + version = (String) versionList.get(0).get("name"); + } + // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); @@ -729,7 +738,7 @@ public class ModelsServiceImpl implements ModelsService { ModelsVo modelsVo = new ModelsVo(); BeanUtils.copyProperties(modelMetaVo, modelsVo); - List versionVos = new ArrayList(); + List versionVos = new ArrayList<>(); if (!fileDetailsAfterGitPull.isEmpty()) { for (Map fileDetail : fileDetailsAfterGitPull) { VersionVo versionVo = new VersionVo(); @@ -765,11 +774,12 @@ public class ModelsServiceImpl implements ModelsService { @Override public void deleteModel(Integer repoId, String identifier, String owner) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); + String ci4sUsername = loginUser.getUsername(); + Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); + + gitService.deleteProject(token, owner, identifier); - //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, null); modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, null); @@ -778,11 +788,11 @@ public class ModelsServiceImpl implements ModelsService { @Override public void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); - gitService.deleteBranch(token, owner, identifier, version); + String ci4sUsername = loginUser.getUsername(); + Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); + gitService.deleteBranch(token, owner, identifier, version); //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, version); modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); @@ -902,6 +912,10 @@ public class ModelsServiceImpl implements ModelsService { Map getUserInfo(String ci4sUsername) throws IOException { Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - return JsonUtils.jsonToMap(userReq); + Map userInfo = JsonUtils.jsonToMap(userReq); + + String token = gitService.checkoutToken(); + userInfo.put("token", token); + return userInfo; } } From 156888782eabb36f4d2c78f225db16771f594a77 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 6 Sep 2024 16:20:01 +0800 Subject: [PATCH 039/381] update dataset version --- .../dataset/NewDatasetFromGitController.java | 32 +- .../controller/jupyter/JupyterController.java | 10 +- .../platform/service/DatasetService.java | 36 +- .../platform/service/NewDatasetService.java | 35 ++ .../service/impl/DatasetServiceImpl.java | 478 +---------------- .../platform/service/impl/GitServiceImpl.java | 3 + .../service/impl/NewDatasetServiceImpl.java | 501 ++++++++++++++++++ .../com/ruoyi/platform/utils/DVCUtils.java | 10 +- .../com/ruoyi/platform/vo/NewDatasetVo.java | 6 +- 9 files changed, 579 insertions(+), 532 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 6b738bb5..42cb47da 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -2,10 +2,8 @@ package com.ruoyi.platform.controller.dataset; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.platform.domain.Dataset; -import com.ruoyi.platform.service.DatasetService; -import com.ruoyi.platform.vo.DatasetVo; +import com.ruoyi.platform.service.NewDatasetService; import com.ruoyi.platform.vo.NewDatasetVo; -import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.PageRequest; @@ -22,7 +20,7 @@ public class NewDatasetFromGitController { * 服务对象 */ @Resource - private DatasetService datasetService; + private NewDatasetService newDatasetService; @@ -35,7 +33,7 @@ public class NewDatasetFromGitController { @PostMapping("/addDatasetAndVersion") @ApiOperation("添加数据集和版本") public AjaxResult addDatasetAndVersion(@RequestBody NewDatasetVo datasetVo) throws Exception { - return AjaxResult.success(this.datasetService.newCreateDataset(datasetVo)); + return AjaxResult.success(this.newDatasetService.newCreateDataset(datasetVo)); } @@ -49,7 +47,7 @@ public class NewDatasetFromGitController { @PostMapping("/addVersion") @ApiOperation("添加版本") public AjaxResult addVersion(@RequestBody NewDatasetVo datasetVo) throws Exception { - return AjaxResult.success(this.datasetService.newCreateVersion(datasetVo)); + return AjaxResult.success(this.newDatasetService.newCreateVersion(datasetVo)); } @@ -62,39 +60,39 @@ public class NewDatasetFromGitController { @RequestParam(value = "data_tag", required = false) String dataTag) throws Exception { PageRequest pageRequest = PageRequest.of(page, size); if(isPublic){ - return AjaxResult.success(this.datasetService.newPubilcQueryByPage(dataset, pageRequest)); + return AjaxResult.success(this.newDatasetService.newPubilcQueryByPage(dataset, pageRequest)); }else { - return AjaxResult.success(this.datasetService.newPersonalQueryByPage(dataset, pageRequest)); + return AjaxResult.success(this.newDatasetService.newPersonalQueryByPage(dataset, pageRequest)); } } @GetMapping("/getVersionList") @ApiOperation(value = "获取分支列表") public AjaxResult getVersionList(@RequestParam("identifier") String repo,@RequestParam("owner")String owner) throws Exception { - return AjaxResult.success(this.datasetService.getVersionList(repo,owner)); + return AjaxResult.success(this.newDatasetService.getVersionList(repo,owner)); } @GetMapping("/getDatasetDetail") @ApiOperation(value = "获取数据集详情") public AjaxResult getDatasetVersions(@RequestParam("name") String name, - @RequestParam("repo_id") Integer repoId, + @RequestParam("id") Integer id, @RequestParam(value ="owner",required = false)String owner, - @RequestParam(value = "identifier",required = false) String repo, + @RequestParam(value = "identifier",required = false) String identifier, @RequestParam(value = "version",required = false)String version) throws Exception { - return AjaxResult.success(this.datasetService.getNewDatasetDesc(repoId,name,repo,owner,version)); + return AjaxResult.success(this.newDatasetService.getNewDatasetDesc(id,name,identifier,owner,version)); } @DeleteMapping("/deleteDataset") @ApiOperation(value = "删除数据集") public AjaxResult deleteDataset(@RequestParam("identifier") String repo,@RequestParam("owner")String owner) throws Exception { - this.datasetService.deleteDatasetNew(repo,owner); + this.newDatasetService.deleteDatasetNew(repo,owner); return AjaxResult.success(); } @DeleteMapping("/deleteDatasetVersion") @ApiOperation(value = "删除数据集版本") public AjaxResult deleteDatasetVersion(@RequestParam("identifier") String repo,@RequestParam("owner")String owner,@RequestParam("version")String version) throws Exception { - this.datasetService.deleteDatasetVersionNew(repo,owner,version); + this.newDatasetService.deleteDatasetVersionNew(repo,owner,version); return AjaxResult.success(); } @@ -110,7 +108,7 @@ public class NewDatasetFromGitController { @PostMapping("/upload") @ApiOperation(value = "上传数据集") public AjaxResult uploadDataset(@RequestParam("file") MultipartFile[] files, @RequestParam("uuid") String uuid) throws Exception { - return AjaxResult.success(this.datasetService.uploadDatasetlocal(files,uuid)); + return AjaxResult.success(this.newDatasetService.uploadDatasetlocal(files,uuid)); } /** @@ -122,7 +120,7 @@ public class NewDatasetFromGitController { @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有数据集,并打包") public ResponseEntity downloadAllDatasetFiles(@RequestParam("repository_name") String repositoryName, @RequestParam("version") String version) throws Exception { - return datasetService.downloadAllDatasetFilesNew(repositoryName, version); + return newDatasetService.downloadAllDatasetFilesNew(repositoryName, version); } /** @@ -135,6 +133,6 @@ public class NewDatasetFromGitController { @GetMapping("/downloadSinggerFile") @ApiOperation(value = "下载单个数据集文件", notes = "根据数据集版本表id下载单个数据集文件") public ResponseEntity downloadDataset(@RequestParam("url") String url) throws Exception { - return datasetService.downloadDatasetlocal(url); + return newDatasetService.downloadDatasetlocal(url); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java index 2a52ff87..52cad80b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java @@ -4,9 +4,11 @@ import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.DevEnvironment; -import com.ruoyi.platform.service.DatasetService; import com.ruoyi.platform.service.JupyterService; -import com.ruoyi.platform.vo.*; +import com.ruoyi.platform.service.NewDatasetService; +import com.ruoyi.platform.vo.NewDatasetVo; +import com.ruoyi.platform.vo.PodStatusVo; +import com.ruoyi.platform.vo.VersionVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -27,7 +29,7 @@ public class JupyterController extends BaseController { @Resource private JupyterService jupyterService; @Resource - private DatasetService datasetService; + private NewDatasetService newDatasetService; @GetMapping(value = "/getURL") @ApiOperation("得到访问地址") public GenericsAjaxResult getURL() throws IOException { @@ -101,6 +103,6 @@ public class JupyterController extends BaseController { datasetVo.setVersionDesc("this is a test"); datasetVersionVos.add(versionVo); datasetVo.setDatasetVersionVos(datasetVersionVos); - return AjaxResult.success(datasetService.newCreateDataset(datasetVo)); + return AjaxResult.success(newDatasetService.newCreateDataset(datasetVo)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index 64a1262c..4c66fd6c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -21,11 +21,7 @@ import java.util.concurrent.CompletableFuture; * @author Xidaray * @since 2023-11-28 11:51:22 */ -public interface -DatasetService { - - - +public interface DatasetService { /** @@ -39,12 +35,12 @@ DatasetService { /** * 分页查询 * - * @param dataset 筛选条件 - * @param pageRequest 分页对象 + * @param dataset 筛选条件 + * @param pageRequest 分页对象 * @return 查询结果 */ Page queryByPage(Dataset dataset, PageRequest pageRequest); - + /** * 新增数据 * @@ -54,7 +50,6 @@ DatasetService { Dataset insert(Dataset dataset) throws Exception; - /** * 修改数据 * @@ -82,30 +77,11 @@ DatasetService { List getDatasetVersions(Integer datasetId) throws Exception; String insertDatasetAndVersion(DatasetVo datasetVo) throws Exception; + void checkDeclaredName(Dataset insert) throws Exception; ResponseEntity downloadAllDatasetFiles(Integer datasetId, String version) throws Exception; List> exportDataset(String path, String uuid) throws Exception; - - - - - CompletableFuture newCreateDataset(NewDatasetVo datasetVo) throws Exception; - CompletableFuture newCreateVersion(NewDatasetVo datasetVo); - - List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception; - ResponseEntity downloadDatasetlocal(String filePath) throws Exception; - ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws IOException, Exception; - Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; - Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; - - NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName,String repo, String owner, String version)throws Exception; - - List> getVersionList(String repo, String owner) throws Exception; - - void deleteDatasetNew(String repo, String owner) throws Exception; - - void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception; -} +} \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java new file mode 100644 index 00000000..e41928d7 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -0,0 +1,35 @@ +package com.ruoyi.platform.service; + +import com.ruoyi.platform.domain.Dataset; +import com.ruoyi.platform.vo.NewDatasetVo; +import org.springframework.core.io.InputStreamResource; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +public interface NewDatasetService { + + + String newCreateDataset(NewDatasetVo datasetVo) throws Exception; + CompletableFuture newCreateVersion(NewDatasetVo datasetVo)throws Exception; + + List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception; + ResponseEntity downloadDatasetlocal(String filePath) throws Exception; + ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws IOException, Exception; + Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; + Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; + + NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName,String repo, String owner, String version)throws Exception; + + List> getVersionList(String repo, String owner) throws Exception; + + void deleteDatasetNew(String repo, String owner) throws Exception; + + void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index bf578a81..8eb3b9b8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -1,6 +1,5 @@ package com.ruoyi.platform.service.impl; -import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.AssetIcon; @@ -9,14 +8,13 @@ import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.mapper.DatasetDao; import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.service.*; -import com.ruoyi.platform.utils.*; +import com.ruoyi.platform.utils.BeansUtils; +import com.ruoyi.platform.utils.FileUtil; +import com.ruoyi.platform.utils.MinioUtil; import com.ruoyi.platform.vo.DatasetVo; -import com.ruoyi.platform.vo.GitProjectVo; -import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; import io.minio.messages.Item; -import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; @@ -30,17 +28,13 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import redis.clients.jedis.Jedis; import javax.annotation.Resource; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.lang.reflect.Field; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -68,12 +62,6 @@ public class DatasetServiceImpl implements DatasetService { @Resource private MinioService minioService; - @Resource - private GitService gitService; - - @Resource - private DvcService dvcService; - // 固定存储桶名 @Value("${minio.dataReleaseBucketName}") private String bucketName; @@ -81,19 +69,6 @@ public class DatasetServiceImpl implements DatasetService { @Resource private MinioUtil minioUtil; - @Value("${spring.redis.host}") - private String redisHost; - @Value("${minio.accessKey}") - String accessKeyId; - @Value("${minio.secretKey}") - String secretAccessKey; - @Value("${minio.endpoint}") - String endpoint; - @Value("${git.endpoint}") - String gitendpoint; - @Value("${git.localPath}") - String localPathlocal; - /** * 通过ID查询单条数据 * @@ -457,447 +432,4 @@ public class DatasetServiceImpl implements DatasetService { } return results; } - - - - @Override - public CompletableFuture newCreateDataset(NewDatasetVo datasetVo) { - return CompletableFuture.supplyAsync(() -> { - try { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - Integer userId = (Integer) userInfo.get("user_id"); - // 拼接project - String repositoryName = ci4sUsername + "_dataset_" + DateUtils.dateTimeNow(); - GitProjectVo gitProjectVo = new GitProjectVo(); - gitProjectVo.setRepositoryName(repositoryName); - gitProjectVo.setName(datasetVo.getName()); - gitProjectVo.setDescription(datasetVo.getDescription()); - gitProjectVo.setPrivate(!datasetVo.getIsPublic()); - gitProjectVo.setUserId(userId); - // 创建项目 - Map project = gitService.createProject(token, gitProjectVo); - Integer repoId = (Integer) project.get("id"); - // 创建分支 - String branchName = datasetVo.getVersion(); - gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); - // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType - gitService.createTopic(token, repoId, "ci4s_dataset"); - gitService.createTopic(token, repoId, "DataTag_" + datasetVo.getDataTag()); - gitService.createTopic(token, repoId, "DataType_" + datasetVo.getDataType()); - // 得到项目地址 - String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; - - // 得到用户操作的路径 - String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal + "/" + repoId+"/"+datasetVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/"+repoId+"/"+ repositoryName + "/" + branchName; - - DVCUtils.moveFiles(sourcePath, localPath); - //拼接生产的元数据后写入yaml文件 - datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); - datasetVo.setUpdateTime(DateUtils.getNowDate()); - datasetVo.setVersionDesc(datasetVo.getDescription()); - datasetVo.setUsage("```bash\n" + - "# 克隆数据集配置文件与存储参数到本地\n" + - "git clone -b " + branchName + " " + projectUrl + "\n" + - "# 远程拉取配置文件\n" + - "dvc pull\n" + - "```"); - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),localPath, "dataset"); - // dvc init 初始化 - DVCUtils.dvcInit(localPath); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath, "data"); - // git commit - DVCUtils.gitAdd(localPath, "."); - DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); - DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath); - return "新增数据集成功"; - } catch (Exception e) { - throw new RuntimeException(e); - } - }); - } - - @Override - public CompletableFuture newCreateVersion(NewDatasetVo datasetVo) { - return CompletableFuture.supplyAsync(() -> { - try { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - // 创建分支 - String branchName = StringUtils.isEmpty(datasetVo.getVersion())? "master" : datasetVo.getVersion(); - String repositoryName = datasetVo.getIdentifier(); - if (StringUtils.equals(branchName, "master")) { - gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); - } - // 得到项目地址 - String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; - - // 得到用户操作的路径 - String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+ datasetVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - if(FileUtil.checkDirectoryExists(localPath)){ - DVCUtils.gitFetch(localPath,gitLinkUsername, gitLinkPassword); - DVCUtils.gitCheckoutBranch(localPath,branchName); - }else { - DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - } - - String s3Path = "management-platform-files/" + ci4sUsername + "/datasets/"+ datasetVo.getRepoId()+"/"+ repositoryName + "/" + branchName; - - DVCUtils.moveFiles(sourcePath, localPath); - //拼接生产的元数据后写入yaml文件 - datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String)userInfo.get("nickname"))? userInfo.get("nickname") : userInfo.get("login"))); - datasetVo.setUpdateTime(DateUtils.getNowDate()); - datasetVo.setVersionDesc(datasetVo.getDescription()); - datasetVo.setUsage("```bash\n" + - "# 克隆数据集配置文件与存储参数到本地\n" + - "git clone -b " + branchName + " " + projectUrl + "\n" + - "# 远程拉取配置文件\n" + - "dvc pull\n" + - "```"); - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo),localPath, "dataset"); - - // dvc init 初始化 - DVCUtils.dvcInit(localPath); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath, "data"); - // git commit - DVCUtils.gitAdd(localPath, "."); - DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); - DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath); - return "新增数据集成功"; - } catch (Exception e) { - throw new RuntimeException(e); - } - }); - } - - - @Override - public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - //拼接查询url - String datasetTagName = dataset.getDatasetTagName(); - String datasetTypeName = dataset.getDatasetTypeName(); - String topic_name = "ci4s_dataset"; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatag_" + datasetTagName; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatype_" + datasetTypeName; - String url = gitendpoint + "/api/users/"+(String) userInfo.get("login")+"/projects.json?page="+pageRequest.getPageNumber()+"&limit="+pageRequest.getPageSize()+"&category=manage&topic_name="+topic_name; - String req = HttpUtils.sendGetWithToken(url,null,token); - Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); - Integer total = (Integer) stringObjectMap.get("count"); - List> projects = (List>) stringObjectMap.get("projects"); - return new PageImpl<>(convert(projects), pageRequest, total); - } - - @Override - public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - Integer userId = (Integer) userInfo.get("user_id"); - //拼接查询url - String datasetTagName = dataset.getDatasetTagName(); - String datasetTypeName = dataset.getDatasetTypeName(); - String topic_name = "ci4s_dataset"; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatag_" + datasetTagName; - topic_name =StringUtils.isEmpty(datasetTagName)?topic_name : topic_name+",datatype_" + datasetTypeName; - - String url = gitendpoint + "/api/projects.json?user_id="+userId+"&page="+pageRequest.getPageNumber()+"&limit="+pageRequest.getPageSize()+"&sort_by=praises_count&topic_name="+topic_name; - String req = HttpUtils.sendGetWithToken(url,null,token); - Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); - Integer total = (Integer) stringObjectMap.get("total_count"); - List> projects = (List>) stringObjectMap.get("projects"); - if (projects == null){ - return new PageImpl<>(new ArrayList<>(), pageRequest, 0); - } - return new PageImpl<>(convert(projects), pageRequest, total); - } - - @Override - public NewDatasetVo getNewDatasetDesc(Integer repoId,String repositoryName,String repo, String owner,String version) throws Exception{ - LoginUser loginUser = SecurityUtils.getLoginUser(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - // cd到 localPathlocal/repoId/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP - if (StringUtils.isEmpty(version)){ - List> versionList = this.getVersionList(repo, owner); - if (versionList.size() == 0){ - throw new Exception("数据集文件不存在"); - } - version = (String) versionList.get(0).get("name"); - } - - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal+repoId, repositoryName, version,gitLinkUsername, gitLinkPassword); - //在localPathlocal+repoId+"/"+repositoryName目录下的dataset.yaml中取到元数据 - Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + repoId + "/" + repositoryName + "/dataset.yaml"); - NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); - List versionVos = new ArrayList(); - if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){ - for(Map fileDetail : fileDetailsAfterGitPull){ - VersionVo versionVo = new VersionVo(); - versionVo.setUrl((String) fileDetail.get("filePath")); - versionVo.setFileName((String) fileDetail.get("fileName")); - long size = (long) fileDetail.get("size"); - versionVo.setFileSize(FileUtil.formatFileSize(size)); - versionVos.add(versionVo); - } - } - newDatasetVo.setDatasetVersionVos(versionVos); - return newDatasetVo; - } - - @Override - public List> getVersionList(String repo, String owner) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - List> brancheList = gitService.getBrancheList(token, owner, repo); - return brancheList.stream() - .filter(branch -> "master".equals(branch.get("name"))) - .collect(Collectors.toList()); - } - - @Override - public void deleteDatasetNew(String repo, String owner) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - gitService.deleteProject(token, owner, repo); - } - - @Override - public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - gitService.deleteBranch(token, owner, repo, version); - } - - @Override - public List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception { - List> results = new ArrayList<>(); - - for (MultipartFile file:files){ - // 构建objectName - String username = SecurityUtils.getLoginUser().getUsername(); - String fileName = file.getOriginalFilename(); - String path = "/temp/"+ username +"/datasets/"+ uuid + "/"+"/data/" + fileName; - long sizeInBytes = file.getSize(); - String formattedSize = FileUtil.formatFileSize(sizeInBytes); - File targetFile = new File(path, file.getOriginalFilename()); - // 确保目录存在 - targetFile.getParentFile().mkdirs(); - // 保存文件到目标路径 - FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile); - // 返回上传文件的路径 - String absolutePath = targetFile.getAbsolutePath(); - Map result = new HashMap<>(); - result.put("fileName", fileName); - result.put("url", absolutePath); // objectName根据实际情况定义 - result.put("fileSize", formattedSize); - results.add(result); - } - return results; - } - - @Override - public ResponseEntity downloadDatasetlocal(String filePath) throws Exception { - File file = new File(filePath); - - if (!file.exists()) { - throw new FileNotFoundException("File not found: " + filePath); - } - - InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); - - HttpHeaders headers = new HttpHeaders(); - headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName()); - headers.add(HttpHeaders.CONTENT_LENGTH, String.valueOf(file.length())); - headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); - - return ResponseEntity.ok() - .headers(headers) - .contentLength(file.length()) - .contentType(MediaType.APPLICATION_OCTET_STREAM) - .body(resource); - } - - @Override - public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { - // 命令行操作 git clone 项目地址 - checkoutToken(); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String ci4sUsername = loginUser.getUsername(); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - Integer userId = (Integer) userInfo.get("user_id"); - String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; - String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/" +repositoryName; - File folder = new File(localPath); - if(folder.exists() && folder.isDirectory()){ - //切换分支 - DVCUtils.gitCheckoutBranch(localPath, version); - //pull - DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword); - //dvc pull - DVCUtils.dvcPull(localPath); - }else { - DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword); - } - - // 打包 data 文件夹 - String dataFolderPath = localPath + "/data"; - String zipFilePath = localPath + "/data.zip"; - try (FileOutputStream fos = new FileOutputStream(zipFilePath); - ZipOutputStream zos = new ZipOutputStream(fos)) { - Path sourcePath = Paths.get(dataFolderPath); - Files.walk(sourcePath).forEach(path -> { - if (!Files.isDirectory(path)) { - ZipEntry zipEntry = new ZipEntry(sourcePath.relativize(path).toString()); - try { - zos.putNextEntry(zipEntry); - Files.copy(path, zos); - zos.closeEntry(); - } catch (IOException e) { - throw new RuntimeException("Error while zipping: " + path, e); - } - } - }); - } - - // 返回压缩文件的输入流 - File zipFile = new File(zipFilePath); - InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); - - return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=data.zip") - .contentType(MediaType.APPLICATION_OCTET_STREAM) - .contentLength(zipFile.length()) - .body(resource); - - } - - - - public List convert(List> lst) { - if (lst != null && lst.size() > 0) { - List newDatasetVos = ConvertUtil.convertListMapToObjectList(lst, NewDatasetVo.class); - - for (NewDatasetVo newDatasetVo : newDatasetVos) { - Map map = lst.stream() - .filter(m -> m.get("repo_id").equals(newDatasetVo.getRepoId())) - .findFirst() - .orElse(null); - - if (map != null) { - List> topics = (List>) map.get("topics"); - if (topics != null) { - topics.forEach(topic -> { - String name = (String) topic.get("name"); - if (name != null) { - if (name.startsWith("datatag_")) { - newDatasetVo.setDataTag(name.substring("datatag_".length())); - } else if (name.startsWith("datatype_")) { - newDatasetVo.setDataType(name.substring("datatype_".length())); - } - } - }); - } - - Map author = (Map) map.get("author"); - newDatasetVo.setCreateBy((String) author.get("name")); - newDatasetVo.setOwner((String) author.get("login")); - } - } - - return newDatasetVos; - } - return new ArrayList<>(); - } - - private String checkoutToken(){ - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - - if(StringUtils.isEmpty(token)){ - gitService.login(gitLinkUsername, gitLinkPassword); - token = jedis.get(ci4sUsername+"_gitToken"); - }else { - try { - Map userInfo = gitService.getUserInfo(token); - if (userInfo == null ||(userInfo.get("status")!=null&&401==(Integer) userInfo.get("status"))){ - gitService.login(gitLinkUsername, gitLinkPassword); - token = jedis.get(ci4sUsername+"_gitToken"); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - - } - return token; - - } - - - } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 842e47da..3a4c6651 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -122,6 +122,9 @@ public class GitServiceImpl implements GitService { @Override public Map getUserInfo(String token) throws Exception { String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, token); + if (StringUtils.isEmpty(userReq)){ + return null; + } Map runResMap = JsonUtils.jsonToMap(userReq); return runResMap; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java new file mode 100644 index 00000000..b1e5e76e --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -0,0 +1,501 @@ +package com.ruoyi.platform.service.impl; + +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.domain.Dataset; +import com.ruoyi.platform.service.DvcService; +import com.ruoyi.platform.service.GitService; +import com.ruoyi.platform.service.NewDatasetService; +import com.ruoyi.platform.utils.*; +import com.ruoyi.platform.vo.GitProjectVo; +import com.ruoyi.platform.vo.NewDatasetVo; +import com.ruoyi.platform.vo.VersionVo; +import com.ruoyi.system.api.model.LoginUser; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.InputStreamResource; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import redis.clients.jedis.Jedis; + +import javax.annotation.Resource; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +@Service +public class NewDatasetServiceImpl implements NewDatasetService { + + @Resource + private GitService gitService; + + @Resource + private DvcService dvcService; + @Value("${spring.redis.host}") + private String redisHost; + @Value("${minio.accessKey}") + String accessKeyId; + @Value("${minio.secretKey}") + String secretAccessKey; + @Value("${minio.endpoint}") + String endpoint; + @Value("${git.endpoint}") + String gitendpoint; + @Value("${git.localPath}") + String localPathlocal; + + @Override + public String newCreateDataset(NewDatasetVo datasetVo) throws Exception { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + Integer userId = (Integer) userInfo.get("user_id"); + // 拼接project + String repositoryName = ci4sUsername + "_dataset_" + DateUtils.dateTimeNow(); + GitProjectVo gitProjectVo = new GitProjectVo(); + gitProjectVo.setRepositoryName(repositoryName); + gitProjectVo.setName(datasetVo.getName()); + gitProjectVo.setDescription(datasetVo.getDescription()); + gitProjectVo.setPrivate(!datasetVo.getIsPublic()); + gitProjectVo.setUserId(userId); + // 创建项目 + Map project = gitService.createProject(token, gitProjectVo); + Integer gitlinIid = (Integer) project.get("id"); + // 创建分支 + String branchName = datasetVo.getVersion(); + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); + // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType + gitService.createTopic(token, gitlinIid, "ci4s_dataset"); + gitService.createTopic(token, gitlinIid, "DataTag_" + datasetVo.getDataTag()); + gitService.createTopic(token, gitlinIid, "DataType_" + datasetVo.getDataType()); + // 得到项目地址 + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git"; + + // 得到用户操作的路径 + String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); + String localPath = localPathlocal + gitlinIid + "/" + datasetVo.getName(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + // 命令行操作 git clone 项目地址 + DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); + String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + gitlinIid + "/" + repositoryName + "/" + branchName; + + DVCUtils.moveFiles(sourcePath, localPath); + // 拼接生产的元数据后写入yaml文件 + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setVersionDesc(datasetVo.getDescription()); + datasetVo.setUsage("
\n" +
+                "# 克隆数据集配置文件与存储参数到本地\n" +
+                "git clone -b " + branchName + " "+ projectUrl + "\n" +
+                "# 远程拉取配置文件\n" +
+                "dvc pull\n" +
+                "
\n"); + datasetVo.setIdentifier(repositoryName); + datasetVo.setId(gitlinIid); + datasetVo.setOwner((String) userInfo.get("login")); + + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); + // dvc init 初始化 + DVCUtils.dvcInit(localPath); + // 配置远程S3地址 + DVCUtils.dvcRemoteAdd(localPath, s3Path); + DVCUtils.dvcConfigS3Credentials(localPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); + // dvc 跟踪 + DVCUtils.dvcAdd(localPath, "data"); + // git commit + DVCUtils.gitAdd(localPath, "."); + DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); + DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); + // dvc push 到远程S3 + DVCUtils.dvcPush(localPath); + return "新增数据集成功"; + } + + @Override + public CompletableFuture newCreateVersion(NewDatasetVo datasetVo) { + return CompletableFuture.supplyAsync(() -> { + try { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + // 创建分支 + String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); + String repositoryName = datasetVo.getIdentifier(); + if (StringUtils.equals(branchName, "master")) { + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); + } + // 得到项目地址 + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + + // 得到用户操作的路径 + String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); + String localPath = localPathlocal + loginUser.getUsername() + "/" + "datasets" + "/" + datasetVo.getName(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + // 命令行操作 git clone 项目地址 + if (FileUtil.checkDirectoryExists(localPath)) { + DVCUtils.gitFetch(localPath, gitLinkUsername, gitLinkPassword); + DVCUtils.gitCheckoutBranch(localPath, branchName); + } else { + DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); + } + + String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + datasetVo.getId() + "/" + repositoryName + "/" + branchName; + + DVCUtils.moveFiles(sourcePath, localPath); + // 拼接生产的元数据后写入yaml文件 + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setVersionDesc(datasetVo.getDescription()); + datasetVo.setUsage("
\n" +
+                        "# 克隆数据集配置文件与存储参数到本地\n" +
+                        "git clone -b " + branchName + " "+ projectUrl + "\n" +
+                        "# 远程拉取配置文件\n" +
+                        "dvc pull\n" +
+                        "
\n"); + datasetVo.setIdentifier(repositoryName); + datasetVo.setId(datasetVo.getId()); + datasetVo.setOwner((String) userInfo.get("login")); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); + + // dvc init 初始化 + DVCUtils.dvcInit(localPath); + // 配置远程S3地址 + DVCUtils.dvcRemoteAdd(localPath, s3Path); + DVCUtils.dvcConfigS3Credentials(localPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); + // dvc 跟踪 + DVCUtils.dvcAdd(localPath, "data"); + // git commit + DVCUtils.gitAdd(localPath, "."); + DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); + DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); + // dvc push 到远程S3 + DVCUtils.dvcPush(localPath); + return "新增数据集成功"; + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + + @Override + public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + // 拼接查询url + String datasetTagName = dataset.getDatasetTagName(); + String datasetTypeName = dataset.getDatasetTypeName(); + String topic_name = "ci4s_dataset"; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName; + String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name; + String req = HttpUtils.sendGetWithToken(url, null, token); + Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); + Integer total = (Integer) stringObjectMap.get("count"); + List> projects = (List>) stringObjectMap.get("projects"); + return new PageImpl<>(convert(projects), pageRequest, total); + } + + @Override + public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + Integer userId = (Integer) userInfo.get("user_id"); + // 拼接查询url + String datasetTagName = dataset.getDatasetTagName(); + String datasetTypeName = dataset.getDatasetTypeName(); + String topic_name = "ci4s_dataset"; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName; + topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName; + + String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name; + String req = HttpUtils.sendGetWithToken(url, null, token); + Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); + Integer total = (Integer) stringObjectMap.get("total_count"); + List> projects = (List>) stringObjectMap.get("projects"); + if (projects == null) { + return new PageImpl<>(new ArrayList<>(), pageRequest, 0); + } + return new PageImpl<>(convert(projects), pageRequest, total); + } + + @Override + public NewDatasetVo getNewDatasetDesc(Integer id, String repositoryName, String repo, String owner, String version) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + // cd到 localPathlocal/id/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP + if (StringUtils.isEmpty(version)) { + List> versionList = this.getVersionList(repo, owner); + if (versionList.size() == 0) { + throw new Exception("数据集文件不存在"); + } + version = (String) versionList.get(0).get("name"); + } + + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull("E:\\test\\" +id, repositoryName, version, gitLinkUsername, gitLinkPassword); + // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 + Map stringObjectMap = YamlUtils.loadYamlFile("E:\\test\\" + id + "\\" + repositoryName + "\\" + "dataset.yaml"); + NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); + List versionVos = new ArrayList(); + if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){ + for(Map fileDetail : fileDetailsAfterGitPull){ + VersionVo versionVo = new VersionVo(); + versionVo.setUrl((String) fileDetail.get("filePath")); + versionVo.setFileName((String) fileDetail.get("fileName")); + long size = (long) fileDetail.get("size"); + versionVo.setFileSize(FileUtil.formatFileSize(size)); + versionVos.add(versionVo); + } + } + newDatasetVo.setDatasetVersionVos(versionVos); + return newDatasetVo; + } + + @Override + public List> getVersionList(String repo, String owner) throws Exception { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername+"_gitToken"); + List> brancheList = gitService.getBrancheList(token, owner, repo); + return brancheList.stream() + .filter(branch -> !"master".equals(branch.get("name"))) + .collect(Collectors.toList()); + } + + @Override + public void deleteDatasetNew(String repo, String owner) throws Exception { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername+"_gitToken"); + gitService.deleteProject(token, owner, repo); + } + + @Override + public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { + checkoutToken(); + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername+"_gitToken"); + gitService.deleteBranch(token, owner, repo, version); + } + + @Override + public List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception { + List> results = new ArrayList<>(); + + for (MultipartFile file : files) { + // 构建objectName + String username = SecurityUtils.getLoginUser().getUsername(); + String fileName = file.getOriginalFilename(); + String path = localPathlocal + "temp" + "/" + username + "/" + "datasets" + "/" + uuid + "/" + "data" + "/" + fileName; + long sizeInBytes = file.getSize(); + String formattedSize = FileUtil.formatFileSize(sizeInBytes); + File targetFile = new File(path); + // 确保目录存在 + targetFile.getParentFile().mkdirs(); + // 保存文件到目标路径 + FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile); + // 返回上传文件的路径 + String absolutePath = targetFile.getAbsolutePath(); + Map result = new HashMap<>(); + result.put("fileName", fileName); + result.put("url", path); // objectName根据实际情况定义 + result.put("fileSize", formattedSize); + results.add(result); + } + return results; + } + + @Override + public ResponseEntity downloadDatasetlocal(String filePath) throws Exception { + File file = new File(filePath); + + if (!file.exists()) { + throw new FileNotFoundException("File not found: " + filePath); + } + + InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); + + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName()); + headers.add(HttpHeaders.CONTENT_LENGTH, String.valueOf(file.length())); + headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); + + return ResponseEntity.ok() + .headers(headers) + .contentLength(file.length()) + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(resource); + } + + @Override + public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { + // 命令行操作 git clone 项目地址 + checkoutToken(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String ci4sUsername = loginUser.getUsername(); + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + Integer userId = (Integer) userInfo.get("user_id"); + String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git"; + String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/" +repositoryName; + File folder = new File(localPath); + if(folder.exists() && folder.isDirectory()){ + //切换分支 + DVCUtils.gitCheckoutBranch(localPath, version); + //pull + DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword); + //dvc pull + DVCUtils.dvcPull(localPath); + }else { + DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword); + } + + // 打包 data 文件夹 + String dataFolderPath = localPath + "/data"; + String zipFilePath = localPath + "/data.zip"; + try (FileOutputStream fos = new FileOutputStream(zipFilePath); + ZipOutputStream zos = new ZipOutputStream(fos)) { + Path sourcePath = Paths.get(dataFolderPath); + Files.walk(sourcePath).forEach(path -> { + if (!Files.isDirectory(path)) { + ZipEntry zipEntry = new ZipEntry(sourcePath.relativize(path).toString()); + try { + zos.putNextEntry(zipEntry); + Files.copy(path, zos); + zos.closeEntry(); + } catch (IOException e) { + throw new RuntimeException("Error while zipping: " + path, e); + } + } + }); + } + + // 返回压缩文件的输入流 + File zipFile = new File(zipFilePath); + InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); + + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=data.zip") + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .contentLength(zipFile.length()) + .body(resource); + + } + + + + public List convert(List> lst) { + if (lst != null && lst.size() > 0) { + List newDatasetVos = ConvertUtil.convertListMapToObjectList(lst, NewDatasetVo.class); + + for (NewDatasetVo newDatasetVo : newDatasetVos) { + Map map = lst.stream() + .filter(m -> m.get("id").equals(newDatasetVo.getId())) + .findFirst() + .orElse(null); + + if (map != null) { + List> topics = (List>) map.get("topics"); + if (topics != null) { + topics.forEach(topic -> { + String name = (String) topic.get("name"); + if (name != null) { + if (name.startsWith("datatag_")) { + newDatasetVo.setDataTag(name.substring("datatag_".length())); + } else if (name.startsWith("datatype_")) { + newDatasetVo.setDataType(name.substring("datatype_".length())); + } + } + }); + } + + Map author = (Map) map.get("author"); + newDatasetVo.setCreateBy((String) author.get("name")); + newDatasetVo.setOwner((String) author.get("login")); + } + } + + return newDatasetVos; + } + return new ArrayList<>(); + } + + private String checkoutToken(){ + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername+"_gitToken"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + + if(StringUtils.isEmpty(token)){ + gitService.login(gitLinkUsername, gitLinkPassword); + token = jedis.get(ci4sUsername+"_gitToken"); + }else { + try { + Map userInfo = gitService.getUserInfo(token); + if (userInfo == null ||(userInfo.get("status")!=null&&401==(Integer) userInfo.get("status"))){ + gitService.login(gitLinkUsername, gitLinkPassword); + token = jedis.get(ci4sUsername+"_gitToken"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + return token; + + } + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 2fa7780f..9aa2b03f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -201,11 +201,11 @@ public class DVCUtils { Path repoPath = Paths.get(localPath, repoFolder); //刷新 - gitFetch(localPath, username, password); - // 切换到指定分支 - gitCheckoutBranch(localPath, branch); - // 执行git pull - gitPull(localPath, username, password); +// gitFetch(localPath, username, password); +// // 切换到指定分支 +// gitCheckoutBranch(localPath, branch); +// // 执行git pull +// gitPull(localPath, username, password); // 读取data文件夹中的文件列表 Path dataPath = Paths.get(repoPath.toString(), "data"); File[] files = dataPath.toFile().listFiles(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 74cccf6e..dddd325f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -42,8 +42,8 @@ public class NewDatasetVo implements Serializable { @ApiModelProperty(name = "time_ago",value = "更新时间") private String timeAgo; - @ApiModelProperty(name = "repo_id",value = "数据集仓库id") - private Integer repoId; + @ApiModelProperty(name = "id",value = "数据集仓库id") + private Integer id; @ApiModelProperty(name = "visits",value = "访问次数") private Integer visits; @ApiModelProperty(name = "create_by",value = "创建者") @@ -53,7 +53,7 @@ public class NewDatasetVo implements Serializable { @ApiModelProperty(name = "usage",value = "使用示例") private String usage; @ApiModelProperty(name = "update_time",value = "更新时间") - private Date updateTime; + private String updateTime; @ApiModelProperty(name = "processing_code",value = "处理代码") private String processingCode; @ApiModelProperty(name = "owner",value = "项目所有者") From 81366d0eddd73f39758a3fcfb3ce497c57c37728 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 6 Sep 2024 16:44:17 +0800 Subject: [PATCH 040/381] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=AD=BB=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/service/GitService.java | 2 +- .../java/com/ruoyi/platform/service/impl/GitServiceImpl.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java index 666136da..b4682647 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java @@ -23,5 +23,5 @@ public interface GitService { void deleteBranch(String owner,String projectName ,String branchName) throws Exception; - Map getUserInfo() throws Exception; + Map getUserInfo(String token) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 46a3cb4e..56f8ec5e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -81,7 +81,7 @@ public class GitServiceImpl implements GitService { token = jedis.get(ci4sUsername + "_gitToken"); } else { try { - Map userInfo = getUserInfo(); + Map userInfo = getUserInfo(token); if (userInfo == null || (userInfo.get("status") != null && 401 == (Integer) userInfo.get("status"))) { login(gitLinkUsername, gitLinkPassword); token = jedis.get(ci4sUsername + "_gitToken"); @@ -152,8 +152,7 @@ public class GitServiceImpl implements GitService { } @Override - public Map getUserInfo() throws Exception { - String token = this.checkoutToken(); + public Map getUserInfo(String token) throws Exception { String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, token); if (StringUtils.isEmpty(userReq)){ return null; From 23c2bb17706ceee1ce3879cc8031600bc96d5407 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 6 Sep 2024 17:11:25 +0800 Subject: [PATCH 041/381] =?UTF-8?q?=E5=A4=84=E7=90=86LUJ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/NewDatasetServiceImpl.java | 11 ++++++++--- .../main/java/com/ruoyi/platform/utils/DVCUtils.java | 5 +++-- .../main/java/com/ruoyi/platform/vo/NewDatasetVo.java | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index c7126bbc..dff6c6bd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -113,7 +113,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setIdentifier(repositoryName); datasetVo.setId(gitlinIid); datasetVo.setOwner((String) userInfo.get("login")); - + if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ + datasetVo.setDatasetSource("用户上传"); + } YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); // dvc init 初始化 DVCUtils.dvcInit(localPath); @@ -182,6 +184,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setIdentifier(repositoryName); datasetVo.setId(datasetVo.getId()); datasetVo.setOwner((String) userInfo.get("login")); + if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ + datasetVo.setDatasetSource("用户上传"); + } YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); // dvc init 初始化 @@ -269,9 +274,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { version = (String) versionList.get(0).get("name"); } - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull("E:\\test\\" +id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword); + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 - Map stringObjectMap = YamlUtils.loadYamlFile("E:\\test\\" + id + "\\" + repositoryName + "\\" + "dataset.yaml"); + Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + id + "\\" + repositoryName + "\\" + "dataset.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); List versionVos = new ArrayList(); if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){ diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index ce84e86e..c69f446b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -200,14 +200,15 @@ public class DVCUtils { // 切换到指定目录 Path repoPath = Paths.get(localPath, repoFolder, branch); - //刷新 + //刷新 TODO // gitFetch(localPath, username, password); // // 切换到指定分支 // gitCheckoutBranch(localPath, branch); // // 执行git pull // gitPull(localPath, username, password); // 读取data文件夹中的文件列表 - Path dataPath = Paths.get(repoPath.toString(), filePath); + String path = localPath + "\\" + repoFolder + "\\" + filePath; + Path dataPath = Paths.get(path); File[] files = dataPath.toFile().listFiles(); if (files != null) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index dddd325f..6f182f0a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -58,5 +58,7 @@ public class NewDatasetVo implements Serializable { private String processingCode; @ApiModelProperty(name = "owner",value = "项目所有者") private String owner; + @ApiModelProperty(name = "dataset_source",value = "数据集来源") + private String datasetSource; } From 05f1a9880dceb74e4eff9a3b6dda74a259bcf91f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 9 Sep 2024 14:53:17 +0800 Subject: [PATCH 042/381] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=B7=AF=E5=BE=84=202=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9pod=E6=8C=82=E8=BD=BD=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=B8=BAhostpath?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/GitService.java | 2 ++ .../impl/DatasetVersionServiceImpl.java | 4 +-- .../service/impl/ImageServiceImpl.java | 4 +-- .../service/impl/MinioServiceImpl.java | 5 ++++ .../ruoyi/platform/utils/K8sClientUtil.java | 25 +++++++++++++++---- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java index b4682647..735c894f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java @@ -10,6 +10,8 @@ public interface GitService { //登录方法,返回token String login(String username, String password); + String checkoutToken(); + //输入token,项目名,tag,创建新项目,返回项目地址 Map createProject(GitProjectVo gitProjectVo) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java index 25b0df74..9880410c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java @@ -165,9 +165,7 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { .findFirst() .ifPresent(datasetVersion -> { String url = datasetVersion.getUrl(); - String path = bucketName + '/' + url.substring(0, url.lastIndexOf('/')); - response.put("path", path); - + response.put("path", url); }); response.put("content", datasetVersionList); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java index 582af8c9..5acc228b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java @@ -61,7 +61,7 @@ public class ImageServiceImpl implements ImageService { @Resource private MinioService minioService; - @Value("${harbor.bucketName}") + @Value("${minio.dataReleaseBucketName}") private String bucketName; @Value("${harbor.repository}") private String repository; @@ -362,7 +362,7 @@ public class ImageServiceImpl implements ImageService { @Override public Map uploadImageFiles(MultipartFile file) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); - String path = loginUser.getUsername() + "/" + file.getOriginalFilename(); + String path = "images/" + loginUser.getUsername() + "/" + file.getOriginalFilename(); return minioService.uploadFile(bucketName, path, file); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java index e03183dd..dc5fba8d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.service.MinioService; import com.ruoyi.platform.utils.FileUtil; import com.ruoyi.platform.utils.MinioUtil; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -25,6 +26,9 @@ import java.util.Map; @Service("MinioService") public class MinioServiceImpl implements MinioService { + @Value("${jupyter.hostPath}") + private String hostPath; + private final MinioUtil minioUtil; public MinioServiceImpl(MinioUtil minioUtil) { @@ -62,6 +66,7 @@ public class MinioServiceImpl implements MinioService { try (InputStream inputStream = file.getInputStream()){ minioUtil.uploadObject(bucketName, objectName, inputStream); result.put("fileName", file.getOriginalFilename()); + objectName = hostPath + "/" + objectName; result.put("url", objectName); // objectName根据实际情况定义 result.put("fileSize", formattedSize); } catch (Exception e) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index dbd4d7a2..1c6c5aed 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -33,6 +33,10 @@ import java.util.*; @Slf4j @Component public class K8sClientUtil { + + @Value("${jupyter.hostPath}") + private String hostPath; + private String http; private String token; /** @@ -446,13 +450,24 @@ public class K8sClientUtil { // 配置卷和卷挂载 List volumeMounts = new ArrayList<>(); - volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); - volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); - volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("workspace").mountPath("/opt/notebooks")); + volumeMounts.add(new V1VolumeMount().name("dataset").mountPath("/opt/dataset").readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("model").mountPath("/opt/model").readOnly(true)); List volumes = new ArrayList<>(); - volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); - volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); + volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/notebooks").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("dataset").hostPath(new V1HostPathVolumeSource().path(hostPath + "/dataset").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("model").hostPath(new V1HostPathVolumeSource().path(hostPath + "/model").type("DirectoryOrCreate"))); + + // 配置卷和卷挂载 +// List volumeMounts = new ArrayList<>(); +// volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); +// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); +// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); +// +// List volumes = new ArrayList<>(); +// volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); +// volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); //配置资源 From ecc911a9b09c1bc22ccf64bcba16edae6f0cb566 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 9 Sep 2024 16:11:08 +0800 Subject: [PATCH 043/381] =?UTF-8?q?=E4=BC=98=E5=8C=96pod=E6=8C=82=E8=BD=BD?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/JupyterServiceImpl.java | 5 +++-- .../main/java/com/ruoyi/platform/utils/K8sClientUtil.java | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index e6380f3a..cefcead2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -100,12 +100,13 @@ public class JupyterServiceImpl implements JupyterService { String podName = loginUser.getUsername().toLowerCase() + "-editor-pod" + "-" + id; String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; //新建编辑器的pvc - V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); +// V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); //TODO 设置镜像可配置,这里先用默认镜像启动pod // 调用修改后的 createPod 方法,传入额外的参数 - Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, pvc, devEnvironment, minioPvcName, datasetPath, modelPath); +// Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, pvc, devEnvironment, minioPvcName, datasetPath, modelPath); + Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, null, devEnvironment, minioPvcName, datasetPath, modelPath); String url = masterIp + ":" + podPort; redisService.setCacheObject(podName, masterIp + ":" + podPort); devEnvironment.setStatus("Pending"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 1c6c5aed..48f4e287 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -455,9 +455,9 @@ public class K8sClientUtil { volumeMounts.add(new V1VolumeMount().name("model").mountPath("/opt/model").readOnly(true)); List volumes = new ArrayList<>(); - volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/notebooks").type("DirectoryOrCreate"))); - volumes.add(new V1Volume().name("dataset").hostPath(new V1HostPathVolumeSource().path(hostPath + "/dataset").type("DirectoryOrCreate"))); - volumes.add(new V1Volume().name("model").hostPath(new V1HostPathVolumeSource().path(hostPath + "/model").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/notebooks").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("dataset").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/dataset").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("model").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/model").type("DirectoryOrCreate"))); // 配置卷和卷挂载 // List volumeMounts = new ArrayList<>(); From dd1d1aae266ccdb9d18e4cca7b7244b4c6a845e2 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Mon, 9 Sep 2024 17:10:58 +0800 Subject: [PATCH 044/381] =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ExperimentInsServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index ece171ac..040ca4c5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -55,11 +55,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { private int logsLines; @Resource private K8sClientUtil k8sClientUtil; - private final MinioUtil minioUtil; - - public ExperimentInsServiceImpl(MinioUtil minioUtil) { - this.minioUtil = minioUtil; - } + @Resource + private MinioUtil minioUtil; public enum ExperimentInsStatus { Running, From 083342cc8aefe2c63ce898ad0353243ee7617cff Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 9 Sep 2024 18:59:00 +0800 Subject: [PATCH 045/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9nacos=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 9 +- .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 121 +++++++++++++++++- .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 2 +- 8 files changed, 132 insertions(+), 10 deletions(-) diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index a6607611..747bc81c 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: @@ -31,4 +31,9 @@ spring: refresh: true - data-id: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} group: DEFAULT_GROUP - refresh: true \ No newline at end of file + refresh: true + + redis: + host: 172.20.32.150 + port: 6379 + password: \ No newline at end of file diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index cce74447..aafb6886 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 11095bb1..b41a640d 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: @@ -31,4 +31,121 @@ spring: refresh: true - data-id: management-platform-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} group: DEFAULT_GROUP - refresh: true \ No newline at end of file + refresh: true + + # 文件上传 + servlet: + multipart: + # 单个文件大小 + max-file-size: 20GB + # 设置总上传的文件大小 + max-request-size: 20GB + redis: + host: 172.20.32.150 + port: 6379 + password: + # 数据源 + datasource: + # Druid StatViewServlet配置 + druid: + stat-view-servlet: + # 默认true 内置监控页面首页/druid/index.html + enabled: true + initial-size: 20 + max-active: 60 + min-idle: 20 + max-wait: 30000 + dynamic: + primary: master + datasource: + master: + url: jdbc:mysql://172.20.32.150:3306/ry-ci4s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + username: root + password: 123456 + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver +# mybatis配置 +mybatis: + # 搜索指定包别名 + typeAliasesPackage: com.ruoyi.management-platform + # 配置mapper的扫描,找到所有的mapper.xml映射文件 + mapperLocations: classpath:mapper/**/*.xml + configuration: + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + +# swagger配置 +swagger: + title: 系统模块接口文档 + license: Powered By ruoyi + licenseUrl: https://ruoyi.vip +# argo +# argo +argo: + url: http://172.20.32.181:31000 + convert: /api/v1/workflow/convert + workflowRun: /api/v1/workflow/run + workflowStatus: /api/v1/workflow/getWorkflow + workflowTermination: /api/v1/workflow/terminate + workflowLog: /api/v1/workflow/getWorkflowLog + workflowRealTimeLog: /api/v1/workflow/getRealtimeWorkflowLog + workflowCopy: /api/v1/workflow/copy + workflowPodLog: /api/v1/workflow/getLogByPod + ins: + logsLines: 200 +# 流水线配置 +pipeline: + control_strategy: '{"max_run_time":{"type":"str","label":"超时中断","item_type":"","value":"2h"},"retry_times":{"type":"str","item_type":"","label":"重试次数","value":"1"}}' + +k8s: + storageClassName: storage-nfs + http: https://172.20.32.181:6443 + token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjRWcFBPWl9YSFFxQ2tVanRuNHdRT1dnUlJNTnB2bG5TQlVSRjNKdExWNDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImFkbWluLXNlcnZpY2UtYWNjb3VudC10b2tlbi14ZDk5eiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbi1zZXJ2aWNlLWFjY291bnQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmMGEzNmYyMS01MjQyLTQ4MTAtYWVmZS0xOTEwOTZlZjc5YmUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDphZG1pbi1zZXJ2aWNlLWFjY291bnQifQ.fo-Wf0-5-IRC5fhRh65yfqCJqKfE9MrNFIXL2fd1CqVAHD7JBpWO2IsFiSmz9Bm7VfLmFAp2NB7DjW4ZLjC7ODiGhpSseBP8x4ceFuHL6pRGUsEBvHQBBBuQcGhNOcsxIDHnDqUdUzoLprj223lMZNTQowITuqYFU4GVbethyEuS6G5Wh9KHI3KYHFtG4_AeWBgI5Ppz8pDrhHzSFWTFbzxQ3RPGEwF0V-9wEtdrSYnfETi3rdRWif9W4a0RW8HwD9Gf7UCYcyFOs7e5_3-IvmctS85g87PYIfHXMhu_kOw-_Il4bkwPEK5uiBFDw0M1-s9YP-F9r5sXXvOJlsAr1g + +# jupyter配置 +jupyter: + image: 172.20.32.187/ci4s/jupyterlab:v1.3 + port: 8888 + namespace: argo + mountPath: /opt + storage: 2Gi + masterIp: http://172.20.32.181 + hostPath: /platform-data +# tensorBoard配置 +tensorBoard: + image: activeeon/tensorboard:latest + port: 6006 + mountPath: /logs/ + masterIp: http://172.20.32.181 +labelStudio: + url: http://172.20.32.185:31209 + loaclUrl: http://127.0.0.1:8080 +minio: + endpoint: http://172.20.32.181:9000 + dataReleaseBucketName: myjfs + secretKey: 12345678 + # endpoint: http://172.20.32.181:30164 + accessKey: admin + # secretKey: qazxc123456. + pvcName: minio-pvc-claim-new + # dataReleaseBucketName: platform-data +harbor: + bucketName: tempimagefile + repository: testlib + harborUrl: 172.20.32.187 + harborUser: admin + harborpassword: Harbor12345 + deploymentName: docker-push-deployment + serviceNS: argo +dockerpush: + image: 172.20.32.187/pipeline-service/docker:ci4stest + mountPath: /data + proxyUrl: http://172.20.32.253:3128 + +aim: + proxyUrl: http://172.20.32.181:30123 + url: http://172.20.32.181:30059 + +git: + endpoint: https://gitlink.org.cn + localPath: E:/test/ \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 30ee8b10..3e93a755 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index b2f67919..63906ed6 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml index 8c79d3ad..2982cdc5 100644 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index c7ddcd4e..6ca7b806 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml index c2876a08..b8dfa86a 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml @@ -16,7 +16,7 @@ spring: # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos - password: nacos + password: h1n2x3j4y5@ retry: enabled: true config: From 6c81e5611c95c9f06baf61b62890707937ef33df Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 09:07:36 +0800 Subject: [PATCH 046/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9nacos=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 2 ++ ruoyi-gateway/src/main/resources/bootstrap.yml | 2 ++ .../management-platform/src/main/resources/bootstrap.yml | 4 +++- ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml | 2 ++ ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml | 2 ++ ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml | 2 ++ ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 2 ++ ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml | 2 ++ 8 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index a6607611..f9d7d8b4 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -19,7 +19,9 @@ spring: password: nacos retry: enabled: true + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index cce74447..cc27cf1d 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -19,7 +19,9 @@ spring: password: nacos retry: enabled: true + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 11095bb1..b4ff8af9 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -19,7 +19,9 @@ spring: password: nacos retry: enabled: true + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 @@ -31,4 +33,4 @@ spring: refresh: true - data-id: management-platform-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} group: DEFAULT_GROUP - refresh: true \ No newline at end of file + refresh: true diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 30ee8b10..871b3634 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -13,6 +13,7 @@ spring: cloud: nacos: discovery: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos @@ -20,6 +21,7 @@ spring: retry: enabled: true config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index b2f67919..686603c9 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -13,6 +13,7 @@ spring: cloud: nacos: discovery: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos @@ -20,6 +21,7 @@ spring: retry: enabled: true config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml index 8c79d3ad..688708c8 100644 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml @@ -13,6 +13,7 @@ spring: cloud: nacos: discovery: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos @@ -20,6 +21,7 @@ spring: retry: enabled: true config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index c7ddcd4e..cb0fce35 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -13,6 +13,7 @@ spring: cloud: nacos: discovery: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos @@ -20,6 +21,7 @@ spring: retry: enabled: true config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml index c2876a08..75450678 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml @@ -13,6 +13,7 @@ spring: cloud: nacos: discovery: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 username: nacos @@ -20,6 +21,7 @@ spring: retry: enabled: true config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 server-addr: nacos-ci4s.ci4s-test.svc:8848 # 配置文件格式 From 5661fa0bace38b0c2f47e9c67a022dea77f99aff Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 09:14:35 +0800 Subject: [PATCH 047/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9nacos=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-gateway/src/main/resources/bootstrap.yml | 6 +++--- .../management-platform/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 4 ++-- ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index f03bdc4d..c162d673 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -14,7 +14,7 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index afa365ac..6fdd00d4 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -14,7 +14,7 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -44,7 +44,7 @@ spring: datasource: ds1: nacos: - server-addr: nacos-ci4s.ci4s-test.svc:18848 + server-addr: 172.20.32.181:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP data-type: json diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 07494690..25460d4c 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -14,7 +14,7 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: nacos retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 881074be..70194530 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -15,7 +15,7 @@ spring: discovery: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index 6ec7c709..fc4cd8ec 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -15,7 +15,7 @@ spring: discovery: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml index ac91ea5b..7a337187 100644 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml @@ -15,7 +15,7 @@ spring: discovery: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index e56cfba4..17d17c3c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -15,7 +15,7 @@ spring: discovery: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml index 99e397e7..ea02575b 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml @@ -15,7 +15,7 @@ spring: discovery: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 服务注册地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 username: nacos password: h1n2x3j4y5@ retry: @@ -23,7 +23,7 @@ spring: config: namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: nacos-ci4s.ci4s-test.svc:8848 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 From a1c9ef7c3c55c45afefab2be57de3eade40a9f9a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 09:28:49 +0800 Subject: [PATCH 048/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9build=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/k8s/build.sh b/k8s/build.sh index c9d46265..b2048d34 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -43,6 +43,7 @@ cd ${baseDir} # 拉取指定分支的最新代码 echo "Checking out and pulling branch $branch..." +git stash git checkout $branch if [ $? -ne 0 ]; then echo "切换到分支 $branch 失败,请检查分支名称是否正确!" From 47c4bc86acb84e9a4315924cc8114ca25c5bd354 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 09:40:31 +0800 Subject: [PATCH 049/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9build=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/k8s/build.sh b/k8s/build.sh index b2048d34..aa567261 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -50,12 +50,14 @@ if [ $? -ne 0 ]; then exit 1 fi +git stash git pull origin $branch if [ $? -ne 0 ]; then echo "拉取代码失败,请检查网络或联系管理员!" exit 1 fi +chmod +777 *.sh # 创建目录 mkdir -p ${baseDir}/k8s/dockerfiles/jar mkdir -p ${baseDir}/k8s/dockerfiles/html From c4b569bb85f2f1d25d691595ad7b1600c1c551da Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 09:50:32 +0800 Subject: [PATCH 050/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9build=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/k8s/build.sh b/k8s/build.sh index aa567261..943998e2 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -43,6 +43,7 @@ cd ${baseDir} # 拉取指定分支的最新代码 echo "Checking out and pulling branch $branch..." + git stash git checkout $branch if [ $? -ne 0 ]; then @@ -57,7 +58,8 @@ if [ $? -ne 0 ]; then exit 1 fi -chmod +777 *.sh +chmod +777 ${baseDir}/*.sh + # 创建目录 mkdir -p ${baseDir}/k8s/dockerfiles/jar mkdir -p ${baseDir}/k8s/dockerfiles/html From 38cd15b47a2739a4a25389bd2b3de4a7d2070eea Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 09:53:23 +0800 Subject: [PATCH 051/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9build=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/build.sh b/k8s/build.sh index 943998e2..ed30e9f1 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -58,7 +58,7 @@ if [ $? -ne 0 ]; then exit 1 fi -chmod +777 ${baseDir}/*.sh +chmod +777 ${baseDir}/k8s/*.sh # 创建目录 mkdir -p ${baseDir}/k8s/dockerfiles/jar From 7fa0d7cb6420faab84088360385261632a43b956 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 10:27:12 +0800 Subject: [PATCH 052/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9build=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/k8s/build-java.sh b/k8s/build-java.sh index 66ddbecc..c917e15b 100644 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -1,12 +1,15 @@ #!/bin/bash baseDir="/home/somuns/ci4s" + +buildDir=$baseDir + #判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块 -if [ "$1" == "all" ]; then - buildDir=$baseDir -else - buildDir="$baseDir/ruoyi-modules/management-platform" -fi +#if [ "$1" == "all" ]; then +# buildDir=$baseDir +#else +# buildDir="$baseDir/ruoyi-modules/management-platform" +#fi echo "Building $buildDir" cd $buildDir && mvn clean install From 31455d042048464c1e2d62bae43ab8c702b6d2b2 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 10:41:10 +0800 Subject: [PATCH 053/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9build=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 11 +++++------ k8s/build.sh | 2 +- k8s/deploy.sh | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/k8s/build-java.sh b/k8s/build-java.sh index c917e15b..7bb2180b 100644 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -2,14 +2,13 @@ baseDir="/home/somuns/ci4s" -buildDir=$baseDir #判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块 -#if [ "$1" == "all" ]; then -# buildDir=$baseDir -#else -# buildDir="$baseDir/ruoyi-modules/management-platform" -#fi +if [ "$1" == "all" ]; then + buildDir=$baseDir +else + buildDir="$baseDir/ruoyi-modules/management-platform" +fi echo "Building $buildDir" cd $buildDir && mvn clean install diff --git a/k8s/build.sh b/k8s/build.sh index ed30e9f1..a0a3adee 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -139,7 +139,7 @@ fi if [ "$service" == "all" ]; then # 编译前端 - compile_front +# compile_front # 编译java compile_java "all" diff --git a/k8s/deploy.sh b/k8s/deploy.sh index a9fe57f8..06d4b5bd 100644 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -143,7 +143,7 @@ fi if [ "$service" == "all" ]; then #部署前端 - build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" +# build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" #部署管理平台 build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" #部署认证中心 From 2a54f602cfe23be801b217094783edfcd4a6145a Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 10 Sep 2024 14:35:46 +0800 Subject: [PATCH 054/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/NewDatasetService.java | 4 +- .../impl/ExperimentInsServiceImpl.java | 9 +- .../platform/service/impl/GitServiceImpl.java | 1 + .../service/impl/NewDatasetServiceImpl.java | 135 +++--- .../com/ruoyi/platform/utils/DVCUtils.java | 408 +++++++++++++++++- 5 files changed, 455 insertions(+), 102 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java index e41928d7..0234f133 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -11,14 +11,12 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletableFuture; public interface NewDatasetService { String newCreateDataset(NewDatasetVo datasetVo) throws Exception; - CompletableFuture newCreateVersion(NewDatasetVo datasetVo)throws Exception; - + String newCreateVersion(NewDatasetVo datasetVo) throws Exception; List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception; ResponseEntity downloadDatasetlocal(String filePath) throws Exception; ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws IOException, Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 040ca4c5..5c04914b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -53,10 +53,15 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { private String argoWorkflowPodLog; @Value("${argo.ins.logsLines}") private int logsLines; + @Value("${minio.endpoint}") + private String minioEndpoint; @Resource private K8sClientUtil k8sClientUtil; - @Resource - private MinioUtil minioUtil; + private final MinioUtil minioUtil; + public ExperimentInsServiceImpl(MinioUtil minioUtil) { + this.minioUtil = minioUtil; + } + public enum ExperimentInsStatus { Running, diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 56f8ec5e..1ecccaa8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -114,6 +114,7 @@ public class GitServiceImpl implements GitService { resMap.put("new_branch_name", branchName); resMap.put("old_branch_name", oldBranchName); String req = HttpUtils.sendPostWithToken(createBranchUrl, JsonUtils.objectToJson(resMap), token); + System.out.println(req); } @Override diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index dff6c6bd..eb0cca04 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -34,7 +34,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -104,12 +103,12 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); datasetVo.setVersionDesc(datasetVo.getDescription()); - datasetVo.setUsage("
\n" +
+        datasetVo.setUsage("
" +
                 "# 克隆数据集配置文件与存储参数到本地\n" +
                 "git clone -b " + branchName + " "+ projectUrl + "\n" +
                 "# 远程拉取配置文件\n" +
                 "dvc pull\n" +
-                "
\n"); + "
"); datasetVo.setIdentifier(repositoryName); datasetVo.setId(gitlinIid); datasetVo.setOwner((String) userInfo.get("login")); @@ -135,82 +134,65 @@ public class NewDatasetServiceImpl implements NewDatasetService { return "新增数据集成功"; } - @Override - public CompletableFuture newCreateVersion(NewDatasetVo datasetVo) { - return CompletableFuture.supplyAsync(() -> { - try { - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername + "_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - // 创建分支 - String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); - String repositoryName = datasetVo.getIdentifier(); - if (StringUtils.equals(branchName, "master")) { - gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); - } - // 得到项目地址 - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - - // 得到用户操作的路径 - String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal + loginUser.getUsername() + "/" + "datasets" + "/" + datasetVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - if (FileUtil.checkDirectoryExists(localPath)) { - DVCUtils.gitFetch(localPath, gitLinkUsername, gitLinkPassword); - DVCUtils.gitCheckoutBranch(localPath, branchName); - } else { - DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - } + public String newCreateVersion(NewDatasetVo datasetVo) throws Exception { + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + // 创建分支 + String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); + String repositoryName = datasetVo.getIdentifier(); + String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); + String localPath = localPathlocal + datasetVo.getId() + "/" + datasetVo.getName(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + datasetVo.getId() + "/" + repositoryName + "/" + branchName; - - DVCUtils.moveFiles(sourcePath, localPath); - // 拼接生产的元数据后写入yaml文件 - datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); - datasetVo.setUpdateTime(DateUtils.getTime()); - datasetVo.setVersionDesc(datasetVo.getDescription()); - datasetVo.setUsage("
\n" +
-                        "# 克隆数据集配置文件与存储参数到本地\n" +
-                        "git clone -b " + branchName + " "+ projectUrl + "\n" +
-                        "# 远程拉取配置文件\n" +
-                        "dvc pull\n" +
-                        "
\n"); - datasetVo.setIdentifier(repositoryName); - datasetVo.setId(datasetVo.getId()); - datasetVo.setOwner((String) userInfo.get("login")); - if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ - datasetVo.setDatasetSource("用户上传"); - } - YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); - - // dvc init 初始化 - DVCUtils.dvcInit(localPath); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath, "data"); - // git commit - DVCUtils.gitAdd(localPath, "."); - DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); - DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath); - return "新增数据集成功"; - } catch (Exception e) { - throw new RuntimeException(e); - } - }); + // 创建本地分支 + DVCUtils.createLocalBranchBasedOnMaster(localPath, branchName); + + //dvc checkout + DVCUtils.dvcCheckout(localPath); + + // 准备数据 + String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + datasetVo.getId() + "/" + repositoryName + "/" + branchName; + + DVCUtils.moveFiles(sourcePath, localPath); + // 拼接生产的元数据后写入yaml文件 + datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); + datasetVo.setUpdateTime(DateUtils.getTime()); + datasetVo.setVersionDesc(datasetVo.getDescription()); + datasetVo.setUsage("
" +
+                "# 克隆数据集配置文件与存储参数到本地\n" +
+                "git clone -b " + branchName + " "+ projectUrl + "\n" +
+                "# 远程拉取配置文件\n" +
+                "dvc pull\n" +
+                "
"); + datasetVo.setIdentifier(repositoryName); + datasetVo.setId(datasetVo.getId()); + datasetVo.setOwner((String) userInfo.get("login")); + if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ + datasetVo.setDatasetSource("用户上传"); + } + YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); + //dvc数据跟踪 + // 配置远程S3地址 + DVCUtils.dvcRemoteAdd(localPath, s3Path); + DVCUtils.dvcConfigS3Credentials(localPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); + // dvc 跟踪 + DVCUtils.dvcAdd(localPath, "data"); + DVCUtils.pushNewBranchToRemote(localPath,gitLinkUsername,gitLinkPassword,branchName); + //dvc push 到远程S3 + DVCUtils.dvcPush(localPath); + return "新增数据集成功"; } + @Override public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { Jedis jedis = new Jedis(redisHost); @@ -273,7 +255,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { } version = (String) versionList.get(0).get("name"); } - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + id + "\\" + repositoryName + "\\" + "dataset.yaml"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index c69f446b..46fa7b52 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -2,22 +2,29 @@ package com.ruoyi.platform.utils; import org.eclipse.jgit.api.*; import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.lib.RepositoryState; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; -import org.eclipse.jgit.transport.CredentialsProvider; -import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; +import org.eclipse.jgit.transport.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.*; -import java.nio.file.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; public class DVCUtils { - + private static final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); private static final Logger log = LoggerFactory.getLogger(DVCUtils.class); private static void runCommand(String command, String workingDir) throws Exception { @@ -27,7 +34,7 @@ public class DVCUtils { BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { - System.out.println(line); + log.info(line); } int exitCode = process.waitFor(); if (exitCode != 0) { @@ -56,6 +63,16 @@ public class DVCUtils { cloneCommand.call(); } + public static void gitClone(String localPath, String repoUrl, String username, String password) throws GitAPIException { + CloneCommand cloneCommand = Git.cloneRepository() + .setURI(repoUrl) + .setDirectory(new java.io.File(localPath)) + .setCredentialsProvider(new UsernamePasswordCredentialsProvider(username, password)); + + cloneCommand.call(); + } + + public static void gitAdd(String localPath, String filePath) throws IOException, GitAPIException { FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(localPath, ".git")) @@ -103,6 +120,356 @@ public class DVCUtils { } } + + /** + * 更新本地仓库中的所有分支 + * + * @param localPath 本地仓库路径 + * @param username 远程仓库用户名 + * @param password 远程仓库密码 + */ + public static void updateAllBranches(String localPath, String username, String password) { + try (Git git = Git.open(new File(localPath))) { + // 设置凭证,用于远程仓库的认证 + UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + + // 获取远程分支列表 + List remoteBranches = git.branchList().setListMode(org.eclipse.jgit.api.ListBranchCommand.ListMode.REMOTE).call(); + + // 遍历远程分支并更新本地对应的分支 + for (Ref remoteBranch : remoteBranches) { + // 获取分支名称,去掉前缀 "refs/remotes/origin/" + String branchName = remoteBranch.getName().replace("refs/remotes/origin/", ""); + log.info("Updating branch: " + branchName); + + // 检查本地是否存在该分支,如果不存在则创建 + if (!branchExistsLocally(git, branchName)) { + git.branchCreate().setName(branchName).setStartPoint("origin/" + branchName).call(); + } + + // 切换到对应的分支 + git.checkout().setName(branchName).call(); + + // 拉取远程分支的最新内容 + PullCommand pull = git.pull().setRemoteBranchName(branchName).setCredentialsProvider(credentialsProvider); + pull.call(); + } + + log.info("All branches updated successfully."); + + } catch (IOException | GitAPIException e) { + log.error("Error occurred while updating all branches", e); + } + } + /** + * 更新本地仓库中的指定分支 + * + * @param localPath 本地仓库路径 + * @param username 远程仓库用户名 + * @param password 远程仓库密码 + * @param branchName 需要更新的分支名称 + */ + public static void updateBranch(String localPath, String username, String password, String branchName) { + try (Git git = Git.open(new File(localPath))) { + // 设置凭证,用于远程仓库的认证 + UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + + // 检查本地是否存在该分支,如果不存在则创建 + if (!branchExistsLocally(git, branchName)) { + git.branchCreate().setName(branchName).setStartPoint("origin/" + branchName).call(); + } + + // 切换到对应的分支 + git.checkout().setName(branchName).call(); + + // 拉取远程分支的最新内容 + PullCommand pull = git.pull().setRemoteBranchName(branchName).setCredentialsProvider(credentialsProvider); + pull.call(); + + log.info("Branch " + branchName + " updated successfully."); + + } catch (IOException | GitAPIException e) { + log.error("Error occurred while updating branche", e); + } + } + + + /** + * 创建本地分支 + * + * @param localPath 本地仓库路径 + * @param branchName 要创建的分支名称 + */ + public static void createLocalBranch(String localPath, String branchName) { + try (Git git = Git.open(new File(localPath))) { + // 创建本地分支 + git.branchCreate().setName(branchName).call(); + log.info("本地分支 " + branchName + " 创建成功。"); + + } catch (IOException | GitAPIException e) { + log.error("Error occurred while creating local branch", e); + } + } + + /** + * 基于 master 创建本地分支 + * + * @param localPath 本地仓库路径 + * @param branchName 要创建的分支名称 + */ + public static void createLocalBranchBasedOnMaster(String localPath, String branchName) { + try (Git git = Git.open(new File(localPath))) { + // 切换到 master 分支 + git.checkout().setName("master").call(); + + // 创建新的本地分支 + git.branchCreate().setName(branchName).call(); + log.info("基于 master 的本地分支 " + branchName + " 创建成功。"); + + git.checkout().setName(branchName).call(); + + } catch (IOException | GitAPIException e) { + log.error("Exception occurred while creating local branch based on master",e); + } + } + + /** + * 将本地分支推送到远程仓库 + * + * @param localPath 本地仓库路径 + * @param username 远程仓库用户名 + * @param password 远程仓库密码 + * @param branchName 要推送的分支名称 + */ + public static void pushLocalBranchToRemote(String localPath, String username, String password, String branchName) { + try (Git git = Git.open(new File(localPath))) { + // 设置凭证,用于远程仓库的认证 + UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + + // 切换到要推送的分支 + git.checkout().setName(branchName).call(); + + // 添加所有更改到暂存区 + git.add().addFilepattern(".").call(); + + // 提交更改 + git.commit().setMessage("commit from ci4s").call(); + + // 推送本地分支到远程仓库 + git.push() + .setRemote("origin") + .add(branchName) + .setCredentialsProvider(credentialsProvider) + .call(); + + log.info("本地分支 " + branchName + " 推送成功。"); + + } catch (IOException | GitAPIException e) { + log.error("Error occurred while pushing local branch to remote", e); + } + } + + /** + * 将本地分支推送到远程(新增远程分支) + * + * @param localPath 本地仓库路径 + * @param username 用户名 + * @param password 密码 + * @param branchName 要推送的分支名称 + * @throws IOException 如果仓库路径无效 + * @throws GitAPIException 如果Git操作失败 + */ + public static void pushNewBranchToRemote(String localPath, String username, String password, String branchName) throws IOException, GitAPIException { + try (Git git = Git.open(new File(localPath))) { + // 设置凭证,用于远程仓库的认证 + UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + + // 切换到要推送的分支,确保分支已存在,并且切换至该分支 + git.checkout().setName(branchName).call(); + + // 创建一个新的 RefSpec + RefSpec refSpec = new RefSpec(branchName + ":" + branchName); + + // 添加所有更改到暂存区 + git.add().addFilepattern(".").call(); + + // 提交更改 + git.commit().setMessage("commit from ci4s").call(); + // 推送本地分支到远程端(如果远程无该分支,则新增) + Iterable pushResults = git.push() + .setRemote("origin") + .setRefSpecs(refSpec) + .setCredentialsProvider(credentialsProvider) + .call(); + + // 打印结果 + pushResults.forEach(pr ->log.info(pr.getMessages())); + + log.info("分支 " + branchName + " 已成功推送到远程仓库。"); + } + } + + /** + * 检查本地是否存在指定分支 + * + * @param git Git 实例 + * @param branchName 分支名称 + * @return 如果本地存在该分支返回 true,否则返回 false + */ + private static boolean branchExistsLocally(Git git, String branchName) throws GitAPIException { + List localBranches = git.branchList().call(); + for (Ref localBranch : localBranches) { + if (localBranch.getName().endsWith("/" + branchName)) { + return true; + } + } + return false; + } + + + public static void refreshRemoteBranches(String localPath, String username, String password, String branch) throws IOException, GitAPIException { + long startTime = System.currentTimeMillis(); + + try (Repository repository = new FileRepositoryBuilder() + .setGitDir(new File(localPath + "/.git")) + .readEnvironment() + .findGitDir() + .build()) { + + Git git = new Git(repository); + + // 检查仓库状态 + if (repository.getRepositoryState().equals(RepositoryState.MERGING) || + repository.getRepositoryState().equals(RepositoryState.MERGING_RESOLVED)) { + log.info("Repository is in a merging state, please resolve conflicts manually."); + return; + } + + // 设置凭证提供者 + UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + + // 获取远程分支 + long fetchStartTime = System.currentTimeMillis(); + FetchResult fetchResult = git.fetch() + .setRemote("origin") + .setCredentialsProvider(credentialsProvider) + .call(); + long fetchEndTime = System.currentTimeMillis(); + log.info("Fetch time: " + (fetchEndTime - fetchStartTime) + " ms"); + + // 打印获取的远程分支 + Collection fetchedRefs = fetchResult.getAdvertisedRefs(); + for (Ref ref : fetchedRefs) { + log.info("Fetched branch: " + ref.getName()); + } + + // 更新本地分支信息 + long branchListStartTime = System.currentTimeMillis(); + git.branchList() + .setListMode(org.eclipse.jgit.api.ListBranchCommand.ListMode.REMOTE) + .call() + .forEach(ref -> executorService.submit(() -> { + String fullBranchName = ref.getName(); + String branchName = fullBranchName.replace("refs/remotes/origin/", ""); + + try { + processBranch(git, repository, credentialsProvider, fullBranchName, branchName); + } catch (Exception e) { + log.error("Failed to process branch: " + branchName, e); + } + })); + + executorService.shutdown(); + try { + executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); + } catch (InterruptedException e) { + log.error("Executor service interrupted", e); + } + + long branchListEndTime = System.currentTimeMillis(); + log.info("Branch list and update time: " + (branchListEndTime - branchListStartTime) + " ms"); + + log.info("远程分支刷新到本地完成。"); + + // 切换分支 + gitCheckoutBranch(localPath, branch); + dvcCheckout(localPath); + + } catch (Exception e) { + throw new RuntimeException(e); + } + + long endTime = System.currentTimeMillis(); + log.info("Total execution time: " + (endTime - startTime) + " ms"); + } + + private static void processBranch(Git git, Repository repository, UsernamePasswordCredentialsProvider credentialsProvider, String fullBranchName, String branchName) throws Exception { + // 检查本地分支是否存在 + Ref localRef = repository.findRef("refs/heads/" + branchName); + if (localRef != null) { + // 如果存在,检查是否已经关联到远程分支 + if (!isBranchUpstreamSet(repository, branchName)) { + // 如果没有关联,设置上游分支 + long upstreamStartTime = System.currentTimeMillis(); + git.branchCreate() + .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.SET_UPSTREAM) + .setStartPoint(fullBranchName) + .setName(branchName) + .call(); + long upstreamEndTime = System.currentTimeMillis(); + log.info("Set upstream for branch: " + branchName + ", time: " + (upstreamEndTime - upstreamStartTime) + " ms"); + } + } else { + // 如果不存在,创建本地分支并设置上游分支 + long createBranchStartTime = System.currentTimeMillis(); + git.branchCreate() + .setName(branchName) + .setStartPoint(fullBranchName) + .call(); + long createBranchEndTime = System.currentTimeMillis(); + log.info("Created local branch: " + branchName + ", time: " + (createBranchEndTime - createBranchStartTime) + " ms"); + + // 设置上游分支 + long setUpstreamStartTime = System.currentTimeMillis(); + git.branchCreate() + .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.SET_UPSTREAM) + .setStartPoint(fullBranchName) + .setName(branchName) + .call(); + long setUpstreamEndTime = System.currentTimeMillis(); + log.info("Set upstream for branch: " + branchName + ", time: " + (setUpstreamEndTime - setUpstreamStartTime) + " ms"); + } + + // 执行 git pull + long pullStartTime = System.currentTimeMillis(); + PullCommand pullCommand = git.pull() + .setCredentialsProvider(credentialsProvider); + pullCommand.call(); + long pullEndTime = System.currentTimeMillis(); + log.info("Updated local branch: " + branchName + ", time: " + (pullEndTime - pullStartTime) + " ms"); + } + + /** + * 检查本地分支是否已经关联到远程分支 + * + * @param repository 仓库对象 + * @param branchName 分支名称 + * @return 如果已经关联,返回 true;否则返回 false + */ + private static boolean isBranchUpstreamSet(Repository repository, String branchName) { + try { + org.eclipse.jgit.lib.Config config = repository.getConfig(); + String upstreamBranch = config.getString("branch", branchName, "merge"); + return upstreamBranch != null && !upstreamBranch.isEmpty(); + } catch (Exception e) { + log.error("Failed to check upstream for branch: " + branchName, e); + return false; + } + } + + + + public static void gitFetch(String localPath, String username, String password) throws IOException, GitAPIException { FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(localPath, ".git")) @@ -174,7 +541,7 @@ public class DVCUtils { } public static void dvcPush(String localPath) throws Exception { - String command = "dvc push"; + String command = "dvc push -v"; runCommand(command, localPath); } @@ -185,6 +552,13 @@ public class DVCUtils { } + // 方法 + public static void dvcCheckout(String localPath) throws Exception { + String command = "dvc checkout"; + runCommand(command, localPath); + } + + /** * 切换到指定分支并执行git pull,然后获取data文件夹下所有文件的路径、名称和大小 * @@ -197,15 +571,9 @@ public class DVCUtils { List> fileInfoList = new ArrayList<>(); try { - // 切换到指定目录 - Path repoPath = Paths.get(localPath, repoFolder, branch); - - //刷新 TODO -// gitFetch(localPath, username, password); -// // 切换到指定分支 -// gitCheckoutBranch(localPath, branch); -// // 执行git pull -// gitPull(localPath, username, password); + + //刷新 + refreshRemoteBranches(localPath+"/"+repoFolder, username, password,branch); // 读取data文件夹中的文件列表 String path = localPath + "\\" + repoFolder + "\\" + filePath; Path dataPath = Paths.get(path); From 9fcb1a2db04ffcadbdcdad811c429b7ed1826757 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 14:53:55 +0800 Subject: [PATCH 055/381] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=B7=AF=E5=BE=84=202=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9tensorboard=20pod=E6=8C=82=E8=BD=BD=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E4=B8=BAhostpath?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/JupyterServiceImpl.java | 2 +- .../service/impl/MinioServiceImpl.java | 5 +---- .../impl/ModelsVersionServiceImpl.java | 4 +--- .../service/impl/TensorBoardServiceImpl.java | 19 ++++++++++++------- .../ruoyi/platform/utils/K8sClientUtil.java | 5 +++-- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index cefcead2..31dfb095 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -98,8 +98,8 @@ public class JupyterServiceImpl implements JupyterService { LoginUser loginUser = SecurityUtils.getLoginUser(); //构造pod名称 String podName = loginUser.getUsername().toLowerCase() + "-editor-pod" + "-" + id; - String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; //新建编辑器的pvc +// String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; // V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); //TODO 设置镜像可配置,这里先用默认镜像启动pod diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java index dc5fba8d..aaf7429a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java @@ -26,9 +26,6 @@ import java.util.Map; @Service("MinioService") public class MinioServiceImpl implements MinioService { - @Value("${jupyter.hostPath}") - private String hostPath; - private final MinioUtil minioUtil; public MinioServiceImpl(MinioUtil minioUtil) { @@ -66,7 +63,7 @@ public class MinioServiceImpl implements MinioService { try (InputStream inputStream = file.getInputStream()){ minioUtil.uploadObject(bucketName, objectName, inputStream); result.put("fileName", file.getOriginalFilename()); - objectName = hostPath + "/" + objectName; + objectName = "/" + objectName; result.put("url", objectName); // objectName根据实际情况定义 result.put("fileSize", formattedSize); } catch (Exception e) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java index f94a3bcb..c4dafa96 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java @@ -186,10 +186,8 @@ public class ModelsVersionServiceImpl implements ModelsVersionService { .filter(modelsVersion -> modelsVersion.getUrl() != null && !modelsVersion.getUrl().isEmpty()) .findFirst() .ifPresent(modelsVersion -> { - String url = modelsVersion.getUrl(); - String path = bucketName + '/' + url.substring(0, url.lastIndexOf('/')); + String path = modelsVersion.getUrl(); response.put("path", path); - }); response.put("content", modelsVersionList); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java index 22097734..e7dce433 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java @@ -28,16 +28,17 @@ public class TensorBoardServiceImpl implements TensorBoardService { private RedisService redisService; @Resource private K8sClientUtil k8sClientUtil; + @Override - public PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo){ + public PodStatusVo getTensorBoardStatus(FrameLogPathVo frameLogPathVo) { String status = PodStatus.Terminated.getName(); PodStatusVo tensorboardStatusVo = new PodStatusVo(); tensorboardStatusVo.setStatus(status); - if (StringUtils.isEmpty(frameLogPathVo.getPath())){ + if (StringUtils.isEmpty(frameLogPathVo.getPath())) { return tensorboardStatusVo; } LoginUser loginUser = SecurityUtils.getLoginUser(); - String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; + String podName = loginUser.getUsername().toLowerCase() + "-" + frameLogPathVo.getPath().split("/")[2] + "-tensorboard-pod"; try { String podStatus = k8sClientUtil.getPodStatus(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace()); @@ -58,13 +59,17 @@ public class TensorBoardServiceImpl implements TensorBoardService { @Override public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { - if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ - throw new Exception("存储路径或存储为空"); +// if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ +// throw new Exception("存储路径或存储为空"); +// } + if (StringUtils.isEmpty(frameLogPathVo.getPath())) { + throw new Exception("存储路径为空"); } LoginUser loginUser = SecurityUtils.getLoginUser(); String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; - Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace())?"default":frameLogPathVo.getNamespace(), port, mountPath,frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); - redisService.setCacheObject(podName,masterIp + ":" + podPort); + + Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); + redisService.setCacheObject(podName, masterIp + ":" + podPort); return masterIp + ":" + podPort; } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 48f4e287..03648e6e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -365,13 +365,14 @@ public class K8sClientUtil { .endEnv() .endContainer() .addNewVolume() - .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) + .withName("workspace") + .withHostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/tensorboard").type("DirectoryOrCreate")) +// .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) .endVolume() .withTerminationGracePeriodSeconds(14400L) .endSpec() .build(); - try { pod = api.createNamespacedPod(namespace, pod, null, null, null); } catch (ApiException e) { From efd815edd79d4e373bce87d4c355451d027a8b6f Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 10 Sep 2024 14:56:24 +0800 Subject: [PATCH 056/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/DVCUtils.java | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 46fa7b52..559ee0ff 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -327,9 +327,8 @@ public class DVCUtils { } - public static void refreshRemoteBranches(String localPath, String username, String password, String branch) throws IOException, GitAPIException { + public static void refreshRemoteBranches(String localPath, String username, String password, String branch) throws Exception { long startTime = System.currentTimeMillis(); - try (Repository repository = new FileRepositoryBuilder() .setGitDir(new File(localPath + "/.git")) .readEnvironment() @@ -344,10 +343,8 @@ public class DVCUtils { log.info("Repository is in a merging state, please resolve conflicts manually."); return; } - // 设置凭证提供者 UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); - // 获取远程分支 long fetchStartTime = System.currentTimeMillis(); FetchResult fetchResult = git.fetch() @@ -362,7 +359,6 @@ public class DVCUtils { for (Ref ref : fetchedRefs) { log.info("Fetched branch: " + ref.getName()); } - // 更新本地分支信息 long branchListStartTime = System.currentTimeMillis(); git.branchList() @@ -385,20 +381,15 @@ public class DVCUtils { } catch (InterruptedException e) { log.error("Executor service interrupted", e); } - long branchListEndTime = System.currentTimeMillis(); log.info("Branch list and update time: " + (branchListEndTime - branchListStartTime) + " ms"); - log.info("远程分支刷新到本地完成。"); - - // 切换分支 - gitCheckoutBranch(localPath, branch); - dvcCheckout(localPath); - } catch (Exception e) { - throw new RuntimeException(e); + log.error("Error occurred while refreshing remote branches ", e); ; } - + // 切换分支 + gitCheckoutBranch(localPath, branch); + dvcCheckout(localPath); long endTime = System.currentTimeMillis(); log.info("Total execution time: " + (endTime - startTime) + " ms"); } From a888b88074490f281d87596c73a35ca5c90c48d6 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 15:14:47 +0800 Subject: [PATCH 057/381] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/.gitignore | 9 ++++++++- .../ruoyi/platform/service/impl/MinioServiceImpl.java | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/react-ui/.gitignore b/react-ui/.gitignore index 82cadd2f..889039c2 100644 --- a/react-ui/.gitignore +++ b/react-ui/.gitignore @@ -40,4 +40,11 @@ screenshot build -pnpm-lock.yaml \ No newline at end of file +pnpm-lock.yaml +/src/services/codeConfig/index.js +/src/pages/CodeConfig/components/AddCodeConfigModal/index.less +/src/pages/CodeConfig/List/index.less +/src/pages/Dataset/components/ResourceItem/index.less +/src/pages/CodeConfig/components/AddCodeConfigModal/index.tsx +/src/pages/CodeConfig/components/CodeConfigItem/index.tsx +/src/pages/Dataset/components/ResourceItem/index.tsx diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java index aaf7429a..6a1656b2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java @@ -63,7 +63,6 @@ public class MinioServiceImpl implements MinioService { try (InputStream inputStream = file.getInputStream()){ minioUtil.uploadObject(bucketName, objectName, inputStream); result.put("fileName", file.getOriginalFilename()); - objectName = "/" + objectName; result.put("url", objectName); // objectName根据实际情况定义 result.put("fileSize", formattedSize); } catch (Exception e) { From 9637209e72aa4a5f48563a3f10e88478545afcab Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 10 Sep 2024 15:15:43 +0800 Subject: [PATCH 058/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=8E=E8=BF=9C?= =?UTF-8?q?=E7=A8=8Bmaster=E8=BF=9B=E8=A1=8C=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/DVCUtils.java | 64 ++++++++----------- 1 file changed, 25 insertions(+), 39 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 559ee0ff..73e40d28 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -19,6 +19,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.*; +import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -26,7 +27,7 @@ import java.util.concurrent.TimeUnit; public class DVCUtils { private static final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); private static final Logger log = LoggerFactory.getLogger(DVCUtils.class); - + private static final ExecutorCompletionService completionService = new ExecutorCompletionService<>(executorService); private static void runCommand(String command, String workingDir) throws Exception { ProcessBuilder processBuilder = new ProcessBuilder(command.split(" ")); processBuilder.directory(new File(workingDir)); @@ -161,6 +162,7 @@ public class DVCUtils { log.error("Error occurred while updating all branches", e); } } + /** * 更新本地仓库中的指定分支 * @@ -220,14 +222,12 @@ public class DVCUtils { public static void createLocalBranchBasedOnMaster(String localPath, String branchName) { try (Git git = Git.open(new File(localPath))) { // 切换到 master 分支 - git.checkout().setName("master").call(); - - // 创建新的本地分支 - git.branchCreate().setName(branchName).call(); - log.info("基于 master 的本地分支 " + branchName + " 创建成功。"); - - git.checkout().setName(branchName).call(); - + git.checkout() + .setCreateBranch(true) + .setName(branchName) + .setStartPoint("origin/master") + .call(); + log.info("基于 master 的远程分支 " + branchName + " 创建成功。"); } catch (IOException | GitAPIException e) { log.error("Exception occurred while creating local branch based on master",e); } @@ -326,9 +326,7 @@ public class DVCUtils { return false; } - public static void refreshRemoteBranches(String localPath, String username, String password, String branch) throws Exception { - long startTime = System.currentTimeMillis(); try (Repository repository = new FileRepositoryBuilder() .setGitDir(new File(localPath + "/.git")) .readEnvironment() @@ -343,37 +341,42 @@ public class DVCUtils { log.info("Repository is in a merging state, please resolve conflicts manually."); return; } + // 设置凭证提供者 UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); + // 获取远程分支 - long fetchStartTime = System.currentTimeMillis(); FetchResult fetchResult = git.fetch() .setRemote("origin") .setCredentialsProvider(credentialsProvider) .call(); - long fetchEndTime = System.currentTimeMillis(); - log.info("Fetch time: " + (fetchEndTime - fetchStartTime) + " ms"); // 打印获取的远程分支 Collection fetchedRefs = fetchResult.getAdvertisedRefs(); for (Ref ref : fetchedRefs) { log.info("Fetched branch: " + ref.getName()); } + // 更新本地分支信息 - long branchListStartTime = System.currentTimeMillis(); git.branchList() .setListMode(org.eclipse.jgit.api.ListBranchCommand.ListMode.REMOTE) .call() - .forEach(ref -> executorService.submit(() -> { + .forEach(ref -> { String fullBranchName = ref.getName(); String branchName = fullBranchName.replace("refs/remotes/origin/", ""); - try { - processBranch(git, repository, credentialsProvider, fullBranchName, branchName); + completionService.submit(() -> { + try { + processBranch(git, repository, credentialsProvider, fullBranchName, branchName); + } catch (Exception e) { + log.error("Failed to process branch: " + branchName, e); + } + return null; + }); } catch (Exception e) { - log.error("Failed to process branch: " + branchName, e); + log.error("Task submission rejected", e); } - })); + }); executorService.shutdown(); try { @@ -381,17 +384,14 @@ public class DVCUtils { } catch (InterruptedException e) { log.error("Executor service interrupted", e); } - long branchListEndTime = System.currentTimeMillis(); - log.info("Branch list and update time: " + (branchListEndTime - branchListStartTime) + " ms"); log.info("远程分支刷新到本地完成。"); } catch (Exception e) { - log.error("Error occurred while refreshing remote branches ", e); ; + log.error("Error occurred while refreshing remote branches ", e); } + // 切换分支 gitCheckoutBranch(localPath, branch); dvcCheckout(localPath); - long endTime = System.currentTimeMillis(); - log.info("Total execution time: " + (endTime - startTime) + " ms"); } private static void processBranch(Git git, Repository repository, UsernamePasswordCredentialsProvider credentialsProvider, String fullBranchName, String branchName) throws Exception { @@ -401,43 +401,29 @@ public class DVCUtils { // 如果存在,检查是否已经关联到远程分支 if (!isBranchUpstreamSet(repository, branchName)) { // 如果没有关联,设置上游分支 - long upstreamStartTime = System.currentTimeMillis(); git.branchCreate() .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.SET_UPSTREAM) .setStartPoint(fullBranchName) .setName(branchName) .call(); - long upstreamEndTime = System.currentTimeMillis(); - log.info("Set upstream for branch: " + branchName + ", time: " + (upstreamEndTime - upstreamStartTime) + " ms"); } } else { // 如果不存在,创建本地分支并设置上游分支 - long createBranchStartTime = System.currentTimeMillis(); git.branchCreate() .setName(branchName) .setStartPoint(fullBranchName) .call(); - long createBranchEndTime = System.currentTimeMillis(); - log.info("Created local branch: " + branchName + ", time: " + (createBranchEndTime - createBranchStartTime) + " ms"); - // 设置上游分支 - long setUpstreamStartTime = System.currentTimeMillis(); git.branchCreate() .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.SET_UPSTREAM) .setStartPoint(fullBranchName) .setName(branchName) .call(); - long setUpstreamEndTime = System.currentTimeMillis(); - log.info("Set upstream for branch: " + branchName + ", time: " + (setUpstreamEndTime - setUpstreamStartTime) + " ms"); } - // 执行 git pull - long pullStartTime = System.currentTimeMillis(); PullCommand pullCommand = git.pull() .setCredentialsProvider(credentialsProvider); pullCommand.call(); - long pullEndTime = System.currentTimeMillis(); - log.info("Updated local branch: " + branchName + ", time: " + (pullEndTime - pullStartTime) + " ms"); } /** From 006b62557141a0963f8cbab5d65a0df381eb9049 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 15:29:32 +0800 Subject: [PATCH 059/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 72 +++- .../ruoyi/platform/service/ModelsService.java | 16 +- .../service/impl/ModelsServiceImpl.java | 401 ++++++++++++------ .../java/com/ruoyi/platform/vo/ModelsVo.java | 35 +- 4 files changed, 352 insertions(+), 172 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 2966d2bb..145f84d8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -9,6 +9,7 @@ import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -20,16 +21,17 @@ public class NewModelFromGitController { @Resource private ModelsService modelsService; - @PostMapping("/addModelAndVersion") - @ApiOperation("添加模型和版本") + @PostMapping("/addModel") + @ApiOperation("添加模型") public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { return AjaxResult.success(this.modelsService.newCreateModel(modelsVo)); } - @PostMapping("/addVersion") - @ApiOperation("添加版本") - public AjaxResult addVersion(@RequestBody ModelsVo modelsVo) throws Exception { - return AjaxResult.success(this.modelsService.newCreateVersion(modelsVo)); + @CrossOrigin(origins = "*", allowedHeaders = "*") + @PostMapping("/upload") + @ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。") + public AjaxResult uploadModel(@RequestParam("file") MultipartFile[] files, @RequestParam("uuid") String uuid) throws Exception { + return AjaxResult.success(this.modelsService.uploadModelLocal(files, uuid)); } /** @@ -40,11 +42,9 @@ public class NewModelFromGitController { */ @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有模型,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam(value = "repository_name") String repositoryName, - @RequestParam(value = "version") String version, - @RequestParam(value = "git_link_username") String gitLinkUsername, - @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { - return modelsService.downloadAllModelFilesNew(repositoryName, version, gitLinkUsername, gitLinkPassword); + public ResponseEntity downloadAllDatasetFiles(@RequestParam("identifier") String identifier, + @RequestParam(value = "version") String version) throws Exception { + return modelsService.downloadAllModelFilesNew(identifier, version); } @@ -61,21 +61,19 @@ public class NewModelFromGitController { return modelsService.downloadModels(model_version_id); } - @GetMapping("/queryDatasets") + @GetMapping("/queryModels") @ApiOperation("模型广场公开模型分页查询,根据model_type,model_tag筛选,true公开false私有") - public AjaxResult queryDatasets(@RequestParam(value = "page") int page, - @RequestParam(value = "size") int size, - @RequestParam(value = "is_public") Boolean isPublic, - @RequestParam(value = "model_type", required = false) String modelType, - @RequestParam(value = "model_tag", required = false) String modelTag, - @RequestParam(value = "git_link_username") String gitLinkUsername, - @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { + public AjaxResult queryModels(@RequestParam(value = "page") int page, + @RequestParam(value = "size") int size, + @RequestParam(value = "is_public", required = false) Boolean isPublic, + @RequestParam(value = "model_type", required = false) String modelType, + @RequestParam(value = "model_tag", required = false) String modelTag, + @RequestParam(value = "name", required = false) String name) throws Exception { PageRequest pageRequest = PageRequest.of(page, size); ModelsVo modelsVo = new ModelsVo(); modelsVo.setModelType(modelType); modelsVo.setModelTag(modelTag); - modelsVo.setGitLinkUsername(gitLinkUsername); - modelsVo.setGitLinkPassword(gitLinkPassword); + modelsVo.setName(name); if (isPublic) { return AjaxResult.success(this.modelsService.newPubilcQueryByPage(modelsVo, pageRequest)); } else { @@ -83,4 +81,36 @@ public class NewModelFromGitController { } } + @GetMapping("/getVersionList") + @ApiOperation(value = "获取模型分支列表") + public AjaxResult getVersionList(@RequestParam("identifier") String identifier, @RequestParam("owner")String owner) throws Exception { + return AjaxResult.success(this.modelsService.getVersionList(identifier, owner)); + } + + + @GetMapping("/getModelDetail") + @ApiOperation(value = "获取模型详细信息") + public AjaxResult getModelDetail(@RequestParam("model_name") String modelName, @RequestParam("identifier") String identifier,@RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDetail(modelName, identifier, owner, version)); + } + + @GetMapping("/getModelDependencyTree") + @ApiOperation(value = "获取模型依赖关系树") + public AjaxResult getModelDependencyTree(@RequestParam("repoId") Integer repoId, @RequestParam("model_name") String modelName, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDependencyTree(repoId, modelName, version)); + } + + @DeleteMapping("/delete") + @ApiOperation(value = "删除模型") + public AjaxResult deleteModel(@RequestParam("repoId")Integer repoId, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception { + this.modelsService.deleteModel(repoId,identifier, owner); + return AjaxResult.success(); + } + + @DeleteMapping("/deleteVersion") + @ApiOperation(value = "删除模型版本") + public AjaxResult deleteVersion(@RequestParam("repoId")Integer repoId, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception { + this.modelsService.deleteVersion(repoId, identifier, owner, version); + return AjaxResult.success(); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 8502fd95..a2aac1b1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.vo.ModelDependency1TreeVo; import com.ruoyi.platform.vo.ModelsVo; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -86,14 +87,23 @@ public interface ModelsService { List> exportModels(String path, String uuid) throws Exception; - CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception; - CompletableFuture newCreateVersion(ModelsVo modelsVo); + List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception; - ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception; + ResponseEntity downloadAllModelFilesNew(String identifier, String version) throws IOException, Exception; Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; + + List> getVersionList(String identifier, String owner) throws Exception; + + ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception; + + ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version) throws Exception; + + void deleteModel(Integer repoId, String identifier, String owner) throws Exception; + + void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 16472b8a..7d0bf9ae 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -4,20 +4,22 @@ import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.AssetIcon; +import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.mapper.ModelsDao; import com.ruoyi.platform.mapper.ModelsVersionDao; import com.ruoyi.platform.service.*; import com.ruoyi.platform.utils.*; -import com.ruoyi.platform.vo.GitProjectVo; -import com.ruoyi.platform.vo.ModelsVo; -import com.ruoyi.platform.vo.VersionVo; +import com.ruoyi.platform.vo.*; import com.ruoyi.system.api.model.LoginUser; import io.minio.messages.Item; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -63,6 +65,9 @@ public class ModelsServiceImpl implements ModelsService { @Resource private ModelsVersionService modelsVersionService; + @Resource + private ModelDependency1Dao modelDependency1Dao; + @Resource private MinioService minioService; @@ -376,7 +381,7 @@ public class ModelsServiceImpl implements ModelsService { @Override @Transactional public String insertModelAndVersion(ModelsVo modelsVo) throws Exception { - List modelsVersionVos = modelsVo.getModelsVersionVos(); + List modelsVersionVos = modelsVo.getModelVersionVos(); if (modelsVersionVos == null || modelsVersionVos.isEmpty()) { throw new Exception("模型版本信息错误"); @@ -511,65 +516,59 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception { + public CompletableFuture newCreateModel(ModelsVo modelsVo) { return CompletableFuture.supplyAsync(() -> { try { + gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + + Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + String token = (String) userInfo.get("token"); + + + String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName(); + ModelDependency1 modelDependency = new ModelDependency1(); + List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName()); + + if (oldModelDependencys != null && !oldModelDependencys.isEmpty()) { + if (oldModelDependencys.stream().map(ModelDependency1::getVersion).anyMatch(version -> version.equals(modelsVo.getVersion()))) { + throw new RuntimeException("模型版本已存在,请勿重复创建"); + } - // 拼接project - String repositoryName = ci4sUsername + "_model_" + DateUtils.dateTimeNow(); - GitProjectVo gitProjectVo = new GitProjectVo(); - gitProjectVo.setRepositoryName(repositoryName); - gitProjectVo.setName(modelsVo.getName()); - gitProjectVo.setDescription(modelsVo.getDescription()); - gitProjectVo.setPrivate(modelsVo.getAvailableRange() == 0); - gitProjectVo.setUserId(userId); - - // 创建项目 - Map project = gitService.createProject(gitProjectVo); - - // 创建分支 - String branchName = modelsVo.getVersion(); - gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); - // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType - gitService.createTopic((Integer) project.get("id"), "ci4s_model"); - gitService.createTopic((Integer) project.get("id"), "ModelTag_" + modelsVo.getModelTag()); - gitService.createTopic((Integer) project.get("id"), "ModelType_" + modelsVo.getModelType()); - // 得到项目地址 - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - // 得到用户操作的路径 - String url = modelsVo.getModelsVersionVos().get(0).getUrl(); - String localPath1 = localPath + modelsVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath1, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - String s3Path = "management-platform-files/" + ci4sUsername + "/models/" + repositoryName + "/" + branchName; - - // 拼接生产的元数据后写入yaml文件 - YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelsVo), sourcePath, "model"); - - DVCUtils.moveFiles(sourcePath, localPath1 + "/model"); - - // dvc init 初始化 - DVCUtils.dvcInit(localPath1); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath1, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath1, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath1, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath1, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath1, "model"); - // git commit - DVCUtils.gitAdd(localPath1, "."); - DVCUtils.gitCommit(localPath1, "commit from ci4s with " + ci4sUsername); - DVCUtils.gitPush(localPath1, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath1); + //新建版本 + commonDvc(token, userInfo, ci4sUsername, modelsVo.getRepositoryName(), modelsVo, gitLinkUsername, gitLinkPassword, "CreateModelFromPipeline"); + modelDependency.setRepoId(modelsVo.getRepoId()); + } else { + //新建模型 + // 拼接project + GitProjectVo gitProjectVo = new GitProjectVo(); + gitProjectVo.setRepositoryName(repositoryName); + gitProjectVo.setName(modelsVo.getName()); + gitProjectVo.setDescription(modelsVo.getDescription()); + gitProjectVo.setPrivate(modelsVo.getAvailableRange() == 0); + gitProjectVo.setUserId(userId); + + // 创建项目 + Map project = gitService.createProject(gitProjectVo); + modelDependency.setRepoId((Integer) project.get("id")); + // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType + gitService.createTopic((Integer) project.get("id"), "ci4s_model"); + gitService.createTopic((Integer) project.get("id"), "modeltag_" + modelsVo.getModelTag()); + gitService.createTopic((Integer) project.get("id"), "modeltype_" + modelsVo.getModelType()); + commonDvc(token, userInfo, ci4sUsername, repositoryName, modelsVo, gitLinkUsername, gitLinkPassword, "createModel"); + } + + //保存模型依赖 + modelDependency.setIdentifier(repositoryName); + modelDependency.setModelName(modelsVo.getName()); + modelDependency.setVersion(modelsVo.getVersion()); + modelDependency.setParentModel(modelsVo.getParentModel()); + modelDependency.setOwner(ci4sUsername); + modelDependency1Dao.insert(modelDependency); return "新增模型成功"; } catch (Exception e) { logger.error(e.getMessage()); @@ -578,67 +577,45 @@ public class ModelsServiceImpl implements ModelsService { }); } + @Override - public CompletableFuture newCreateVersion(ModelsVo modelsVo) { - return CompletableFuture.supplyAsync(() -> { - try { - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - // 创建分支 - String branchName = modelsVo.getVersion(); - String repositoryName = modelsVo.getRepositoryName(); - gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); - // 得到项目地址 - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - // 得到用户操作的路径 - String url = modelsVo.getModelVersionVos().get(0).getUrl(); - String localPath1 = localPath + ci4sUsername + "/model/" + modelsVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - // 命令行操作 git clone 项目地址 - DVCUtils.gitClone(localPath1, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + repositoryName + "/" + branchName; - //拼接生产的元数据后写入yaml文件 - YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelsVo), sourcePath, "dataset"); - - DVCUtils.moveFiles(sourcePath, localPath1 + "/model"); - // dvc init 初始化 - DVCUtils.dvcInit(localPath1); - // 配置远程S3地址 - DVCUtils.dvcRemoteAdd(localPath1, s3Path); - DVCUtils.dvcConfigS3Credentials(localPath1, endpoint); - DVCUtils.dvcConfigS3Credentials2(localPath1, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(localPath1, secretAccessKey); - // dvc 跟踪 - DVCUtils.dvcAdd(localPath1, "model"); - // git commit - DVCUtils.gitAdd(localPath1, "."); - DVCUtils.gitCommit(localPath1, "commit from ci4s with " + ci4sUsername); - DVCUtils.gitPush(localPath1, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - // dvc push 到远程S3 - DVCUtils.dvcPush(localPath1); - return "新增模型成功"; - } catch (Exception e) { - throw new RuntimeException(e); - } - }); + public List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception { + List> results = new ArrayList<>(); + + for (MultipartFile file : files) { + // 构建objectName + String username = SecurityUtils.getLoginUser().getUsername(); + String fileName = file.getOriginalFilename(); + String path = "/temp/" + username + "/models/" + uuid + "/model/"; + long sizeInBytes = file.getSize(); + String formattedSize = FileUtil.formatFileSize(sizeInBytes); + File targetFile = new File(path, file.getOriginalFilename()); + // 确保目录存在 + targetFile.getParentFile().mkdirs(); + // 保存文件到目标路径 + FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile); + // 返回上传文件的路径 + String absolutePath = targetFile.getAbsolutePath(); + Map result = new HashMap<>(); + result.put("fileName", fileName); + result.put("url", absolutePath); // objectName根据实际情况定义 + result.put("fileSize", formattedSize); + results.add(result); + } + return results; } @Override - public ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception { + public ResponseEntity downloadAllModelFilesNew(String identifier, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - Integer userId = (Integer) userInfo.get("user_id"); - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - String localPath1 = localPath + ci4sUsername + "/model/" + repositoryName; + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + Map userInfo = getUserInfo(ci4sUsername); + + String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + identifier + ".git"; + String localPath1 = localPath + ci4sUsername + "/model/" + identifier; File folder = new File(localPath1); if (folder.exists() && folder.isDirectory()) { //切换分支 @@ -685,17 +662,18 @@ public class ModelsServiceImpl implements ModelsService { public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); + Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); + //拼接查询url String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); + String search = modelsVo.getName(); String topic_name = "ci4s_model"; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTypeName; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; - String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name; + + String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name + "&search=" + search; String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("count"); @@ -707,19 +685,19 @@ public class ModelsServiceImpl implements ModelsService { public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); + Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + String token = (String) userInfo.get("token"); + //拼接查询url String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); + String search = modelsVo.getName(); String topic_name = "ci4s_model"; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTagName; topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; - String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name; + String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name + "&search=" + search; String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("total_count"); @@ -727,6 +705,147 @@ public class ModelsServiceImpl implements ModelsService { return new PageImpl<>(convert(projects), pageRequest, total); } + @Override + public List> getVersionList(String identifier, String owner) throws Exception { + List> brancheList = gitService.getBrancheList(owner, identifier); + return brancheList.stream() + .filter(branch -> "master".equals(branch.get("name"))) + .collect(Collectors.toList()); + } + + @Override + public ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + + if (StringUtils.isEmpty(version)) { + List> versionList = this.getVersionList(owner, identifier); + if (versionList.size() == 0) { + throw new Exception("数据集文件不存在"); + } + version = (String) versionList.get(0).get("name"); + } + + // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); + + Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + modelName + "/" + version + "/metadata/metadata.yaml"); + assert stringObjectMap != null; + + ModelMetaVo modelMetaVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + ModelsVo modelsVo = new ModelsVo(); + BeanUtils.copyProperties(modelMetaVo, modelsVo); + + List versionVos = new ArrayList<>(); + if (!fileDetailsAfterGitPull.isEmpty()) { + for (Map fileDetail : fileDetailsAfterGitPull) { + VersionVo versionVo = new VersionVo(); + versionVo.setUrl((String) fileDetail.get("filePath")); + versionVo.setFileName((String) fileDetail.get("fileName")); + long size = (long) fileDetail.get("size"); + versionVo.setFileSize(FileUtil.formatFileSize(size)); + versionVos.add(versionVo); + } + } + modelsVo.setModelVersionVos(versionVos); + + return modelsVo; + } + + @Override + public ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version) throws Exception { + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByModelNameAndVersion(repoId, modelName, version); + ModelDependency1TreeVo modelDependency1TreeVo = new ModelDependency1TreeVo(); + BeanUtils.copyProperties(modelDependency1, modelDependency1TreeVo); + + //递归查询父模型 + List parentModelList = new ArrayList<>(); + getParentModel(parentModelList, modelDependency1); + modelDependency1TreeVo.setPatrentModelList(parentModelList); + + //递归查询子模型 + getChildModel(modelDependency1TreeVo); + + return modelDependency1TreeVo; + } + + @Override + public void deleteModel(Integer repoId, String identifier, String owner) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); + + + gitService.deleteProject(owner, identifier); + //删除模型依赖 + modelDependency1Dao.deleteModel(repoId, identifier, owner, null); + modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, null); + } + + @Override + public void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + + gitService.deleteBranch(owner, identifier, version); + //删除模型依赖 + modelDependency1Dao.deleteModel(repoId, identifier, owner, version); + modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); + } + + void commonDvc(String token, Map userInfo, String username, String repositoryName, ModelsVo modelsVo, String gitLinkUsername, String gitLinkPassword, String type) throws Exception { + String branchName = modelsVo.getVersion(); + + // 创建分支 + gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); + + String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + String url = modelsVo.getModelVersionVos().get(0).getUrl(); + String sourcePath = url.substring(0, url.lastIndexOf("/")); + String rootPath = localPath + username + "/model/" + modelsVo.getName() + "/" + branchName; + String modelPath = rootPath + "/model"; + String metaPath = rootPath + "/metadata"; + + + if (type.equals("CreateModelFromPipeline") && FileUtil.checkDirectoryExists(rootPath)) { + DVCUtils.gitFetch(rootPath, gitLinkUsername, gitLinkPassword); + DVCUtils.gitCheckoutBranch(rootPath, branchName); + } else { + DVCUtils.gitClone(rootPath, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + } + + DVCUtils.moveFiles(sourcePath, modelPath); + + //拼接生产的元数据后写入yaml文件 + ModelMetaVo modelMetaVo = new ModelMetaVo(); + BeanUtils.copyProperties(modelsVo, modelMetaVo); + YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelMetaVo), metaPath, "metadata"); + + // dvc init 初始化 + DVCUtils.dvcInit(rootPath); + + // 配置远程S3地址 + String s3Path = "management-platform-files/" + username + "/model/" + repositoryName + "/" + branchName; + DVCUtils.dvcRemoteAdd(rootPath, s3Path); + DVCUtils.dvcConfigS3Credentials(rootPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); + + // dvc 跟踪 + DVCUtils.dvcAdd(rootPath, "model"); + + // git commit + DVCUtils.gitAdd(rootPath, "."); + DVCUtils.gitCommit(rootPath, "commit from ci4s with " + username); + DVCUtils.gitPush(rootPath, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + + // dvc push 到远程S3 + DVCUtils.dvcPush(rootPath); + } + public List convert(List> lst) { if (lst != null && lst.size() > 0) { List newModelVos = ConvertUtil.convertListMapToObjectList(lst, ModelsVo.class); @@ -753,10 +872,48 @@ public class ModelsServiceImpl implements ModelsService { } } } - return newModelVos; } return new ArrayList<>(); } + void getParentModel(List modelList, ModelDependency1 modelDependency1) { + if (modelDependency1.getParentModel() != null) { + String[] split = modelDependency1.getParentModel().split(":"); + Integer parentRepoId = Integer.valueOf(split[0]); + String parentModelName = split[1]; + String parentModelVersion = split[2]; + ModelDependency1 parentModel = modelDependency1Dao.queryByModelNameAndVersion(parentRepoId, parentModelName, parentModelVersion); + modelList.add(parentModel); + if (parentModel != null && parentModel.getParentModel() != null) { + getParentModel(modelList, parentModel); + } + } + } + + void getChildModel(ModelDependency1TreeVo modelDependency1TreeVo) { + List childModelList = new ArrayList<>(); + String model = modelDependency1TreeVo.getRepoId() + ":" + modelDependency1TreeVo.getModelName() + ":" + modelDependency1TreeVo.getVersion(); + + List children = modelDependency1Dao.queryByParentModel(model); + if (children != null && !children.isEmpty()) { + for (ModelDependency1 modelDependency1 : children) { + ModelDependency1TreeVo modelDependency1TreeVo1 = new ModelDependency1TreeVo(); + BeanUtils.copyProperties(modelDependency1, modelDependency1TreeVo1); + getChildModel(modelDependency1TreeVo1); + childModelList.add(modelDependency1TreeVo1); + } + } + modelDependency1TreeVo.setChildModelList(childModelList); + } + + Map getUserInfo(String ci4sUsername) throws IOException { + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + Map userInfo = JsonUtils.jsonToMap(userReq); + + String token = gitService.checkoutToken(); + userInfo.put("token", token); + return userInfo; + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java index 1189da76..a57184ca 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java @@ -10,15 +10,9 @@ import java.util.List; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data -public class ModelsVo implements Serializable { +public class ModelsVo extends ModelMetaVo implements Serializable { - - @ApiModelProperty(name = "name") - private String name; - - // private String version; - @ApiModelProperty(name = "description") - private String description; + private Integer id; /** * 模型可见范围 @@ -26,22 +20,6 @@ public class ModelsVo implements Serializable { @ApiModelProperty(name = "available_range") private int availableRange; - // private String url; - @ApiModelProperty(name = "model_type") - private String modelType; - - - @ApiModelProperty(name = "model_tag") - private String modelTag; - /** - * 版本 - */ - @ApiModelProperty(name = "version") - private String version; - - @ApiModelProperty(name = "model_version_vos") - private List modelVersionVos; - /** * 状态 */ @@ -53,14 +31,19 @@ public class ModelsVo implements Serializable { private String gitLinkPassword; @ApiModelProperty(name = "models_version_vos") - private List modelsVersionVos; + private List modelVersionVos; /** - * 数据集仓库名称 + * 模型仓库名称 */ @ApiModelProperty(name = "repository_name") private String repositoryName; @ApiModelProperty(name = "repo_id") private Integer repoId; + + /** + * 父模型 + */ + private String parentModel; } From e58d73ae12acff0888fd8186477e04c5fd6c04bd Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 15:53:03 +0800 Subject: [PATCH 060/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8C=82=E8=BD=BD?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/MinioServiceImpl.java | 4 +++- .../java/com/ruoyi/platform/utils/K8sClientUtil.java | 9 ++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java index 6a1656b2..380f96c6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java @@ -63,7 +63,9 @@ public class MinioServiceImpl implements MinioService { try (InputStream inputStream = file.getInputStream()){ minioUtil.uploadObject(bucketName, objectName, inputStream); result.put("fileName", file.getOriginalFilename()); - result.put("url", objectName); // objectName根据实际情况定义 + int lastIndex = objectName.lastIndexOf('/'); + String url = objectName.substring(0, lastIndex); + result.put("url", url); // objectName根据实际情况定义 result.put("fileSize", formattedSize); } catch (Exception e) { throw new Exception("上传文件失败: " + e.getMessage(), e); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 03648e6e..cb382fd8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -366,7 +366,7 @@ public class K8sClientUtil { .endContainer() .addNewVolume() .withName("workspace") - .withHostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/tensorboard").type("DirectoryOrCreate")) + .withHostPath(new V1HostPathVolumeSource().path(pvcName).type("DirectoryOrCreate")) // .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) .endVolume() .withTerminationGracePeriodSeconds(14400L) @@ -452,13 +452,12 @@ public class K8sClientUtil { // 配置卷和卷挂载 List volumeMounts = new ArrayList<>(); volumeMounts.add(new V1VolumeMount().name("workspace").mountPath("/opt/notebooks")); - volumeMounts.add(new V1VolumeMount().name("dataset").mountPath("/opt/dataset").readOnly(true)); - volumeMounts.add(new V1VolumeMount().name("model").mountPath("/opt/model").readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/dataset").subPath(datasetPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/model").subPath(modelPath).readOnly(true)); List volumes = new ArrayList<>(); volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/notebooks").type("DirectoryOrCreate"))); - volumes.add(new V1Volume().name("dataset").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/dataset").type("DirectoryOrCreate"))); - volumes.add(new V1Volume().name("model").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/model").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("data").hostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate"))); // 配置卷和卷挂载 // List volumeMounts = new ArrayList<>(); From 6074c20f12e12edbf63e0fcde899b9af1d14666a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 16:36:28 +0800 Subject: [PATCH 061/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 27 +++++++++---------- .../java/com/ruoyi/platform/vo/ModelsVo.java | 4 --- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 7d0bf9ae..d78b1f1e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -519,7 +519,6 @@ public class ModelsServiceImpl implements ModelsService { public CompletableFuture newCreateModel(ModelsVo modelsVo) { return CompletableFuture.supplyAsync(() -> { try { - gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); @@ -527,20 +526,19 @@ public class ModelsServiceImpl implements ModelsService { Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); - String token = (String) userInfo.get("token"); - String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName(); ModelDependency1 modelDependency = new ModelDependency1(); List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName()); if (oldModelDependencys != null && !oldModelDependencys.isEmpty()) { - if (oldModelDependencys.stream().map(ModelDependency1::getVersion).anyMatch(version -> version.equals(modelsVo.getVersion()))) { + + if (oldModelDependencys.stream().anyMatch(oldModelDependency -> oldModelDependency.getRepoId().equals(modelsVo.getRepoId()) && oldModelDependency.getVersion().equals(modelsVo.getVersion()))) { throw new RuntimeException("模型版本已存在,请勿重复创建"); } //新建版本 - commonDvc(token, userInfo, ci4sUsername, modelsVo.getRepositoryName(), modelsVo, gitLinkUsername, gitLinkPassword, "CreateModelFromPipeline"); + commonDvc(userInfo, ci4sUsername, modelsVo.getRepoId(), modelsVo.getRepositoryName(), modelsVo, gitLinkUsername, gitLinkPassword, "CreateModelFromPipeline"); modelDependency.setRepoId(modelsVo.getRepoId()); } else { //新建模型 @@ -554,12 +552,13 @@ public class ModelsServiceImpl implements ModelsService { // 创建项目 Map project = gitService.createProject(gitProjectVo); - modelDependency.setRepoId((Integer) project.get("id")); + Integer gitlinIid = (Integer) project.get("id"); + modelDependency.setRepoId(gitlinIid); // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType - gitService.createTopic((Integer) project.get("id"), "ci4s_model"); - gitService.createTopic((Integer) project.get("id"), "modeltag_" + modelsVo.getModelTag()); - gitService.createTopic((Integer) project.get("id"), "modeltype_" + modelsVo.getModelType()); - commonDvc(token, userInfo, ci4sUsername, repositoryName, modelsVo, gitLinkUsername, gitLinkPassword, "createModel"); + gitService.createTopic(gitlinIid, "ci4s_model"); + gitService.createTopic(gitlinIid, "modeltag_" + modelsVo.getModelTag()); + gitService.createTopic(gitlinIid, "modeltype_" + modelsVo.getModelType()); + commonDvc(userInfo, ci4sUsername, gitlinIid, repositoryName, modelsVo, gitLinkUsername, gitLinkPassword, "createModel"); } //保存模型依赖 @@ -796,7 +795,7 @@ public class ModelsServiceImpl implements ModelsService { modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); } - void commonDvc(String token, Map userInfo, String username, String repositoryName, ModelsVo modelsVo, String gitLinkUsername, String gitLinkPassword, String type) throws Exception { + void commonDvc(Map userInfo, String username, Integer gitlinIid, String repositoryName, ModelsVo modelsVo, String gitLinkUsername, String gitLinkPassword, String type) throws Exception { String branchName = modelsVo.getVersion(); // 创建分支 @@ -814,7 +813,7 @@ public class ModelsServiceImpl implements ModelsService { DVCUtils.gitFetch(rootPath, gitLinkUsername, gitLinkPassword); DVCUtils.gitCheckoutBranch(rootPath, branchName); } else { - DVCUtils.gitClone(rootPath, projectUrl, branchName, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + DVCUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); } DVCUtils.moveFiles(sourcePath, modelPath); @@ -828,7 +827,7 @@ public class ModelsServiceImpl implements ModelsService { DVCUtils.dvcInit(rootPath); // 配置远程S3地址 - String s3Path = "management-platform-files/" + username + "/model/" + repositoryName + "/" + branchName; + String s3Path = "management-platform-files/" + username + "/model/" + gitlinIid + repositoryName + "/" + branchName; DVCUtils.dvcRemoteAdd(rootPath, s3Path); DVCUtils.dvcConfigS3Credentials(rootPath, endpoint); DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); @@ -840,7 +839,7 @@ public class ModelsServiceImpl implements ModelsService { // git commit DVCUtils.gitAdd(rootPath, "."); DVCUtils.gitCommit(rootPath, "commit from ci4s with " + username); - DVCUtils.gitPush(rootPath, modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); + DVCUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword); // dvc push 到远程S3 DVCUtils.dvcPush(rootPath); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java index a57184ca..8a21b24e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java @@ -26,10 +26,6 @@ public class ModelsVo extends ModelMetaVo implements Serializable { @ApiModelProperty(name = "status") private Integer status; - private String gitLinkUsername; - - private String gitLinkPassword; - @ApiModelProperty(name = "models_version_vos") private List modelVersionVos; From 76a85ff996514c4088ebef6148b6dce821af2676 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 10 Sep 2024 16:37:34 +0800 Subject: [PATCH 062/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=8C=82=E8=BD=BD=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/JupyterServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index 31dfb095..2904912c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -90,10 +90,10 @@ public class JupyterServiceImpl implements JupyterService { // 提取数据集,模型信息,得到数据集模型的path Map dataset = JacksonUtil.parseJSONStr2Map(devEnvironment.getDataset()); - String datasetPath = "argo-workflow" + "/" + dataset.get("path"); + String datasetPath = (String) dataset.get("path"); Map model = JacksonUtil.parseJSONStr2Map(devEnvironment.getModel()); - String modelPath = "argo-workflow" + "/" + model.get("path"); + String modelPath = (String) model.get("path"); LoginUser loginUser = SecurityUtils.getLoginUser(); //构造pod名称 From 365ebef461ea97af312de7bb022f239afb321fc7 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Tue, 10 Sep 2024 16:51:03 +0800 Subject: [PATCH 063/381] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/NewDatasetFromGitController.java | 4 +- .../platform/service/NewDatasetService.java | 2 +- .../service/impl/NewDatasetServiceImpl.java | 63 ++++++++++++------- .../com/ruoyi/platform/vo/NewDatasetVo.java | 2 + 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 42cb47da..b182f405 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -119,8 +119,8 @@ public class NewDatasetFromGitController { */ @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有数据集,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam("repository_name") String repositoryName, @RequestParam("version") String version) throws Exception { - return newDatasetService.downloadAllDatasetFilesNew(repositoryName, version); + public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { + return newDatasetService.downloadAllDatasetFilesNew(name,id, version); } /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java index 0234f133..8fa97d00 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -19,7 +19,7 @@ public interface NewDatasetService { String newCreateVersion(NewDatasetVo datasetVo) throws Exception; List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception; ResponseEntity downloadDatasetlocal(String filePath) throws Exception; - ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws IOException, Exception; + ResponseEntity downloadAllDatasetFilesNew(String repositoryName,Integer id, String version) throws IOException, Exception; Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index eb0cca04..40c31894 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -80,6 +80,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 创建项目 Map project = gitService.createProject(gitProjectVo); Integer gitlinIid = (Integer) project.get("id"); + if (gitlinIid == null){ + throw new Exception("创建数据集失败:"+project.get("message")); + } // 创建分支 String branchName = datasetVo.getVersion(); gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); @@ -92,7 +95,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 得到用户操作的路径 String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal + gitlinIid + "/" + datasetVo.getName(); + String localPath = localPathlocal+ ci4sUsername+"/datasets/" + gitlinIid + "/" + datasetVo.getName(); String sourcePath = url.substring(0, url.lastIndexOf("/")); // 命令行操作 git clone 项目地址 DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); @@ -112,6 +115,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setIdentifier(repositoryName); datasetVo.setId(gitlinIid); datasetVo.setOwner((String) userInfo.get("login")); + datasetVo.setRelativePaths(ci4sUsername+"/" + gitlinIid + "/" + datasetVo.getName()); + if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ datasetVo.setDatasetSource("用户上传"); } @@ -147,10 +152,14 @@ public class NewDatasetServiceImpl implements NewDatasetService { String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); String repositoryName = datasetVo.getIdentifier(); String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal + datasetVo.getId() + "/" + datasetVo.getName(); + String localPath = localPathlocal + ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + datasetVo.getName(); String sourcePath = url.substring(0, url.lastIndexOf("/")); String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + //部分信息在前面的版本里面,从那边取过来 + Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); + NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); + // 创建本地分支 DVCUtils.createLocalBranchBasedOnMaster(localPath, branchName); @@ -164,7 +173,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); - datasetVo.setVersionDesc(datasetVo.getDescription()); datasetVo.setUsage("
" +
                 "# 克隆数据集配置文件与存储参数到本地\n" +
                 "git clone -b " + branchName + " "+ projectUrl + "\n" +
@@ -177,6 +185,10 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         if (StringUtils.isEmpty(datasetVo.getDatasetSource())){
             datasetVo.setDatasetSource("用户上传");
         }
+        datasetVo.setDescription(newDatasetVo.getDescription());
+        datasetVo.setDataTag(newDatasetVo.getDataTag());
+        datasetVo.setDataType(newDatasetVo.getDataType());
+        datasetVo.setRelativePaths(ci4sUsername + "/" + datasetVo.getId() + "/" + datasetVo.getName());
         YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset");
         //dvc数据跟踪
         // 配置远程S3地址
@@ -208,6 +220,11 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName;
         topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName;
         String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name;
+        String name = dataset.getName();
+
+        if (StringUtils.isNotEmpty(name)){
+            url =url + "&search=" + name;
+        }
         String req = HttpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         Integer total = (Integer) stringObjectMap.get("count");
@@ -230,8 +247,12 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         String topic_name = "ci4s_dataset";
         topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName;
         topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName;
-
         String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name;
+        String name = dataset.getName();
+        if (StringUtils.isNotEmpty(name)){
+            url =url + "&search=" + name;
+        }
+
         String req = HttpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         Integer total = (Integer) stringObjectMap.get("total_count");
@@ -255,9 +276,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             }
             version = (String) versionList.get(0).get("name");
         }
-        List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword);
         // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据
-        Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + id + "\\" + repositoryName + "\\" + "dataset.yaml");
+        Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + repositoryName + "/" + "dataset.yaml");
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);
         List versionVos = new ArrayList();
         if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){
@@ -354,7 +375,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     }
 
     @Override
-    public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception {
+    public ResponseEntity downloadAllDatasetFilesNew(String repositoryName,Integer id, String version) throws Exception {
         // 命令行操作 git clone 项目地址
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
@@ -363,20 +384,18 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         Jedis jedis = new Jedis(redisHost);
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         Map userInfo = JsonUtils.jsonToMap(userReq);
-        Integer userId = (Integer) userInfo.get("user_id");
-        String projectUrl = gitendpoint + "/" +(String) userInfo.get("login") + "/" + repositoryName + ".git";
-        String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/" +repositoryName;
-        File folder = new File(localPath);
-        if(folder.exists() && folder.isDirectory()){
-            //切换分支
-            DVCUtils.gitCheckoutBranch(localPath, version);
-            //pull
-            DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword);
-            //dvc pull
-            DVCUtils.dvcPull(localPath);
-        }else {
-            DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword);
-        }
+        String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+id+"/"+repositoryName;
+        //不需要,没意义,我查看详情已经是最新的了
+//        if(folder.exists() && folder.isDirectory()){
+//            //切换分支
+//            DVCUtils.gitCheckoutBranch(localPath, version);
+//            //pull
+//            DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword);
+//            //dvc pull
+//            DVCUtils.dvcPull(localPath);
+//        }else {
+//            DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword);
+//        }
 
         // 打包 data 文件夹
         String dataFolderPath = localPath + "/data";
@@ -403,7 +422,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile));
 
         return ResponseEntity.ok()
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=data.zip")
+                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="+repositoryName+"_"+version+"_data.zip")
                 .contentType(MediaType.APPLICATION_OCTET_STREAM)
                 .contentLength(zipFile.length())
                 .body(resource);
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java
index 6f182f0a..0382a8bc 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java
@@ -60,5 +60,7 @@ public class NewDatasetVo implements Serializable {
     private String owner;
     @ApiModelProperty(name = "dataset_source",value = "数据集来源")
     private String datasetSource;
+    @ApiModelProperty(name = "relative_paths",value = "文件相对路径")
+    private String relativePaths;
 
 }

From ad0d0c9a1b641bb2a1402eeb0ea5ff162a1e8872 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Tue, 10 Sep 2024 17:01:34 +0800
Subject: [PATCH 064/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9tensorboard=E6=8C=82?=
 =?UTF-8?q?=E8=BD=BD=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/com/ruoyi/platform/utils/K8sClientUtil.java     | 6 +++---
 .../main/java/com/ruoyi/platform/vo/FrameLogPathVo.java  | 9 ---------
 2 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java
index cb382fd8..fac560e8 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java
@@ -315,9 +315,9 @@ public class K8sClientUtil {
      * @return 创建成功的pod,的nodePort端口
      */
 
-    public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String pvcName, String image) {
+    public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String image) {
 
-        Map selector = new LinkedHashMap();
+        Map selector = new LinkedHashMap<>();
         selector.put("k8s-jupyter", podName);
 
         CoreV1Api api = new CoreV1Api(apiClient);
@@ -366,7 +366,7 @@ public class K8sClientUtil {
                 .endContainer()
                 .addNewVolume()
                 .withName("workspace")
-                .withHostPath(new V1HostPathVolumeSource().path(pvcName).type("DirectoryOrCreate"))
+                .withHostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate"))
 //                .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName))
                 .endVolume()
                 .withTerminationGracePeriodSeconds(14400L)
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java
index 99a03017..31de2f73 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java
@@ -9,7 +9,6 @@ import java.io.Serializable;
 public class FrameLogPathVo implements Serializable {
     String path;
     String namespace;
-    String pvcName;
 
     public String getPath() {
         return path;
@@ -26,12 +25,4 @@ public class FrameLogPathVo implements Serializable {
     public void setNamespace(String namespace) {
         this.namespace = namespace;
     }
-
-    public String getPvcName() {
-        return pvcName;
-    }
-
-    public void setPvcName(String pvcName) {
-        this.pvcName = pvcName;
-    }
 }

From ef6bfa2d34bf7d8213a939ba59167f587345db86 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Tue, 10 Sep 2024 17:02:34 +0800
Subject: [PATCH 065/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9tensorboard=E6=8C=82?=
 =?UTF-8?q?=E8=BD=BD=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java
index e7dce433..c998af87 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java
@@ -68,7 +68,7 @@ public class TensorBoardServiceImpl implements TensorBoardService {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod";
 
-        Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image);
+        Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image);
         redisService.setCacheObject(podName, masterIp + ":" + podPort);
         return masterIp + ":" + podPort;
     }

From 1e1da4cc28b310c39fb66a3609a3e78bcbb10f5a Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 11 Sep 2024 09:09:48 +0800
Subject: [PATCH 066/381] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=A0=E5=88=A4?=
 =?UTF-8?q?=E6=96=AD=E4=B8=8D=E8=83=BD=E5=88=A0=E9=99=A4=E6=9C=80=E5=90=8E?=
 =?UTF-8?q?=E7=9A=84=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/dataset/NewDatasetFromGitController.java   | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
index b182f405..521cac30 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
@@ -12,6 +12,9 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
 @RestController
 @RequestMapping("newdataset")
 //@Api(value = "新数据集管理")
@@ -92,6 +95,11 @@ public class NewDatasetFromGitController {
     @DeleteMapping("/deleteDatasetVersion")
     @ApiOperation(value = "删除数据集版本")
     public AjaxResult deleteDatasetVersion(@RequestParam("identifier") String repo,@RequestParam("owner")String owner,@RequestParam("version")String version) throws Exception {
+        // 查询版本,如果是最后一个版本,则不能删除
+        List> versionList = this.newDatasetService.getVersionList(repo, owner);
+        if(versionList.size() == 1){
+            return AjaxResult.error("当前数据集只有一个版本,不能删除该版本");
+        }
         this.newDatasetService.deleteDatasetVersionNew(repo,owner,version);
         return AjaxResult.success();
     }

From 2dd0102f340e0e1541dac294277457d5362bd3ed Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Thu, 12 Sep 2024 09:07:59 +0800
Subject: [PATCH 067/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../platform/service/NewDatasetService.java   |  4 +--
 .../service/impl/ExperimentServiceImpl.java   |  2 ++
 .../service/impl/NewDatasetServiceImpl.java   | 28 +++++++++++--------
 3 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
index 8fa97d00..71e96ccd 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
@@ -19,11 +19,11 @@ public interface NewDatasetService {
     String newCreateVersion(NewDatasetVo datasetVo) throws Exception;
     List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception;
     ResponseEntity downloadDatasetlocal(String filePath) throws Exception;
-    ResponseEntity downloadAllDatasetFilesNew(String repositoryName,Integer id, String version) throws IOException, Exception;
+    ResponseEntity downloadAllDatasetFilesNew(String name,Integer id, String version) throws IOException, Exception;
     Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception;
     Page  newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception;
 
-    NewDatasetVo getNewDatasetDesc(Integer repoId,String RepositoryName,String repo, String owner, String version)throws Exception;
+    NewDatasetVo getNewDatasetDesc(Integer repoId,String name,String repo, String owner, String version)throws Exception;
 
     List> getVersionList(String repo, String owner)  throws Exception;
 
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
index 388155d6..293b7826 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
@@ -288,6 +288,8 @@ public class ExperimentServiceImpl implements ExperimentService {
             if (dependendcy != null && trainInfo != null){
                 insertModelDependency(dependendcy,trainInfo,insert.getId(),experiment.getName());
             }
+            //暂存数据集元数据{}
+
         }catch (Exception e){
             throw new RuntimeException(e);
         }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 40c31894..235f1b99 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -61,12 +61,14 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public String newCreateDataset(NewDatasetVo datasetVo) throws Exception {
+
         Jedis jedis = new Jedis(redisHost);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
         String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
+        // 得到用户操作的路径
         Map userInfo = JsonUtils.jsonToMap(userReq);
         Integer userId = (Integer) userInfo.get("user_id");
         // 拼接project
@@ -80,6 +82,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         // 创建项目
         Map project = gitService.createProject(gitProjectVo);
         Integer gitlinIid = (Integer) project.get("id");
+        //相对路径!!!
+        String relativePath = ci4sUsername + "/" + "datasets" + "/" + gitlinIid + "/" + datasetVo.getName() + "/";
         if (gitlinIid == null){
             throw new Exception("创建数据集失败:"+project.get("message"));
         }
@@ -99,7 +103,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         String sourcePath = url.substring(0, url.lastIndexOf("/"));
         // 命令行操作 git clone 项目地址
         DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
-        String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + gitlinIid + "/" + repositoryName + "/" + branchName;
+        String s3Path = "management-platform-files" + "/" + relativePath + branchName;
 
         DVCUtils.moveFiles(sourcePath, localPath);
         // 拼接生产的元数据后写入yaml文件
@@ -115,7 +119,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         datasetVo.setIdentifier(repositoryName);
         datasetVo.setId(gitlinIid);
         datasetVo.setOwner((String) userInfo.get("login"));
-        datasetVo.setRelativePaths(ci4sUsername+"/" + gitlinIid + "/" + datasetVo.getName());
+        datasetVo.setRelativePaths(relativePath);
 
         if (StringUtils.isEmpty(datasetVo.getDatasetSource())){
             datasetVo.setDatasetSource("用户上传");
@@ -152,7 +156,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion();
         String repositoryName = datasetVo.getIdentifier();
         String url = datasetVo.getDatasetVersionVos().get(0).getUrl();
-        String localPath = localPathlocal +  ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + datasetVo.getName();
+        //相对路径!!!
+        String relativePath = ci4sUsername + "/" + "datasets" + "/" + datasetVo.getId()  + "/" + datasetVo.getName() + "/";
+        String localPath = localPathlocal +  relativePath;
         String sourcePath = url.substring(0, url.lastIndexOf("/"));
         String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git";
 
@@ -167,7 +173,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         DVCUtils.dvcCheckout(localPath);
 
         // 准备数据
-        String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + datasetVo.getId() + "/" + repositoryName + "/" + branchName;
+        String s3Path = "management-platform-files" + "/" + relativePath + branchName;
 
         DVCUtils.moveFiles(sourcePath, localPath);
         // 拼接生产的元数据后写入yaml文件
@@ -188,7 +194,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         datasetVo.setDescription(newDatasetVo.getDescription());
         datasetVo.setDataTag(newDatasetVo.getDataTag());
         datasetVo.setDataType(newDatasetVo.getDataType());
-        datasetVo.setRelativePaths(ci4sUsername + "/" + datasetVo.getId() + "/" + datasetVo.getName());
+        datasetVo.setRelativePaths(relativePath);
         YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset");
         //dvc数据跟踪
         // 配置远程S3地址
@@ -264,7 +270,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     }
 
     @Override
-    public NewDatasetVo getNewDatasetDesc(Integer id, String repositoryName, String repo, String owner, String version) throws Exception {
+    public NewDatasetVo getNewDatasetDesc(Integer id, String name, String repo, String owner, String version) throws Exception {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
         String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
@@ -276,9 +282,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             }
             version = (String) versionList.get(0).get("name");
         }
-        List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, name, version, "data",gitLinkUsername, gitLinkPassword);
         // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据
-        Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + repositoryName + "/" + "dataset.yaml");
+        Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + name + "/" + "dataset.yaml");
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);
         List versionVos = new ArrayList();
         if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){
@@ -375,7 +381,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     }
 
     @Override
-    public ResponseEntity downloadAllDatasetFilesNew(String repositoryName,Integer id, String version) throws Exception {
+    public ResponseEntity downloadAllDatasetFilesNew(String name,Integer id, String version) throws Exception {
         // 命令行操作 git clone 项目地址
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
@@ -384,7 +390,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         Jedis jedis = new Jedis(redisHost);
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         Map userInfo = JsonUtils.jsonToMap(userReq);
-        String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+id+"/"+repositoryName;
+        String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+id+"/"+name;
         //不需要,没意义,我查看详情已经是最新的了
 //        if(folder.exists() && folder.isDirectory()){
 //            //切换分支
@@ -422,7 +428,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile));
 
         return ResponseEntity.ok()
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="+repositoryName+"_"+version+"_data.zip")
+                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="+name+"_"+version+"_data.zip")
                 .contentType(MediaType.APPLICATION_OCTET_STREAM)
                 .contentLength(zipFile.length())
                 .body(resource);

From 0d32f9828b5bf2bbf796f8b2d3170780f7507d1f Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Thu, 12 Sep 2024 10:59:52 +0800
Subject: [PATCH 068/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8Bdvc?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dataset/NewDatasetFromGitController.java  |   2 +-
 .../model/NewModelFromGitController.java      |  55 ++-
 .../platform/domain/ModelDependency1.java     |   2 +
 .../platform/mapper/ModelDependency1Dao.java  |   6 +-
 .../ruoyi/platform/service/ModelsService.java |   9 +-
 .../service/impl/ModelsServiceImpl.java       | 423 +++++++++++-------
 .../service/impl/NewDatasetServiceImpl.java   |  35 +-
 .../service/impl/TensorBoardServiceImpl.java  |   3 -
 .../com/ruoyi/platform/utils/ConvertUtil.java |   9 +-
 .../com/ruoyi/platform/utils/DVCUtils.java    |   2 +-
 .../com/ruoyi/platform/utils/YamlUtils.java   |   9 +
 .../com/ruoyi/platform/vo/ModelMetaVo.java    |  23 +-
 .../java/com/ruoyi/platform/vo/ModelsVo.java  |  29 +-
 .../ModelDependency1DaoMapper.xml             |  21 +-
 14 files changed, 376 insertions(+), 252 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
index 521cac30..84bcf045 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
@@ -138,7 +138,7 @@ public class NewDatasetFromGitController {
      * @return 单条数据
      */
 
-    @GetMapping("/downloadSinggerFile")
+    @GetMapping("/downloadSingleFile")
     @ApiOperation(value = "下载单个数据集文件", notes = "根据数据集版本表id下载单个数据集文件")
     public ResponseEntity downloadDataset(@RequestParam("url") String url) throws Exception {
         return newDatasetService.downloadDatasetlocal(url);
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
index 145f84d8..b4ab0e43 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
@@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("newmodel")
@@ -27,6 +29,12 @@ public class NewModelFromGitController {
         return AjaxResult.success(this.modelsService.newCreateModel(modelsVo));
     }
 
+    @PostMapping("/addVersion")
+    @ApiOperation("添加版本")
+    public AjaxResult addVersion(@RequestBody ModelsVo modelsVo) throws Exception {
+        return AjaxResult.success(this.modelsService.newCreateVersion(modelsVo));
+    }
+
     @CrossOrigin(origins = "*", allowedHeaders = "*")
     @PostMapping("/upload")
     @ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。")
@@ -34,31 +42,16 @@ public class NewModelFromGitController {
         return AjaxResult.success(this.modelsService.uploadModelLocal(files, uuid));
     }
 
-    /**
-     * 模型打包下载
-     *
-     * @param version 模型版本
-     * @return 模型
-     */
     @GetMapping("/downloadAllFiles")
     @ApiOperation(value = "下载同一版本下所有模型,并打包")
-    public ResponseEntity downloadAllDatasetFiles(@RequestParam("identifier") String identifier,
-                                                                       @RequestParam(value = "version") String version) throws Exception {
-        return modelsService.downloadAllModelFilesNew(identifier, version);
+    public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name,  @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception {
+        return modelsService.downloadAllModelFilesNew(name, id, version);
     }
 
-
-    /**
-     * 下载模型
-     *
-     * @param model_version_id ps:这里的id是model_version表的主键
-     * @return 模型
-     */
-
-    @GetMapping("/download/{model_version_id}")
+    @GetMapping("/downloadSingleFile")
     @ApiOperation(value = "下载单个模型文件", notes = "根据模型版本表id下载单个模型文件")
-    public ResponseEntity downloadModel(@PathVariable("model_version_id") Integer model_version_id) throws Exception {
-        return modelsService.downloadModels(model_version_id);
+    public ResponseEntity downloadDatasetlocal(@RequestParam("url") String url) throws Exception {
+        return modelsService.downloadDatasetlocal(url);
     }
 
     @GetMapping("/queryModels")
@@ -83,34 +76,38 @@ public class NewModelFromGitController {
 
     @GetMapping("/getVersionList")
     @ApiOperation(value = "获取模型分支列表")
-    public AjaxResult getVersionList(@RequestParam("identifier") String identifier, @RequestParam("owner")String owner) throws Exception {
+    public AjaxResult getVersionList(@RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception {
         return AjaxResult.success(this.modelsService.getVersionList(identifier, owner));
     }
 
 
     @GetMapping("/getModelDetail")
     @ApiOperation(value = "获取模型详细信息")
-    public AjaxResult getModelDetail(@RequestParam("model_name") String modelName, @RequestParam("identifier") String identifier,@RequestParam("owner")  String owner, @RequestParam("version") String version) throws Exception {
-        return AjaxResult.success(this.modelsService.getModelDetail(modelName, identifier, owner, version));
+    public AjaxResult getModelDetail(@RequestParam("id") Integer id, @RequestParam("name") String name, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception {
+        return AjaxResult.success(this.modelsService.getModelDetail(id, name, identifier, owner, version));
     }
 
     @GetMapping("/getModelDependencyTree")
     @ApiOperation(value = "获取模型依赖关系树")
-    public AjaxResult getModelDependencyTree(@RequestParam("repoId") Integer repoId, @RequestParam("model_name") String modelName, @RequestParam("version") String version) throws Exception {
-        return AjaxResult.success(this.modelsService.getModelDependencyTree(repoId, modelName, version));
+    public AjaxResult getModelDependencyTree(@RequestParam("id") Integer id, @RequestParam("model_name") String modelName, @RequestParam("version") String version) throws Exception {
+        return AjaxResult.success(this.modelsService.getModelDependencyTree(id, modelName, version));
     }
 
     @DeleteMapping("/delete")
     @ApiOperation(value = "删除模型")
-    public AjaxResult deleteModel(@RequestParam("repoId")Integer repoId, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception {
-        this.modelsService.deleteModel(repoId,identifier, owner);
+    public AjaxResult deleteModel(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception {
+        this.modelsService.deleteModel(id, identifier, owner);
         return AjaxResult.success();
     }
 
     @DeleteMapping("/deleteVersion")
     @ApiOperation(value = "删除模型版本")
-    public AjaxResult deleteVersion(@RequestParam("repoId")Integer repoId, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception {
-        this.modelsService.deleteVersion(repoId, identifier, owner, version);
+    public AjaxResult deleteVersion(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception {
+        List> versionList = this.modelsService.getVersionList(identifier, owner);
+        if(versionList.size() == 1){
+            return AjaxResult.error("当前模型只有一个版本,不能删除该版本");
+        }
+        this.modelsService.deleteVersion(id, identifier, owner, version);
         return AjaxResult.success();
     }
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java
index 60bedb72..387d6c92 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java
@@ -24,4 +24,6 @@ public class ModelDependency1 implements Serializable {
     private String owner;
 
     private Integer state;
+
+    private String meta;
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java
index b3910b5f..2937743b 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java
@@ -9,13 +9,13 @@ public interface ModelDependency1Dao {
 
     int insert(ModelDependency1 modelDependency1);
 
-    List queryByModelName(@Param("modelName") String modelName);
+    List queryModelDependency(@Param("modelName") String modelName, @Param("repoId") Integer repoId, @Param("owner") String owner);
 
     ModelDependency1 queryByModelNameAndVersion(@Param("repoId") Integer repoId, @Param("modelName") String modelName, @Param("version") String version);
 
     List queryByParentModel(@Param("parentModel") String parentModel);
 
-    int deleteModel(@Param("repoId") Integer repoId, @Param("identifier")String identifier, @Param("owner") String owner, @Param("version") String version);
+    int deleteModel(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("owner") String owner, @Param("version") String version);
 
-    int deleteModelDependency(@Param("repoId") Integer repoId, @Param("identifier")String identifier, @Param("owner") String owner, @Param("version") String version);
+    int deleteModelDependency(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("owner") String owner, @Param("version") String version);
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
index a2aac1b1..13d48756 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
@@ -70,6 +70,7 @@ public interface ModelsService {
 
     ResponseEntity downloadModels(Integer id) throws Exception;
 
+    ResponseEntity downloadDatasetlocal(String filePath) throws Exception;
 
     List> uploadModels(MultipartFile[] files, String uuid) throws Exception;
 
@@ -87,11 +88,13 @@ public interface ModelsService {
 
     List> exportModels(String path, String uuid) throws Exception;
 
-    CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception;
+    String newCreateModel(ModelsVo modelsVo) throws Exception;
+
+    String newCreateVersion(ModelsVo modelsVo) throws Exception;
 
     List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception;
 
-    ResponseEntity downloadAllModelFilesNew(String identifier, String version) throws IOException, Exception;
+    ResponseEntity downloadAllModelFilesNew(String identifier, Integer id, String version) throws IOException, Exception;
 
     Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception;
 
@@ -99,7 +102,7 @@ public interface ModelsService {
 
     List> getVersionList(String identifier, String owner) throws Exception;
 
-    ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception;
+    ModelsVo getModelDetail(Integer id, String name, String identifier, String owner, String version) throws Exception;
 
     ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version) throws Exception;
 
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index d78b1f1e..3f79d897 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -41,7 +41,6 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
@@ -249,6 +248,29 @@ public class ModelsServiceImpl implements ModelsService {
         }
     }
 
+    @Override
+    public ResponseEntity downloadDatasetlocal(String filePath) throws Exception {
+        File file = new File(filePath);
+
+        if (!file.exists()) {
+            throw new FileNotFoundException("File not found: " + filePath);
+        }
+
+        InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName());
+        headers.add(HttpHeaders.CONTENT_LENGTH, String.valueOf(file.length()));
+        headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
+
+        return ResponseEntity.ok()
+                .headers(headers)
+                .contentLength(file.length())
+                .contentType(MediaType.APPLICATION_OCTET_STREAM)
+                .body(resource);
+    }
+
+
     /**
      * 上传模型文件
      *
@@ -389,7 +411,6 @@ public class ModelsServiceImpl implements ModelsService {
         Models models = new Models();
         models.setName(modelsVo.getName());
         models.setDescription(modelsVo.getDescription());
-        models.setAvailableRange(modelsVo.getAvailableRange());
         models.setModelType(modelsVo.getModelType());
         models.setModelTag(modelsVo.getModelTag());
         Models modelsInsert = this.insert(models);
@@ -516,64 +537,206 @@ public class ModelsServiceImpl implements ModelsService {
     }
 
     @Override
-    public CompletableFuture newCreateModel(ModelsVo modelsVo) {
-        return CompletableFuture.supplyAsync(() -> {
-            try {
-                LoginUser loginUser = SecurityUtils.getLoginUser();
-                String ci4sUsername = loginUser.getUsername();
-                String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
-                String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
+    public String newCreateModel(ModelsVo modelsVo) {
+        try {
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            String ci4sUsername = loginUser.getUsername();
+            String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
+            String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
+
+//            String ci4sUsername = "chenzhihang";
+//            String gitLinkUsername = "chenzhihang";
+//            String gitLinkPassword = "czh19970311";
+
+            Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword);
+            Integer userId = (Integer) userInfo.get("user_id");
+
+            String repositoryName = modelsVo.getIdentifier() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getIdentifier();
+            ModelDependency1 modelDependency = new ModelDependency1();
+            List oldModelDependencys = modelDependency1Dao.queryModelDependency(modelsVo.getName(), null, gitLinkUsername);
+            if (oldModelDependencys != null && !oldModelDependencys.isEmpty()) {
+                if (oldModelDependencys.stream().anyMatch(oldModelDependency -> oldModelDependency.getVersion().equals(modelsVo.getVersion()))) {
+                    throw new RuntimeException("模型版本已存在,请勿重复创建");
+                }
+            }
 
-                Map userInfo = getUserInfo(ci4sUsername);
-                Integer userId = (Integer) userInfo.get("user_id");
+            //新建模型
+            // 拼接project
+            GitProjectVo gitProjectVo = new GitProjectVo();
+            gitProjectVo.setRepositoryName(repositoryName);
+            gitProjectVo.setName(modelsVo.getName());
+            gitProjectVo.setDescription(modelsVo.getDescription());
+            gitProjectVo.setPrivate(!modelsVo.getIsPublic());
+            gitProjectVo.setUserId(userId);
+
+            // 创建项目
+            Map project = gitService.createProject(gitProjectVo);
+            Integer gitlinIid = (Integer) project.get("id");
+            if (gitlinIid == null) {
+                throw new Exception("创建模型失败:" + project.get("message"));
+            }
+            // 创建分支
+            gitService.createBranch((String) userInfo.get("login"), repositoryName, modelsVo.getVersion(), "master");
+            // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType
+            gitService.createTopic(gitlinIid, "ci4s_model");
+            gitService.createTopic(gitlinIid, "modeltag_" + modelsVo.getModelTag());
+            gitService.createTopic(gitlinIid, "modeltype_" + modelsVo.getModelType());
+
+            String branchName = modelsVo.getVersion();
+            String owner = (String) userInfo.get("login");
+
+            String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git";
+            String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl();
+            String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + modelsVo.getName();
+            String rootPath = localPath + relatePath;
+            String modelPath = rootPath + "/model";
+            String metaPath = rootPath + "/metadata";
 
-                String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName();
-                ModelDependency1 modelDependency = new ModelDependency1();
-                List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName());
+            DVCUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
+            DVCUtils.moveFiles(sourcePath, modelPath);
+
+            //拼接生产的元数据后写入yaml文件
+            ModelMetaVo modelMetaVo = new ModelMetaVo();
+            BeanUtils.copyProperties(modelsVo, modelMetaVo);
+            modelMetaVo.setId(gitlinIid);
+            modelMetaVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login")));
+            modelMetaVo.setUpdateTime(DateUtils.getTime());
+            modelMetaVo.setUsage("
" +
+                    "# 克隆模型配置文件与存储参数到本地\n" +
+                    "git clone -b " + branchName + " " + projectUrl + "\n" +
+                    "# 远程拉取配置文件\n" +
+                    "dvc pull\n" +
+                    "
"); + modelMetaVo.setIdentifier(repositoryName); + modelMetaVo.setOwner(owner); + modelMetaVo.setVersionDesc(modelMetaVo.getDescription()); + modelMetaVo.setRelativePaths(relatePath); + + Map metaMap = JsonUtils.objectToMap(modelMetaVo); + YamlUtils.generateYamlFile(metaMap, metaPath, "metadata"); + String meta = metaMap.toString(); + + DVCUtils.dvcInit(rootPath); + // 配置远程S3地址 + String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName; + DVCUtils.dvcRemoteAdd(rootPath, s3Path); + DVCUtils.dvcConfigS3Credentials(rootPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); + + // dvc 跟踪 + DVCUtils.dvcAdd(rootPath, "model"); + // git commit + DVCUtils.gitAdd(rootPath, "."); + DVCUtils.gitCommit(rootPath, "commit from ci4s with " + ci4sUsername); + DVCUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword); + DVCUtils.dvcPush(rootPath); + + //保存模型依赖 + modelDependency.setRepoId(gitlinIid); + modelDependency.setIdentifier(repositoryName); + modelDependency.setModelName(modelsVo.getName()); + modelDependency.setVersion(modelsVo.getVersion()); + modelDependency.setParentModel(modelsVo.getParentModel()); + modelDependency.setOwner(gitLinkUsername); + modelDependency.setMeta(meta); + modelDependency1Dao.insert(modelDependency); + return "新增模型成功"; + } catch (Exception e) { + logger.error(e.getMessage()); + throw new RuntimeException(e); + } + } - if (oldModelDependencys != null && !oldModelDependencys.isEmpty()) { + @Override + public String newCreateVersion(ModelsVo modelsVo) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - if (oldModelDependencys.stream().anyMatch(oldModelDependency -> oldModelDependency.getRepoId().equals(modelsVo.getRepoId()) && oldModelDependency.getVersion().equals(modelsVo.getVersion()))) { - throw new RuntimeException("模型版本已存在,请勿重复创建"); - } +// String ci4sUsername = "chenzhihang"; +// String gitLinkUsername = "chenzhihang"; +// String gitLinkPassword = "czh19970311"; - //新建版本 - commonDvc(userInfo, ci4sUsername, modelsVo.getRepoId(), modelsVo.getRepositoryName(), modelsVo, gitLinkUsername, gitLinkPassword, "CreateModelFromPipeline"); - modelDependency.setRepoId(modelsVo.getRepoId()); - } else { - //新建模型 - // 拼接project - GitProjectVo gitProjectVo = new GitProjectVo(); - gitProjectVo.setRepositoryName(repositoryName); - gitProjectVo.setName(modelsVo.getName()); - gitProjectVo.setDescription(modelsVo.getDescription()); - gitProjectVo.setPrivate(modelsVo.getAvailableRange() == 0); - gitProjectVo.setUserId(userId); - - // 创建项目 - Map project = gitService.createProject(gitProjectVo); - Integer gitlinIid = (Integer) project.get("id"); - modelDependency.setRepoId(gitlinIid); - // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType - gitService.createTopic(gitlinIid, "ci4s_model"); - gitService.createTopic(gitlinIid, "modeltag_" + modelsVo.getModelTag()); - gitService.createTopic(gitlinIid, "modeltype_" + modelsVo.getModelType()); - commonDvc(userInfo, ci4sUsername, gitlinIid, repositoryName, modelsVo, gitLinkUsername, gitLinkPassword, "createModel"); - } + Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); - //保存模型依赖 - modelDependency.setIdentifier(repositoryName); - modelDependency.setModelName(modelsVo.getName()); - modelDependency.setVersion(modelsVo.getVersion()); - modelDependency.setParentModel(modelsVo.getParentModel()); - modelDependency.setOwner(ci4sUsername); - modelDependency1Dao.insert(modelDependency); - return "新增模型成功"; - } catch (Exception e) { - logger.error(e.getMessage()); - throw new RuntimeException(e); + String repositoryName = modelsVo.getIdentifier() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getIdentifier(); + ModelDependency1 modelDependency = new ModelDependency1(); + List oldModelDependencys = modelDependency1Dao.queryModelDependency(modelsVo.getName(), modelsVo.getId(), gitLinkUsername); + if (oldModelDependencys != null && !oldModelDependencys.isEmpty()) { + if (oldModelDependencys.stream().anyMatch(oldModelDependency -> oldModelDependency.getVersion().equals(modelsVo.getVersion()))) { + throw new RuntimeException("模型版本已存在,请勿重复创建"); } - }); + + //新建版本 + String branchName = modelsVo.getVersion(); + String owner = (String) userInfo.get("login"); + + String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; + String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); + String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + modelsVo.getName(); + String rootPath = localPath + relatePath; + String modelPath = rootPath + "/model"; + String metaPath = rootPath + "/metadata"; + + //部分信息在前面的版本里面,从那边取过来 + Map stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml"); + ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + + // 创建本地分支 + DVCUtils.createLocalBranchBasedOnMaster(rootPath, branchName); + //dvc checkout + DVCUtils.dvcCheckout(rootPath); + DVCUtils.moveFiles(sourcePath, modelPath); + + //拼接生产的元数据后写入yaml文件 + ModelMetaVo modelMetaVo = new ModelMetaVo(); + BeanUtils.copyProperties(modelsVo, modelMetaVo); + modelMetaVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); + modelMetaVo.setUpdateTime(DateUtils.getTime()); + modelMetaVo.setUsage("
" +
+                    "# 克隆模型配置文件与存储参数到本地\n" +
+                    "git clone -b " + branchName + " " + projectUrl + "\n" +
+                    "# 远程拉取配置文件\n" +
+                    "dvc pull\n" +
+                    "
"); + modelMetaVo.setIdentifier(repositoryName); + modelMetaVo.setOwner(owner); + modelMetaVo.setDescription(oldModelVo.getDescription()); + modelMetaVo.setModelTag(oldModelVo.getModelTag()); + modelMetaVo.setModelType(oldModelVo.getModelType()); + modelMetaVo.setRelativePaths(relatePath); + + Map metaMap = JsonUtils.objectToMap(modelMetaVo); + YamlUtils.generateYamlFile(metaMap, metaPath, "metadata"); + String meta = metaMap.toString(); + + // 配置远程S3地址 + String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; + DVCUtils.dvcRemoteAdd(rootPath, s3Path); + DVCUtils.dvcConfigS3Credentials(rootPath, endpoint); + DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); + DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); + // dvc 跟踪 + DVCUtils.dvcAdd(rootPath, "model"); + DVCUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); + //dvc push 到远程S3 + DVCUtils.dvcPush(rootPath); + + //保存模型依赖 + modelDependency.setRepoId(modelsVo.getId()); + modelDependency.setIdentifier(repositoryName); + modelDependency.setModelName(modelsVo.getName()); + modelDependency.setVersion(modelsVo.getVersion()); + modelDependency.setParentModel(modelsVo.getParentModel()); + modelDependency.setOwner(gitLinkUsername); + modelDependency.setMeta(meta); + modelDependency1Dao.insert(modelDependency); + + return "新增模型版本成功"; + } + return null; } @@ -584,8 +747,9 @@ public class ModelsServiceImpl implements ModelsService { for (MultipartFile file : files) { // 构建objectName String username = SecurityUtils.getLoginUser().getUsername(); +// String username = "chenzhihang"; String fileName = file.getOriginalFilename(); - String path = "/temp/" + username + "/models/" + uuid + "/model/"; + String path = localPath + "/temp/" + username + "/models/" + uuid; long sizeInBytes = file.getSize(); String formattedSize = FileUtil.formatFileSize(sizeInBytes); File targetFile = new File(path, file.getOriginalFilename()); @@ -594,10 +758,9 @@ public class ModelsServiceImpl implements ModelsService { // 保存文件到目标路径 FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile); // 返回上传文件的路径 - String absolutePath = targetFile.getAbsolutePath(); Map result = new HashMap<>(); result.put("fileName", fileName); - result.put("url", absolutePath); // objectName根据实际情况定义 + result.put("url", path); // objectName根据实际情况定义 result.put("fileSize", formattedSize); results.add(result); } @@ -605,27 +768,12 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public ResponseEntity downloadAllModelFilesNew(String identifier, String version) throws Exception { + public ResponseEntity downloadAllModelFilesNew(String identifier, Integer id, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - Map userInfo = getUserInfo(ci4sUsername); - - String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + identifier + ".git"; - String localPath1 = localPath + ci4sUsername + "/model/" + identifier; - File folder = new File(localPath1); - if (folder.exists() && folder.isDirectory()) { - //切换分支 - DVCUtils.gitCheckoutBranch(localPath1, version); - //pull - DVCUtils.gitPull(localPath1, gitLinkUsername, gitLinkPassword); - //dvc pull - DVCUtils.dvcPull(localPath1); - } else { - DVCUtils.gitClone(localPath1, projectUrl, version, gitLinkUsername, gitLinkPassword); - } + + String localPath1 = localPath + ci4sUsername + "/model/" + id + "/" + identifier; // 打包 data 文件夹 String dataFolderPath = localPath1 + "/model"; String zipFilePath = localPath1 + "/model.zip"; @@ -658,21 +806,33 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { + public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - Map userInfo = getUserInfo(ci4sUsername); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + +// String ci4sUsername = "chenzhihang"; +// String gitLinkUsername = "chenzhihang"; +// String gitLinkPassword = "czh19970311"; + + Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); String token = (String) userInfo.get("token"); //拼接查询url String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); - String search = modelsVo.getName(); String topic_name = "ci4s_model"; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTypeName; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; - String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name + "&search=" + search; + String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name; + + String name = modelsVo.getName(); + if (StringUtils.isNotEmpty(name)) { + url = url + "&search=" + name; + } + String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("count"); @@ -681,22 +841,29 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { + public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - Map userInfo = getUserInfo(ci4sUsername); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + + Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); Integer userId = (Integer) userInfo.get("user_id"); String token = (String) userInfo.get("token"); //拼接查询url String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); - String search = modelsVo.getName(); String topic_name = "ci4s_model"; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTagName; topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; - String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name + "&search=" + search; + String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name; + String name = modelsVo.getName(); + if (StringUtils.isNotEmpty(name)) { + url = url + "&search=" + name; + } + String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("total_count"); @@ -705,37 +872,37 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public List> getVersionList(String identifier, String owner) throws Exception { + public List> getVersionList(String identifier, String owner) throws Exception { List> brancheList = gitService.getBrancheList(owner, identifier); return brancheList.stream() - .filter(branch -> "master".equals(branch.get("name"))) + .filter(branch -> !"master".equals(branch.get("name"))) .collect(Collectors.toList()); } @Override - public ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception { + public ModelsVo getModelDetail(Integer id, String name, String identifier, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); +// String ci4sUsername = "chenzhihang"; +// String gitLinkUsername = "chenzhihang"; +// String gitLinkPassword = "czh19970311"; if (StringUtils.isEmpty(version)) { - List> versionList = this.getVersionList(owner, identifier); + List> versionList = this.getVersionList(identifier, owner); if (versionList.size() == 0) { - throw new Exception("数据集文件不存在"); + throw new Exception("模型文件不存在"); } version = (String) versionList.get(0).get("name"); } // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP - List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); + List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, name, version, "model", gitLinkUsername, gitLinkPassword); - Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + modelName + "/" + version + "/metadata/metadata.yaml"); - assert stringObjectMap != null; + Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + name + "/metadata/metadata.yaml"); - ModelMetaVo modelMetaVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); - ModelsVo modelsVo = new ModelsVo(); - BeanUtils.copyProperties(modelMetaVo, modelsVo); + ModelsVo modelsVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelsVo.class); List versionVos = new ArrayList<>(); if (!fileDetailsAfterGitPull.isEmpty()) { @@ -772,12 +939,6 @@ public class ModelsServiceImpl implements ModelsService { @Override public void deleteModel(Integer repoId, String identifier, String owner) throws Exception { - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - Map userInfo = getUserInfo(ci4sUsername); - String token = (String) userInfo.get("token"); - - gitService.deleteProject(owner, identifier); //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, null); @@ -786,72 +947,19 @@ public class ModelsServiceImpl implements ModelsService { @Override public void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception { - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - gitService.deleteBranch(owner, identifier, version); //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, version); modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); } - void commonDvc(Map userInfo, String username, Integer gitlinIid, String repositoryName, ModelsVo modelsVo, String gitLinkUsername, String gitLinkPassword, String type) throws Exception { - String branchName = modelsVo.getVersion(); - - // 创建分支 - gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); - - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - String url = modelsVo.getModelVersionVos().get(0).getUrl(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - String rootPath = localPath + username + "/model/" + modelsVo.getName() + "/" + branchName; - String modelPath = rootPath + "/model"; - String metaPath = rootPath + "/metadata"; - - - if (type.equals("CreateModelFromPipeline") && FileUtil.checkDirectoryExists(rootPath)) { - DVCUtils.gitFetch(rootPath, gitLinkUsername, gitLinkPassword); - DVCUtils.gitCheckoutBranch(rootPath, branchName); - } else { - DVCUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - } - - DVCUtils.moveFiles(sourcePath, modelPath); - - //拼接生产的元数据后写入yaml文件 - ModelMetaVo modelMetaVo = new ModelMetaVo(); - BeanUtils.copyProperties(modelsVo, modelMetaVo); - YamlUtils.generateYamlFile(JsonUtils.objectToMap(modelMetaVo), metaPath, "metadata"); - - // dvc init 初始化 - DVCUtils.dvcInit(rootPath); - - // 配置远程S3地址 - String s3Path = "management-platform-files/" + username + "/model/" + gitlinIid + repositoryName + "/" + branchName; - DVCUtils.dvcRemoteAdd(rootPath, s3Path); - DVCUtils.dvcConfigS3Credentials(rootPath, endpoint); - DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); - DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); - - // dvc 跟踪 - DVCUtils.dvcAdd(rootPath, "model"); - - // git commit - DVCUtils.gitAdd(rootPath, "."); - DVCUtils.gitCommit(rootPath, "commit from ci4s with " + username); - DVCUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword); - - // dvc push 到远程S3 - DVCUtils.dvcPush(rootPath); - } - public List convert(List> lst) { if (lst != null && lst.size() > 0) { List newModelVos = ConvertUtil.convertListMapToObjectList(lst, ModelsVo.class); for (ModelsVo newModelVo : newModelVos) { Map map = lst.stream() - .filter(m -> m.get("repo_id").equals(newModelVo.getRepoId())) + .filter(m -> m.get("id").equals(newModelVo.getId())) .findFirst() .orElse(null); @@ -869,6 +977,9 @@ public class ModelsServiceImpl implements ModelsService { } }); } + Map author = (Map) map.get("author"); + newModelVo.setCreateBy((String) author.get("name")); + newModelVo.setOwner((String) author.get("login")); } } return newModelVos; @@ -906,9 +1017,13 @@ public class ModelsServiceImpl implements ModelsService { modelDependency1TreeVo.setChildModelList(childModelList); } - Map getUserInfo(String ci4sUsername) throws IOException { + Map getUserInfo(String ci4sUsername, String gitLinkUsername, String gitLinkPassword) throws IOException { Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + if (userReq == null) { + gitService.login(gitLinkUsername, gitLinkPassword); + userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + } Map userInfo = JsonUtils.jsonToMap(userReq); String token = gitService.checkoutToken(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 40c31894..5a10bf47 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -94,14 +94,16 @@ public class NewDatasetServiceImpl implements NewDatasetService { String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git"; // 得到用户操作的路径 - String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal+ ci4sUsername+"/datasets/" + gitlinIid + "/" + datasetVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); + String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl(); + String relatePath = ci4sUsername+"/datasets/" + gitlinIid + "/" + datasetVo.getName(); + String localPath = localPathlocal+ relatePath; + String datasetPath = localPath + "/dataset"; + // 命令行操作 git clone 项目地址 DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + gitlinIid + "/" + repositoryName + "/" + branchName; - DVCUtils.moveFiles(sourcePath, localPath); + DVCUtils.moveFiles(sourcePath, datasetPath); // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); @@ -129,7 +131,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); // dvc 跟踪 - DVCUtils.dvcAdd(localPath, "data"); + DVCUtils.dvcAdd(localPath, "dataset"); // git commit DVCUtils.gitAdd(localPath, "."); DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); @@ -151,10 +153,11 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 创建分支 String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); String repositoryName = datasetVo.getIdentifier(); - String url = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String localPath = localPathlocal + ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + datasetVo.getName(); - String sourcePath = url.substring(0, url.lastIndexOf("/")); - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl(); + String relatePath = ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + datasetVo.getName(); + String localPath = localPathlocal + relatePath; + String datasetPath = localPath + "/dataset"; + String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + repositoryName + ".git"; //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); @@ -169,7 +172,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 准备数据 String s3Path = "management-platform-files" + "/" + ci4sUsername + "/" + "datasets" + "/" + datasetVo.getId() + "/" + repositoryName + "/" + branchName; - DVCUtils.moveFiles(sourcePath, localPath); + DVCUtils.moveFiles(sourcePath, datasetPath); // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); @@ -180,7 +183,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { "dvc pull\n" + "
"); datasetVo.setIdentifier(repositoryName); - datasetVo.setId(datasetVo.getId()); datasetVo.setOwner((String) userInfo.get("login")); if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ datasetVo.setDatasetSource("用户上传"); @@ -197,7 +199,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId); DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); // dvc 跟踪 - DVCUtils.dvcAdd(localPath, "data"); + DVCUtils.dvcAdd(localPath, "dataset"); DVCUtils.pushNewBranchToRemote(localPath,gitLinkUsername,gitLinkPassword,branchName); //dvc push 到远程S3 DVCUtils.dvcPush(localPath); @@ -297,10 +299,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Override public List> getVersionList(String repo, String owner) throws Exception { - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); List> brancheList = gitService.getBrancheList(owner, repo); return brancheList.stream() .filter(branch -> !"master".equals(branch.get("name"))) @@ -333,16 +331,15 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 构建objectName String username = SecurityUtils.getLoginUser().getUsername(); String fileName = file.getOriginalFilename(); - String path = localPathlocal + "temp" + "/" + username + "/" + "datasets" + "/" + uuid + "/" + "data" + "/" + fileName; + String path = localPathlocal + "temp" + "/" + username + "/" + "datasets" + "/" + uuid; long sizeInBytes = file.getSize(); String formattedSize = FileUtil.formatFileSize(sizeInBytes); - File targetFile = new File(path); + File targetFile = new File(path, file.getOriginalFilename()); // 确保目录存在 targetFile.getParentFile().mkdirs(); // 保存文件到目标路径 FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile); // 返回上传文件的路径 - String absolutePath = targetFile.getAbsolutePath(); Map result = new HashMap<>(); result.put("fileName", fileName); result.put("url", path); // objectName根据实际情况定义 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java index c998af87..747ee5e2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java @@ -59,9 +59,6 @@ public class TensorBoardServiceImpl implements TensorBoardService { @Override public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { -// if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ -// throw new Exception("存储路径或存储为空"); -// } if (StringUtils.isEmpty(frameLogPathVo.getPath())) { throw new Exception("存储路径为空"); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index 24cede7e..e1b9f62f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -100,14 +100,13 @@ public class ConvertUtil { private static boolean hasProperty(Class clazz, String propertyName) { try { + Field field = clazz.getDeclaredField(propertyName); + return field != null; + } catch (NoSuchFieldException e) { Class superClazz = clazz.getSuperclass(); - if(superClazz != Object.class){ + if (superClazz != Object.class) { return hasProperty(superClazz, propertyName); - } else { - Field field = clazz.getDeclaredField(propertyName); - return field != null; } - } catch (NoSuchFieldException e) { return false; } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 73e40d28..c877721c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -45,7 +45,7 @@ public class DVCUtils { public static void moveFiles(String sourcePath, String targetPath) throws Exception { Path sourceDir = Paths.get(sourcePath); - Path targetDir = Paths.get(targetPath).resolve(sourceDir.getFileName()); + Path targetDir = Paths.get(targetPath); if (!Files.exists(targetDir)) { Files.createDirectories(targetDir); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 03ec45b8..f54238de 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -16,6 +16,15 @@ public class YamlUtils { */ public static void generateYamlFile(Map data, String path, String fileName) { Yaml yaml = new Yaml(); + + File directory = new File(path); + if (!directory.exists()) { + boolean isCreated = directory.mkdirs(); + if (!isCreated) { + throw new RuntimeException("创建路径失败: " + path); + } + } + String fullPath = path + "/" + fileName + ".yaml"; try (FileWriter writer = new FileWriter(fullPath)) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java index 2716bf50..19d1e554 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -13,6 +13,8 @@ import java.util.List; @Data @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class ModelMetaVo implements Serializable { + private Integer id; + @ApiModelProperty(name = "模型名称") private String name; @@ -20,13 +22,13 @@ public class ModelMetaVo implements Serializable { private String version; @ApiModelProperty(name = "版本描述") - private String versionDescription; + private String versionDesc; @ApiModelProperty(value = "创建人") private String createBy; @ApiModelProperty(value = "更新时间") - private Date updateTime; + private String updateTime; @ApiModelProperty(value = "训练镜像") private String image; @@ -62,6 +64,21 @@ public class ModelMetaVo implements Serializable { private String description; @ApiModelProperty(value = "示例用法") - private String examples; + private String usage; + + @ApiModelProperty(name = "time_ago", value = "更新时间") + private String timeAgo; + + @ApiModelProperty(name = "owner", value = "项目所有者") + private String owner; + @ApiModelProperty(name = "identifier", value = "模型仓库名称") + private String identifier; + + @ApiModelProperty(name = "is_public", value = "是否公开1公开,0私有") + private Boolean isPublic; + + @ApiModelProperty(name = "relative_paths",value = "文件相对路径") + private String relativePaths; } + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java index 8a21b24e..9859bf77 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelsVo.java @@ -12,34 +12,13 @@ import java.util.List; @Data public class ModelsVo extends ModelMetaVo implements Serializable { - private Integer id; - - /** - * 模型可见范围 - */ - @ApiModelProperty(name = "available_range") - private int availableRange; - - /** - * 状态 - */ - @ApiModelProperty(name = "status") + @ApiModelProperty(name = "status", value = "状态") private Integer status; - @ApiModelProperty(name = "models_version_vos") + @ApiModelProperty(name = "model_version_vos") private List modelVersionVos; - /** - * 模型仓库名称 - */ - @ApiModelProperty(name = "repository_name") - private String repositoryName; - - @ApiModelProperty(name = "repo_id") - private Integer repoId; - - /** - * 父模型 - */ + @ApiModelProperty(name = "parent_model", value = "父模型") private String parentModel; + } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 9a57aa3a..5bdd32d6 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -4,15 +4,24 @@ - insert into model_dependency1(parent_model, model_name, version, repo_id, identifier, owner) - values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{identifier}, #{owner}) + insert into model_dependency1(parent_model, model_name, version, repo_id, identifier, owner, meta) + values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{identifier}, #{owner}, #{meta}) - select * from model_dependency1 - where model_name = #{modelName} - and state = 1 + where + state = 1 + + and model_name = #{modelName} + + + and repo_id = #{repoId} + + + and owner = #{owner} + + select idnameversionsourcestatecreate_bycreate_timeupdate_byupdate_time + from dataset_temp_storage + where id = #{id} + + + + + + + + + + + + + insert into dataset_temp_storage(nameversionsourcestatecreate_bycreate_timeupdate_byupdate_time) + values (#{name}#{version}#{source}#{state}#{createBy}#{createTime}#{updateBy}#{updateTime}) + + + + insert into dataset_temp_storage(nameversionsourcestatecreate_bycreate_timeupdate_byupdate_time) + values + + (#{entity.name}#{entity.version}#{entity.source}#{entity.state}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}) + + + + + insert into dataset_temp_storage(nameversionsourcestatecreate_bycreate_timeupdate_byupdate_time) + values + + (#{entity.name}#{entity.version}#{entity.source}#{entity.state}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}) + + on duplicate key update + name = values(name)version = values(version)source = values(source)state = values(state)create_by = + values(create_by)create_time = values(create_time)update_by = values(update_by)update_time = values(update_time) + + + + + update dataset_temp_storage + + + name = #{name}, + + + version = #{version}, + + + source = #{source}, + + + state = #{state}, + + + create_by = #{createBy}, + + + create_time = #{createTime}, + + + update_by = #{updateBy}, + + + update_time = #{updateTime}, + + + where id = #{id} + + + + + delete + from dataset_temp_storage + where id = #{id} + + + + From 64b59e8abc821be69d26ec0c17af340a5c647bfa Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 12 Sep 2024 15:04:22 +0800 Subject: [PATCH 070/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/NewDatasetFromGitController.java | 46 +++++++++---------- .../model/NewModelFromGitController.java | 12 +++-- .../ruoyi/platform/service/GitService.java | 3 +- .../ruoyi/platform/service/ModelsService.java | 3 +- .../platform/service/NewDatasetService.java | 2 +- .../platform/service/impl/GitServiceImpl.java | 11 ++++- .../service/impl/ModelsServiceImpl.java | 6 +-- .../service/impl/NewDatasetServiceImpl.java | 4 +- 8 files changed, 48 insertions(+), 39 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 84bcf045..cb6e4327 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -26,7 +26,6 @@ public class NewDatasetFromGitController { private NewDatasetService newDatasetService; - /** * 新增数据集与版本新 * @@ -57,50 +56,51 @@ public class NewDatasetFromGitController { @GetMapping("/queryDatasets") @ApiOperation("数据集广场公开数据集分页查询,根据data_type,data_tag筛选,true公开false私有") public AjaxResult queryDatasets(Dataset dataset, @RequestParam("page") int page, - @RequestParam("size") int size, + @RequestParam("size") int size, @RequestParam(value = "is_public") Boolean isPublic, - @RequestParam(value = "data_type", required = false) String dataType, - @RequestParam(value = "data_tag", required = false) String dataTag) throws Exception { + @RequestParam(value = "data_type", required = false) String dataType, + @RequestParam(value = "data_tag", required = false) String dataTag) throws Exception { PageRequest pageRequest = PageRequest.of(page, size); - if(isPublic){ + if (isPublic) { return AjaxResult.success(this.newDatasetService.newPubilcQueryByPage(dataset, pageRequest)); - }else { + } else { return AjaxResult.success(this.newDatasetService.newPersonalQueryByPage(dataset, pageRequest)); } } @GetMapping("/getVersionList") @ApiOperation(value = "获取分支列表") - public AjaxResult getVersionList(@RequestParam("identifier") String repo,@RequestParam("owner")String owner) throws Exception { - return AjaxResult.success(this.newDatasetService.getVersionList(repo,owner)); + public AjaxResult getVersionList(@RequestParam("identifier") String repo, @RequestParam("owner") String owner) throws Exception { + return AjaxResult.success(this.newDatasetService.getVersionList(repo, owner)); } @GetMapping("/getDatasetDetail") @ApiOperation(value = "获取数据集详情") public AjaxResult getDatasetVersions(@RequestParam("name") String name, @RequestParam("id") Integer id, - @RequestParam(value ="owner",required = false)String owner, - @RequestParam(value = "identifier",required = false) String identifier, - @RequestParam(value = "version",required = false)String version) throws Exception { - return AjaxResult.success(this.newDatasetService.getNewDatasetDesc(id,name,identifier,owner,version)); + @RequestParam(value = "owner", required = false) String owner, + @RequestParam(value = "identifier", required = false) String identifier, + @RequestParam(value = "version", required = false) String version) throws Exception { + return AjaxResult.success(this.newDatasetService.getNewDatasetDesc(id, name, identifier, owner, version)); } @DeleteMapping("/deleteDataset") @ApiOperation(value = "删除数据集") - public AjaxResult deleteDataset(@RequestParam("identifier") String repo,@RequestParam("owner")String owner) throws Exception { - this.newDatasetService.deleteDatasetNew(repo,owner); + public AjaxResult deleteDataset(@RequestParam("identifier") String repo, @RequestParam("owner") String owner) throws Exception { + this.newDatasetService.deleteDatasetNew(repo, owner); return AjaxResult.success(); } @DeleteMapping("/deleteDatasetVersion") @ApiOperation(value = "删除数据集版本") - public AjaxResult deleteDatasetVersion(@RequestParam("identifier") String repo,@RequestParam("owner")String owner,@RequestParam("version")String version) throws Exception { + public AjaxResult deleteDatasetVersion(@RequestParam("identifier") String repo, @RequestParam("owner") String owner, @RequestParam("version") String version, + @RequestParam("relative_paths") String relativePaths) throws Exception { // 查询版本,如果是最后一个版本,则不能删除 List> versionList = this.newDatasetService.getVersionList(repo, owner); - if(versionList.size() == 1){ + if (versionList.size() == 1) { return AjaxResult.error("当前数据集只有一个版本,不能删除该版本"); } - this.newDatasetService.deleteDatasetVersionNew(repo,owner,version); + this.newDatasetService.deleteDatasetVersionNew(repo, owner, version, relativePaths); return AjaxResult.success(); } @@ -109,32 +109,32 @@ public class NewDatasetFromGitController { * 上传数据集 * * @param files 上传的数据集文件 - * @param uuid 上传唯一标识,构建url + * @param uuid 上传唯一标识,构建url * @return 上传结果 */ @CrossOrigin(origins = "*", allowedHeaders = "*") @PostMapping("/upload") @ApiOperation(value = "上传数据集") public AjaxResult uploadDataset(@RequestParam("file") MultipartFile[] files, @RequestParam("uuid") String uuid) throws Exception { - return AjaxResult.success(this.newDatasetService.uploadDatasetlocal(files,uuid)); + return AjaxResult.success(this.newDatasetService.uploadDatasetlocal(files, uuid)); } /** * 数据集打包下载 * - * @param version 数据集版本 + * @param version 数据集版本 * @return 单条数据 */ @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有数据集,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { - return newDatasetService.downloadAllDatasetFilesNew(name,id, version); + public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { + return newDatasetService.downloadAllDatasetFilesNew(name, id, version); } /** * 下载数据集 * - * @param url ps:路径 + * @param url ps:路径 * @return 单条数据 */ diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index b4ab0e43..732e2d97 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -44,7 +44,7 @@ public class NewModelFromGitController { @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有模型,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { + public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { return modelsService.downloadAllModelFilesNew(name, id, version); } @@ -95,19 +95,21 @@ public class NewModelFromGitController { @DeleteMapping("/delete") @ApiOperation(value = "删除模型") - public AjaxResult deleteModel(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception { + public AjaxResult deleteModel(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, + @RequestParam("owner") String owner) throws Exception { this.modelsService.deleteModel(id, identifier, owner); return AjaxResult.success(); } @DeleteMapping("/deleteVersion") @ApiOperation(value = "删除模型版本") - public AjaxResult deleteVersion(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception { + public AjaxResult deleteVersion(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version + , @RequestParam("relative_paths") String relativePaths) throws Exception { List> versionList = this.modelsService.getVersionList(identifier, owner); - if(versionList.size() == 1){ + if (versionList.size() == 1) { return AjaxResult.error("当前模型只有一个版本,不能删除该版本"); } - this.modelsService.deleteVersion(id, identifier, owner, version); + this.modelsService.deleteVersion(id, identifier, owner, version, relativePaths); return AjaxResult.success(); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java index 735c894f..a8e2ab79 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java @@ -2,7 +2,6 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.GitProjectVo; -import java.io.IOException; import java.util.List; import java.util.Map; @@ -23,7 +22,7 @@ public interface GitService { void deleteProject(String owner, String projectName) throws Exception; - void deleteBranch(String owner,String projectName ,String branchName) throws Exception; + void deleteBranch(String owner, String projectName, String branchName, String localPath) throws Exception; Map getUserInfo(String token) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 13d48756..ec330f1d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -14,7 +14,6 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletableFuture; /** * (Models)表服务接口 @@ -108,5 +107,5 @@ public interface ModelsService { void deleteModel(Integer repoId, String identifier, String owner) throws Exception; - void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception; + void deleteVersion(Integer repoId, String identifier, String owner, String version, String relativePath) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java index 71e96ccd..1da4dfee 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -29,5 +29,5 @@ public interface NewDatasetService { void deleteDatasetNew(String repo, String owner) throws Exception; - void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception; + void deleteDatasetVersionNew(String repo, String owner, String version, String relativePath) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 1ecccaa8..b7573c4e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -8,12 +8,15 @@ import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.vo.GitProjectVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.lang3.StringUtils; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import redis.clients.jedis.Jedis; +import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.HashMap; @@ -147,7 +150,13 @@ public class GitServiceImpl implements GitService { } @Override - public void deleteBranch(String owner, String projectName, String branchName) throws Exception { + public void deleteBranch(String owner, String projectName, String branchName, String localPath) throws Exception { + try (Git git = Git.open(new File(localPath))) { + git.checkout().setName("master").call(); + git.branchDelete().setBranchNames(branchName).setForce(true).call(); + } catch (IOException | GitAPIException e) { + log.error("Exception occurred while creating local branch based on master",e); + } String token = this.checkoutToken(); HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 3f79d897..7f07de43 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -872,7 +872,7 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public List> getVersionList(String identifier, String owner) throws Exception { + public List> getVersionList(String identifier, String owner) throws Exception { List> brancheList = gitService.getBrancheList(owner, identifier); return brancheList.stream() .filter(branch -> !"master".equals(branch.get("name"))) @@ -946,8 +946,8 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception { - gitService.deleteBranch(owner, identifier, version); + public void deleteVersion(Integer repoId, String identifier, String owner, String version, String relativePath) throws Exception { + gitService.deleteBranch(owner, identifier, version, localPath + relativePath); //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, version); modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 16a2f29a..9248b9ff 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -316,12 +316,12 @@ public class NewDatasetServiceImpl implements NewDatasetService { } @Override - public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { + public void deleteDatasetVersionNew(String repo, String owner, String version, String relativePath) throws Exception { Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String token = jedis.get(ci4sUsername+"_gitToken"); - gitService.deleteBranch(owner, repo, version); + gitService.deleteBranch(owner, repo, version, localPathlocal + relativePath); } @Override From 1e5c82566cc8cb0cb429ddcd46172f94d73f0f29 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 12 Sep 2024 15:35:43 +0800 Subject: [PATCH 071/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 7f07de43..f4df9af8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -799,7 +799,7 @@ public class ModelsServiceImpl implements ModelsService { InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=data.zip") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + identifier + "_" + version + "_model.zip") .contentType(MediaType.APPLICATION_OCTET_STREAM) .contentLength(zipFile.length()) .body(resource); From f4581d5080bc40c3ce7d297103ebc300ff6aa3d7 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 12 Sep 2024 15:52:22 +0800 Subject: [PATCH 072/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9datasettemp=E7=9A=84x?= =?UTF-8?q?ml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/jupyter/JupyterController.java | 4 +- .../service/impl/NewDatasetServiceImpl.java | 2 +- .../DatasetTempStorageDao.xml | 37 +++++++++++-------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java index 52cad80b..514ee3f8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java @@ -89,7 +89,7 @@ public class JupyterController extends BaseController { @GetMapping(value = "/testdvc") public AjaxResult testdvc() throws Exception { NewDatasetVo datasetVo = new NewDatasetVo(); - datasetVo.setName("testdvc90412"); + datasetVo.setName("testdvc1992"); datasetVo.setDescription("sss"); datasetVo.setIsPublic(false); datasetVo.setDataTag("计算机视觉"); @@ -97,7 +97,7 @@ public class JupyterController extends BaseController { datasetVo.setVersion("dev"); List datasetVersionVos = new ArrayList<>(); VersionVo versionVo = new VersionVo(); - versionVo.setUrl("E:/test/bb/data/xssa.doc"); + versionVo.setUrl("E:/test/data/模型任务1季度.zip"); datasetVo.setDescription("this is a test"); datasetVo.setProcessingCode("python code"); datasetVo.setVersionDesc("this is a test"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index ad06aa06..a71e4310 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -483,7 +483,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { queryDatasetTempStorage.setName(datasetVo.getName()); queryDatasetTempStorage.setVersion(datasetVo.getVersion()); DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); - if (datasetTempStorage == null){ + if (datasetTempStorage != null){ String datasetSourceString = datasetTempStorage.getSource(); Map datasetSourceMap = JacksonUtil.parseJSONStr2Map(datasetSourceString); String preprocessCode = (String) datasetSourceMap.get("preprocess_code"); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetTempStorageDao.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetTempStorageDao.xml index 4d0a2d59..78dcc3ae 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetTempStorageDao.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetTempStorageDao.xml @@ -16,15 +16,16 @@ - + + - select * from model_dependency1 where repo_id = #{repoId} - and model_name = #{modelName} + and identifier = #{identifier} and version = #{version} and state = 1 @@ -36,7 +36,7 @@ @@ -52,10 +52,6 @@ update model_dependency1 set parent_model = null - where parent_model like concat(#{repoId}, ':', #{identifier}, - - ':', #{version}, - - '%') + where JSON_CONTAINS(parent_model, #{parentModel}) \ No newline at end of file From c87603f9932b0c750ad303649648fde02afb74f1 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 13 Sep 2024 10:00:35 +0800 Subject: [PATCH 074/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++-- .../src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 0a7a56ad..e05e1086 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -615,7 +615,7 @@ public class ModelsServiceImpl implements ModelsService { Map metaMap = JsonUtils.objectToMap(modelMetaVo); YamlUtils.generateYamlFile(metaMap, metaPath, "metadata"); - String meta = JSON.toJSONString(metaMap); + String meta = JSON.toJSONString(modelMetaVo); DVCUtils.dvcInit(rootPath); // 配置远程S3地址 @@ -711,7 +711,7 @@ public class ModelsServiceImpl implements ModelsService { Map metaMap = JsonUtils.objectToMap(modelMetaVo); YamlUtils.generateYamlFile(metaMap, metaPath, "metadata"); - String meta = JSON.toJSONString(metaMap); + String meta = JSON.toJSONString(modelMetaVo); // 配置远程S3地址 String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java index 19d1e554..af902cb3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.vo; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ruoyi.platform.domain.dependencydomain.ProjectDepency; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -40,10 +41,10 @@ public class ModelMetaVo implements Serializable { private String modelSource; @ApiModelProperty(value = "训练数据集") - private List trainDatasets; + private List trainDatasets; @ApiModelProperty(value = "测试数据集") - private List testDatasets; + private List testDatasets; @ApiModelProperty(value = "参数") private HashMap params; @@ -80,5 +81,9 @@ public class ModelMetaVo implements Serializable { @ApiModelProperty(name = "relative_paths",value = "文件相对路径") private String relativePaths; + + @ApiModelProperty(name = "project_depency",value = "项目依赖") + private ProjectDepency projectDepency; + } From 1dadf81f94b5b7c75512cff9b352267c494e9a92 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 13 Sep 2024 11:03:35 +0800 Subject: [PATCH 075/381] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E6=8C=82=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DatasetVersionServiceImpl.java | 4 +- .../service/impl/ImageServiceImpl.java | 4 +- .../service/impl/JupyterServiceImpl.java | 14 ++++--- .../service/impl/TensorBoardServiceImpl.java | 10 +++-- .../ruoyi/platform/utils/K8sClientUtil.java | 42 +++++++++---------- .../com/ruoyi/platform/vo/FrameLogPathVo.java | 9 ++++ 6 files changed, 51 insertions(+), 32 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java index 9880410c..441ea786 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java @@ -165,7 +165,9 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { .findFirst() .ifPresent(datasetVersion -> { String url = datasetVersion.getUrl(); - response.put("path", url); +// response.put("path", url); + String path = bucketName + '/' + url.substring(0, url.lastIndexOf('/')); + response.put("path", path); }); response.put("content", datasetVersionList); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java index 5acc228b..faacf8dd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java @@ -61,7 +61,9 @@ public class ImageServiceImpl implements ImageService { @Resource private MinioService minioService; - @Value("${minio.dataReleaseBucketName}") +// @Value("${minio.dataReleaseBucketName}") +// private String bucketName; + @Value("${harbor.bucketName}") private String bucketName; @Value("${harbor.repository}") private String repository; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index 2904912c..3f2f7c9f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -90,23 +90,25 @@ public class JupyterServiceImpl implements JupyterService { // 提取数据集,模型信息,得到数据集模型的path Map dataset = JacksonUtil.parseJSONStr2Map(devEnvironment.getDataset()); - String datasetPath = (String) dataset.get("path"); + String datasetPath = "argo-workflow" + "/" + dataset.get("path"); +// String datasetPath = (String) dataset.get("path"); Map model = JacksonUtil.parseJSONStr2Map(devEnvironment.getModel()); - String modelPath = (String) model.get("path"); + String modelPath = "argo-workflow" + "/" + model.get("path"); +// String modelPath = (String) model.get("path"); LoginUser loginUser = SecurityUtils.getLoginUser(); //构造pod名称 String podName = loginUser.getUsername().toLowerCase() + "-editor-pod" + "-" + id; //新建编辑器的pvc -// String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; -// V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); + String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; + V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); //TODO 设置镜像可配置,这里先用默认镜像启动pod // 调用修改后的 createPod 方法,传入额外的参数 -// Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, pvc, devEnvironment, minioPvcName, datasetPath, modelPath); - Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, null, devEnvironment, minioPvcName, datasetPath, modelPath); + Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, pvc, devEnvironment, minioPvcName, datasetPath, modelPath); +// Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, null, devEnvironment, minioPvcName, datasetPath, modelPath); String url = masterIp + ":" + podPort; redisService.setCacheObject(podName, masterIp + ":" + podPort); devEnvironment.setStatus("Pending"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java index 747ee5e2..dca3651d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java @@ -59,13 +59,17 @@ public class TensorBoardServiceImpl implements TensorBoardService { @Override public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { - if (StringUtils.isEmpty(frameLogPathVo.getPath())) { - throw new Exception("存储路径为空"); + if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ + throw new Exception("存储路径或存储为空"); } +// if (StringUtils.isEmpty(frameLogPathVo.getPath())) { +// throw new Exception("存储路径为空"); +// } LoginUser loginUser = SecurityUtils.getLoginUser(); String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; - Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image); + Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); +// Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image); redisService.setCacheObject(podName, masterIp + ":" + podPort); return masterIp + ":" + podPort; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index fac560e8..49d56853 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -34,8 +34,8 @@ import java.util.*; @Component public class K8sClientUtil { - @Value("${jupyter.hostPath}") - private String hostPath; +// @Value("${jupyter.hostPath}") +// private String hostPath; private String http; private String token; @@ -314,8 +314,8 @@ public class K8sClientUtil { * @param image 镜像 * @return 创建成功的pod,的nodePort端口 */ - - public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String image) { + public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String pvcName, String image) { +// public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String image) { Map selector = new LinkedHashMap<>(); selector.put("k8s-jupyter", podName); @@ -366,8 +366,8 @@ public class K8sClientUtil { .endContainer() .addNewVolume() .withName("workspace") - .withHostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate")) -// .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) +// .withHostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate")) + .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) .endVolume() .withTerminationGracePeriodSeconds(14400L) .endSpec() @@ -449,25 +449,25 @@ public class K8sClientUtil { } } - // 配置卷和卷挂载 - List volumeMounts = new ArrayList<>(); - volumeMounts.add(new V1VolumeMount().name("workspace").mountPath("/opt/notebooks")); - volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/dataset").subPath(datasetPath).readOnly(true)); - volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/model").subPath(modelPath).readOnly(true)); - - List volumes = new ArrayList<>(); - volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/notebooks").type("DirectoryOrCreate"))); - volumes.add(new V1Volume().name("data").hostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate"))); - // 配置卷和卷挂载 // List volumeMounts = new ArrayList<>(); -// volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); -// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); -// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); +// volumeMounts.add(new V1VolumeMount().name("workspace").mountPath("/opt/notebooks")); +// volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/dataset").subPath(datasetPath).readOnly(true)); +// volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/model").subPath(modelPath).readOnly(true)); // // List volumes = new ArrayList<>(); -// volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); -// volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); +// volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/notebooks").type("DirectoryOrCreate"))); +// volumes.add(new V1Volume().name("data").hostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate"))); + + // 配置卷和卷挂载 + List volumeMounts = new ArrayList<>(); + volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); + volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); + + List volumes = new ArrayList<>(); + volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); + volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); //配置资源 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java index 31de2f73..e4c8bd26 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java @@ -10,6 +10,7 @@ public class FrameLogPathVo implements Serializable { String path; String namespace; + String pvcName; public String getPath() { return path; } @@ -25,4 +26,12 @@ public class FrameLogPathVo implements Serializable { public void setNamespace(String namespace) { this.namespace = namespace; } + + public String getPvcName() { + return pvcName; + } + + public void setPvcName(String pvcName) { + this.pvcName = pvcName; + } } From f7d71e330376dd82aac910d6ebd27108f2ea4129 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 13 Sep 2024 13:36:17 +0800 Subject: [PATCH 076/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java index af902cb3..f39e79e2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.vo; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.platform.domain.dependencydomain.ProjectDepency; +import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -53,7 +54,7 @@ public class ModelMetaVo implements Serializable { private HashMap metrics; @ApiModelProperty(value = "训练任务") - private String trainTask; + private TrainTaskDepency trainTask; @ApiModelProperty(value = "模型标签(模型能力)") private String modelTag; From 31cf861e879f84415feca5f7b1e340456b23fbdd Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 13 Sep 2024 14:14:21 +0800 Subject: [PATCH 077/381] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E5=BA=95=E5=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-node.sh | 10 +++++----- k8s/dockerfiles/auth-dockerfile | 2 +- k8s/dockerfiles/file-dockerfile | 2 +- k8s/dockerfiles/gateway-dockerfile | 2 +- k8s/dockerfiles/gen-dockerfile | 2 +- k8s/dockerfiles/job-dockerfile | 2 +- k8s/dockerfiles/managent-dockerfile | 2 +- k8s/dockerfiles/system-dockerfile | 2 +- k8s/dockerfiles/visual-dockerfile | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/k8s/build-node.sh b/k8s/build-node.sh index 9805d2ca..5639a72f 100644 --- a/k8s/build-node.sh +++ b/k8s/build-node.sh @@ -3,12 +3,12 @@ baseDir="/home/somuns/ci4s" cd ${baseDir}/react-ui -npm install +# npm install -if [ $? -ne 0 ]; then - echo "Failed to install npm depend package" - exit 1 -fi +#if [ $? -ne 0 ]; then +# echo "Failed to install npm depend package" +# exit 1 +#fi npm run build diff --git a/k8s/dockerfiles/auth-dockerfile b/k8s/dockerfiles/auth-dockerfile index 0eb3dc52..c55fcb88 100644 --- a/k8s/dockerfiles/auth-dockerfile +++ b/k8s/dockerfiles/auth-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/file-dockerfile b/k8s/dockerfiles/file-dockerfile index d5a2b843..ce175dde 100644 --- a/k8s/dockerfiles/file-dockerfile +++ b/k8s/dockerfiles/file-dockerfile @@ -1,5 +1,5 @@ # 基础镜像 -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 #FROM openjdk:8-jre # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/gateway-dockerfile b/k8s/dockerfiles/gateway-dockerfile index 4ce7ee42..d31960ff 100644 --- a/k8s/dockerfiles/gateway-dockerfile +++ b/k8s/dockerfiles/gateway-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/gen-dockerfile b/k8s/dockerfiles/gen-dockerfile index 8c871a89..0982cf6b 100644 --- a/k8s/dockerfiles/gen-dockerfile +++ b/k8s/dockerfiles/gen-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/job-dockerfile b/k8s/dockerfiles/job-dockerfile index dca8596c..2b8d026e 100644 --- a/k8s/dockerfiles/job-dockerfile +++ b/k8s/dockerfiles/job-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile index c4a1b85f..f3ac2be6 100644 --- a/k8s/dockerfiles/managent-dockerfile +++ b/k8s/dockerfiles/managent-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/system-dockerfile b/k8s/dockerfiles/system-dockerfile index f01b3c34..c4d3cc80 100644 --- a/k8s/dockerfiles/system-dockerfile +++ b/k8s/dockerfiles/system-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi diff --git a/k8s/dockerfiles/visual-dockerfile b/k8s/dockerfiles/visual-dockerfile index 34ba71b9..3a96fa3a 100644 --- a/k8s/dockerfiles/visual-dockerfile +++ b/k8s/dockerfiles/visual-dockerfile @@ -1,6 +1,6 @@ # 基础镜像 #FROM openjdk:8-jre -FROM 172.20.32.187/ci4s/openjdk:8-jre +FROM 172.20.32.187/ci4s/openjdk-dvc:2024829 # author MAINTAINER ruoyi From 81908b4b867d817d82f4010d623896e14a948fe5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 13 Sep 2024 14:16:05 +0800 Subject: [PATCH 078/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/build.sh b/k8s/build.sh index a0a3adee..ed30e9f1 100644 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -139,7 +139,7 @@ fi if [ "$service" == "all" ]; then # 编译前端 -# compile_front + compile_front # 编译java compile_java "all" From f29bb734a2e2b4cd32824d7237cb0fd58f2e5c7f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 13 Sep 2024 14:48:10 +0800 Subject: [PATCH 079/381] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=85=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B7=BB=E5=8A=A0=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4?= =?UTF-8?q?=EF=BC=8C=E6=A8=A1=E5=9E=8B=E5=A4=A7=E5=B0=8F=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ModelsServiceImpl.java | 8 ++++++++ .../java/com/ruoyi/platform/utils/FileUtil.java | 16 ++++++++++++++++ .../java/com/ruoyi/platform/vo/ModelMetaVo.java | 6 ++++++ 3 files changed, 30 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index e05e1086..281d9943 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -601,6 +601,7 @@ public class ModelsServiceImpl implements ModelsService { BeanUtils.copyProperties(modelsVo, modelMetaVo); modelMetaVo.setId(gitlinIid); modelMetaVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); + modelMetaVo.setCreateTime(DateUtils.getTime()); modelMetaVo.setUpdateTime(DateUtils.getTime()); modelMetaVo.setUsage("
" +
                     "# 克隆模型配置文件与存储参数到本地\n" +
@@ -612,6 +613,9 @@ public class ModelsServiceImpl implements ModelsService {
             modelMetaVo.setOwner(owner);
             modelMetaVo.setVersionDesc(modelMetaVo.getDescription());
             modelMetaVo.setRelativePaths(relatePath);
+            File folder = new File(modelPath);
+            long folderSize = FileUtil.getFolderSize(folder);
+            modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize));
 
             Map metaMap = JsonUtils.objectToMap(modelMetaVo);
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
@@ -695,6 +699,7 @@ public class ModelsServiceImpl implements ModelsService {
             ModelMetaVo modelMetaVo = new ModelMetaVo();
             BeanUtils.copyProperties(modelsVo, modelMetaVo);
             modelMetaVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login")));
+            modelMetaVo.setCreateTime(DateUtils.getTime());
             modelMetaVo.setUpdateTime(DateUtils.getTime());
             modelMetaVo.setUsage("
" +
                     "# 克隆模型配置文件与存储参数到本地\n" +
@@ -708,6 +713,9 @@ public class ModelsServiceImpl implements ModelsService {
             modelMetaVo.setModelTag(oldModelVo.getModelTag());
             modelMetaVo.setModelType(oldModelVo.getModelType());
             modelMetaVo.setRelativePaths(relatePath);
+            File folder = new File(modelPath);
+            long folderSize = FileUtil.getFolderSize(folder);
+            modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize));
 
             Map metaMap = JsonUtils.objectToMap(modelMetaVo);
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java
index c70b223a..58e7d84b 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java
@@ -44,5 +44,21 @@ public class FileUtil {
     }
 
 
+    public static long getFolderSize(File folder) {
+        long size = 0;
+        File[] files = folder.listFiles(); // 获取文件夹下所有文件和子目录
 
+        if (files != null) {
+            for (File file : files) {
+                if (file.isFile()) {
+                    // 如果是文件,则累加其大小
+                    size += file.length();
+                } else if (file.isDirectory()) {
+                    // 如果是子目录,则递归计算其大小
+                    size += getFolderSize(file);
+                }
+            }
+        }
+        return size;
+    }
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java
index f39e79e2..589255f7 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java
@@ -29,9 +29,15 @@ public class ModelMetaVo implements Serializable {
     @ApiModelProperty(value = "创建人")
     private String createBy;
 
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
     @ApiModelProperty(value = "更新时间")
     private String updateTime;
 
+    @ApiModelProperty(value = "模型大小")
+    private String modelSize;
+
     @ApiModelProperty(value = "训练镜像")
     private String image;
 

From 38ced879f4d424e6ffb8b3d87df5f4c11ec2a365 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Fri, 13 Sep 2024 14:59:29 +0800
Subject: [PATCH 080/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=BA=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ruoyi/platform/service/GitService.java    | 12 +++----
 .../platform/service/impl/GitServiceImpl.java | 18 ++++-------
 .../service/impl/ModelsServiceImpl.java       | 20 +++++++-----
 .../service/impl/NewDatasetServiceImpl.java   | 32 +++++++++----------
 4 files changed, 40 insertions(+), 42 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java
index a8e2ab79..4d9e0952 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java
@@ -12,17 +12,17 @@ public interface GitService {
     String checkoutToken();
 
     //输入token,项目名,tag,创建新项目,返回项目地址
-    Map createProject(GitProjectVo gitProjectVo) throws Exception;
+    Map createProject(String token,GitProjectVo gitProjectVo) throws Exception;
 
-    void createBranch(String owner, String projectName, String branchName, String oldBranchName) throws Exception;
+    void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception;
 
-    void createTopic(Integer id, String topicName) throws Exception;
+    void createTopic(String token,Integer id, String topicName) throws Exception;
 
-    List> getBrancheList(String owner, String projectName) throws Exception;
+    List> getBrancheList(String token,String owner, String projectName) throws Exception;
 
-    void deleteProject(String owner, String projectName) throws Exception;
+    void deleteProject(String token,String owner, String projectName) throws Exception;
 
-    void deleteBranch(String owner, String projectName, String branchName, String localPath) throws Exception;
+    void deleteBranch(String token,String owner, String projectName, String branchName, String localPath) throws Exception;
 
     Map getUserInfo(String token) throws Exception;
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
index b7573c4e..e3bf9e8d 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
@@ -98,20 +98,18 @@ public class GitServiceImpl implements GitService {
     }
 
     @Override
-    public Map createProject(GitProjectVo gitProjectVo) throws Exception {
-        String token = this.checkoutToken();
+    public Map createProject(String token,GitProjectVo gitProjectVo) throws Exception {
         String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token);
         return JsonUtils.jsonToMap(userReq);
     }
 
     @Override
-    public void createBranch(String owner, String projectName, String branchName, String oldBranchName) throws Exception {
+    public void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception {
         //https://www.gitlink.org.cn/api/v1/fanshuai/testdssa8755/branches.json
 //        {
 //            "new_branch_name": "SsS",
 //                "old_branch_name": "master"
 //        }
-        String token = this.checkoutToken();
         String createBranchUrl = "https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches.json";
         Map resMap = new HashMap<>();
         resMap.put("new_branch_name", branchName);
@@ -121,9 +119,8 @@ public class GitServiceImpl implements GitService {
     }
 
     @Override
-    public void createTopic(Integer id, String topicName) throws Exception {
+    public void createTopic(String token,Integer id, String topicName) throws Exception {
         // https://www.gitlink.org.cn/api/v1/project_topics.json
-        String token = this.checkoutToken();
         Map resMap = new HashMap<>();
         resMap.put("project_id", id);
         resMap.put("name", topicName);
@@ -131,8 +128,7 @@ public class GitServiceImpl implements GitService {
     }
 
     @Override
-    public List> getBrancheList(String owner, String projectName) throws Exception {
-        String token = checkoutToken();
+    public List> getBrancheList(String token,String owner, String projectName) throws Exception {
         String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token);
         // 解析响应JSON
         if (StringUtils.isEmpty(req)) {
@@ -144,20 +140,18 @@ public class GitServiceImpl implements GitService {
     }
 
     @Override
-    public void deleteProject(String owner, String projectName) throws Exception {
-        String token = this.checkoutToken();
+    public void deleteProject(String token,String owner, String projectName) throws Exception {
         HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/" + owner + "/" + projectName + ".json", token);
     }
 
     @Override
-    public void deleteBranch(String owner, String projectName, String branchName, String localPath) throws Exception {
+    public void deleteBranch(String token,String owner, String projectName, String branchName, String localPath) throws Exception {
         try (Git git = Git.open(new File(localPath))) {
             git.checkout().setName("master").call();
             git.branchDelete().setBranchNames(branchName).setForce(true).call();
         } catch (IOException | GitAPIException e) {
             log.error("Exception occurred while creating local branch based on master",e);
         }
-        String token = this.checkoutToken();
         HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token);
     }
 
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index e05e1086..5759a18b 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -540,6 +540,7 @@ public class ModelsServiceImpl implements ModelsService {
     @Override
     public String newCreateModel(ModelsVo modelsVo) {
         try {
+            String token = gitService.checkoutToken();
             LoginUser loginUser = SecurityUtils.getLoginUser();
             String ci4sUsername = loginUser.getUsername();
             String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
@@ -571,17 +572,17 @@ public class ModelsServiceImpl implements ModelsService {
             gitProjectVo.setUserId(userId);
 
             // 创建项目
-            Map project = gitService.createProject(gitProjectVo);
+            Map project = gitService.createProject(token,gitProjectVo);
             Integer gitlinIid = (Integer) project.get("id");
             if (gitlinIid == null) {
                 throw new Exception("创建模型失败:" + project.get("message"));
             }
             // 创建分支
-            gitService.createBranch((String) userInfo.get("login"), repositoryName, modelsVo.getVersion(), "master");
+            gitService.createBranch(token,(String) userInfo.get("login"), repositoryName, modelsVo.getVersion(), "master");
             // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType
-            gitService.createTopic(gitlinIid, "ci4s_model");
-            gitService.createTopic(gitlinIid, "modeltag_" + modelsVo.getModelTag());
-            gitService.createTopic(gitlinIid, "modeltype_" + modelsVo.getModelType());
+            gitService.createTopic(token,gitlinIid, "ci4s_model");
+            gitService.createTopic(token,gitlinIid, "modeltag_" + modelsVo.getModelTag());
+            gitService.createTopic(token,gitlinIid, "modeltype_" + modelsVo.getModelType());
 
             String branchName = modelsVo.getVersion();
             String owner = (String) userInfo.get("login");
@@ -874,7 +875,8 @@ public class ModelsServiceImpl implements ModelsService {
 
     @Override
     public List> getVersionList(String identifier, String owner) throws Exception {
-        List> brancheList = gitService.getBrancheList(owner, identifier);
+        String token = gitService.checkoutToken();
+        List> brancheList = gitService.getBrancheList(token,owner, identifier);
         return brancheList.stream()
                 .filter(branch -> !"master".equals(branch.get("name")))
                 .collect(Collectors.toList());
@@ -940,7 +942,8 @@ public class ModelsServiceImpl implements ModelsService {
 
     @Override
     public void deleteModel(Integer repoId, String identifier, String owner) throws Exception {
-        gitService.deleteProject(owner, identifier);
+        String token = gitService.checkoutToken();
+        gitService.deleteProject(token,owner, identifier);
         //删除模型依赖
         modelDependency1Dao.deleteModel(repoId, identifier, owner, null);
 
@@ -953,7 +956,8 @@ public class ModelsServiceImpl implements ModelsService {
 
     @Override
     public void deleteVersion(Integer repoId, String identifier, String owner, String version, String relativePath) throws Exception {
-        gitService.deleteBranch(owner, identifier, version, localPath + relativePath);
+        String token = gitService.checkoutToken();
+        gitService.deleteBranch(token,owner, identifier, version, localPath + relativePath);
         //删除模型依赖
         modelDependency1Dao.deleteModel(repoId, identifier, owner, version);
         HashMap map = new HashMap<>();
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 6930efbc..f1efd2e2 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -64,6 +64,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     private DatasetTempStorageService datasetTempStorageService;
     @Override
     public String newCreateDataset(NewDatasetVo datasetVo) throws Exception {
+        String token = gitService.checkoutToken();
         Jedis jedis = new Jedis(redisHost);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
@@ -82,18 +83,18 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         gitProjectVo.setPrivate(!datasetVo.getIsPublic());
         gitProjectVo.setUserId(userId);
         // 创建项目
-        Map project = gitService.createProject(gitProjectVo);
+        Map project = gitService.createProject(token,gitProjectVo);
         Integer gitlinIid = (Integer) project.get("id");
         if (gitlinIid == null){
             throw new Exception("创建数据集失败:"+project.get("message"));
         }
         // 创建分支
         String branchName = datasetVo.getVersion();
-        gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master");
+        gitService.createBranch(token,(String) userInfo.get("login"), repositoryName, branchName, "master");
         // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType
-        gitService.createTopic(gitlinIid, "ci4s_dataset");
-        gitService.createTopic(gitlinIid, "DataTag_" + datasetVo.getDataTag());
-        gitService.createTopic( gitlinIid, "DataType_" + datasetVo.getDataType());
+        gitService.createTopic(token,gitlinIid, "ci4s_dataset");
+        gitService.createTopic(token,gitlinIid, "DataTag_" + datasetVo.getDataTag());
+        gitService.createTopic(token, gitlinIid, "DataType_" + datasetVo.getDataType());
         // 得到项目地址
         String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git";
 
@@ -145,6 +146,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     }
 
     public String newCreateVersion(NewDatasetVo datasetVo) throws Exception {
+        gitService.checkoutToken();
         Jedis jedis = new Jedis(redisHost);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
@@ -215,6 +217,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception {
+        gitService.checkoutToken();
         Jedis jedis = new Jedis(redisHost);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
@@ -242,6 +245,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception {
+        gitService.checkoutToken();
         Jedis jedis = new Jedis(redisHost);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
@@ -305,7 +309,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public List> getVersionList(String repo, String owner) throws Exception {
-        List> brancheList = gitService.getBrancheList(owner, repo);
+        String token = gitService.checkoutToken();
+        List> brancheList = gitService.getBrancheList(token,owner, repo);
         return brancheList.stream()
                 .filter(branch -> !"master".equals(branch.get("name")))
                 .collect(Collectors.toList());
@@ -313,20 +318,14 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public void deleteDatasetNew(String repo, String owner) throws Exception {
-        Jedis jedis = new Jedis(redisHost);
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        String ci4sUsername = loginUser.getUsername();
-        String token = jedis.get(ci4sUsername+"_gitToken");
-        gitService.deleteProject(owner, repo);
+        String token = gitService.checkoutToken();
+        gitService.deleteProject(token,owner, repo);
     }
 
     @Override
     public void deleteDatasetVersionNew(String repo, String owner, String version, String relativePath) throws Exception {
-        Jedis jedis = new Jedis(redisHost);
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        String ci4sUsername = loginUser.getUsername();
-        String token = jedis.get(ci4sUsername+"_gitToken");
-        gitService.deleteBranch(owner, repo, version, localPathlocal + relativePath);
+        String token = gitService.checkoutToken();
+        gitService.deleteBranch(token,owner, repo, version, localPathlocal + relativePath);
     }
 
     @Override
@@ -341,6 +340,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             long sizeInBytes = file.getSize();
             String formattedSize = FileUtil.formatFileSize(sizeInBytes);
             File targetFile = new File(path, file.getOriginalFilename());
+
             // 确保目录存在
             targetFile.getParentFile().mkdirs();
             // 保存文件到目标路径

From aba0396e063c5bc856915b2eca8010021d141be5 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Fri, 13 Sep 2024 15:37:17 +0800
Subject: [PATCH 081/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=BA=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../platform/service/impl/GitServiceImpl.java |  7 ++--
 .../service/impl/ModelsServiceImpl.java       |  4 ++-
 .../service/impl/NewDatasetServiceImpl.java   | 34 ++++++-------------
 3 files changed, 17 insertions(+), 28 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
index e3bf9e8d..f5b4333f 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
@@ -28,7 +28,8 @@ public class GitServiceImpl implements GitService {
 
     @Value("${spring.redis.host}")
     private String redisHost;
-
+    @Value("${spring.redis.port}")
+    private Integer redisPort;
     private static final Logger log = LoggerFactory.getLogger(GitServiceImpl.class);
 
     @Override
@@ -61,7 +62,7 @@ public class GitServiceImpl implements GitService {
             LoginUser loginUser = SecurityUtils.getLoginUser();
             String ci4sUsername = loginUser.getUsername();
             // 将access_token存入Redis
-            Jedis jedis = new Jedis(redisHost);
+            Jedis jedis = new Jedis(redisHost,redisPort);
             jedis.set(ci4sUsername + "_gitToken", accessToken);
             jedis.set(ci4sUsername + "_gitUserInfo", userReq);
             return accessToken;
@@ -72,7 +73,7 @@ public class GitServiceImpl implements GitService {
     }
 
     public String checkoutToken() {
-        Jedis jedis = new Jedis(redisHost);
+        Jedis jedis = new Jedis(redisHost,redisPort);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
         String token = jedis.get(ci4sUsername + "_gitToken");
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 5759a18b..c352fe21 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -86,6 +86,8 @@ public class ModelsServiceImpl implements ModelsService {
 
     @Value("${spring.redis.host}")
     private String redisHost;
+    @Value("${spring.redis.port}")
+    private Integer redisPort;
     @Value("${git.endpoint}")
     String gitendpoint;
     @Value("${git.localPath}")
@@ -1048,7 +1050,7 @@ public class ModelsServiceImpl implements ModelsService {
     }
 
     Map getUserInfo(String ci4sUsername, String gitLinkUsername, String gitLinkPassword) throws IOException {
-        Jedis jedis = new Jedis(redisHost);
+        Jedis jedis = new Jedis(redisHost,redisPort);
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         if (userReq == null) {
             gitService.login(gitLinkUsername, gitLinkPassword);
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index f1efd2e2..806ee48a 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -50,6 +50,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     private DvcService dvcService;
     @Value("${spring.redis.host}")
     private String redisHost;
+    @Value("${spring.redis.port}")
+    private Integer redisPort;
     @Value("${minio.accessKey}")
     String accessKeyId;
     @Value("${minio.secretKey}")
@@ -65,7 +67,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     @Override
     public String newCreateDataset(NewDatasetVo datasetVo) throws Exception {
         String token = gitService.checkoutToken();
-        Jedis jedis = new Jedis(redisHost);
+        Jedis jedis = new Jedis(redisHost,redisPort);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
@@ -146,11 +148,10 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     }
 
     public String newCreateVersion(NewDatasetVo datasetVo) throws Exception {
-        gitService.checkoutToken();
-        Jedis jedis = new Jedis(redisHost);
+        String token = gitService.checkoutToken();
+        Jedis jedis = new Jedis(redisHost,redisPort);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
-        String token = jedis.get(ci4sUsername + "_gitToken");
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
         String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
@@ -217,11 +218,10 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception {
-        gitService.checkoutToken();
-        Jedis jedis = new Jedis(redisHost);
+        String token = gitService.checkoutToken();
+        Jedis jedis = new Jedis(redisHost,redisPort);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
-        String token = jedis.get(ci4sUsername + "_gitToken");
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         Map userInfo = JsonUtils.jsonToMap(userReq);
         // 拼接查询url
@@ -245,11 +245,10 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
     @Override
     public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception {
-        gitService.checkoutToken();
-        Jedis jedis = new Jedis(redisHost);
+        String token = gitService.checkoutToken();
+        Jedis jedis = new Jedis(redisHost,redisPort);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
-        String token = jedis.get(ci4sUsername + "_gitToken");
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         Map userInfo = JsonUtils.jsonToMap(userReq);
         Integer userId = (Integer) userInfo.get("user_id");
@@ -381,24 +380,11 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     public ResponseEntity downloadAllDatasetFilesNew(String name,Integer id, String version) throws Exception {
         // 命令行操作 git clone 项目地址
         LoginUser loginUser = SecurityUtils.getLoginUser();
-        String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
-        String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
         String ci4sUsername = loginUser.getUsername();
-        Jedis jedis = new Jedis(redisHost);
+        Jedis jedis = new Jedis(redisHost,redisPort);
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         Map userInfo = JsonUtils.jsonToMap(userReq);
         String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+id+"/"+name;
-        //不需要,没意义,我查看详情已经是最新的了
-//        if(folder.exists() && folder.isDirectory()){
-//            //切换分支
-//            DVCUtils.gitCheckoutBranch(localPath, version);
-//            //pull
-//            DVCUtils.gitPull(localPath,gitLinkUsername, gitLinkPassword);
-//            //dvc pull
-//            DVCUtils.dvcPull(localPath);
-//        }else {
-//            DVCUtils.gitClone(localPath, projectUrl, version, gitLinkUsername, gitLinkPassword);
-//        }
 
         // 打包 data 文件夹
         String dataFolderPath = localPath + "/data";

From f79c1933930e1613105099a2e4d8f38ea582c9fd Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Fri, 13 Sep 2024 16:33:41 +0800
Subject: [PATCH 082/381] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=85=83=E6=95=B0?=
 =?UTF-8?q?=E6=8D=AE=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 281d9943..d5fa36f2 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -617,7 +617,7 @@ public class ModelsServiceImpl implements ModelsService {
             long folderSize = FileUtil.getFolderSize(folder);
             modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize));
 
-            Map metaMap = JsonUtils.objectToMap(modelMetaVo);
+            Map metaMap = JSON.parseObject(JSON.toJSONString(modelMetaVo), Map.class);
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
             String meta = JSON.toJSONString(modelMetaVo);
 
@@ -717,7 +717,7 @@ public class ModelsServiceImpl implements ModelsService {
             long folderSize = FileUtil.getFolderSize(folder);
             modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize));
 
-            Map metaMap = JsonUtils.objectToMap(modelMetaVo);
+            Map metaMap = JSON.parseObject(JSON.toJSONString(modelMetaVo), Map.class);
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
             String meta = JSON.toJSONString(modelMetaVo);
 
@@ -911,7 +911,8 @@ public class ModelsServiceImpl implements ModelsService {
 
         Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + name + "/metadata/metadata.yaml");
 
-        ModelsVo modelsVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelsVo.class);
+        String jsonString = JSON.toJSONString(stringObjectMap);
+        ModelsVo modelsVo = JSON.parseObject(jsonString, ModelsVo.class);
 
         List versionVos = new ArrayList<>();
         if (!fileDetailsAfterGitPull.isEmpty()) {

From d5f5bae4ce54e02da5c566a5e3626b154adac457 Mon Sep 17 00:00:00 2001
From: somunslotus 
Date: Fri, 13 Sep 2024 17:25:58 +0800
Subject: [PATCH 083/381] x

---
 k8s/template-yaml/k8s-7management.yaml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml
index 7e39f6f2..222eb354 100644
--- a/k8s/template-yaml/k8s-7management.yaml
+++ b/k8s/template-yaml/k8s-7management.yaml
@@ -18,7 +18,11 @@ spec:
         image: ${k8s-7management-image}
         ports:
         - containerPort: 9213
-
+        env:
+        - name: http_proxy
+          value: "http://172.20.32.253:3128"
+        - name: https_proxy
+          value: "http://172.20.32.253:3128"
 ---
 apiVersion: v1
 kind: Service

From 6bbaa5a4b8d01d9f08b18f616ea3d35398b30b85 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 10:29:54 +0800
Subject: [PATCH 084/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index f3ac2be6..445cf03c 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,6 +1,6 @@
 # 基础镜像
-#FROM  openjdk:8-jre
-FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
+FROM  openjdk:8-jre
+#FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi
 

From 6a737ce85501e04f49d30d7996c15e46c0021127 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 10:35:36 +0800
Subject: [PATCH 085/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index 445cf03c..c461d347 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,5 +1,5 @@
 # 基础镜像
-FROM  openjdk:8-jre
+FROM  172.20.32.187/ci4s/openjdk:8-jre
 #FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi

From 07cf1250ac81d1cc0d5cdf17dac03caee02cf533 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 11:00:50 +0800
Subject: [PATCH 086/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index c461d347..ee705559 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,5 +1,5 @@
 # 基础镜像
-FROM  172.20.32.187/ci4s/openjdk:8-jre
+FROM  172.20.32.187/ci4s/jdk:1.8_161
 #FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi

From f6e7ddd1bf4ef82bfdbb51464b5212274c4887f6 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 11:48:28 +0800
Subject: [PATCH 087/381] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../platform/service/impl/GitServiceImpl.java | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
index f5b4333f..850edd8b 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
@@ -30,6 +30,9 @@ public class GitServiceImpl implements GitService {
     private String redisHost;
     @Value("${spring.redis.port}")
     private Integer redisPort;
+    @Value("${git.endpoint}")
+    String gitendpoint;
+
     private static final Logger log = LoggerFactory.getLogger(GitServiceImpl.class);
 
     @Override
@@ -43,7 +46,7 @@ public class GitServiceImpl implements GitService {
         params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE");
         try {
             // 发送POST请求
-            String req = HttpUtils.sendPostRequest("https://www.gitlink.org.cn/oauth/token", null, JsonUtils.mapToJson(params));
+            String req = HttpUtils.sendPostRequest(gitendpoint + "/oauth/token", null, JsonUtils.mapToJson(params));
             // 解析响应JSON
             if (StringUtils.isEmpty(req)) {
                 throw new RuntimeException("终止响应内容为空。");
@@ -55,7 +58,7 @@ public class GitServiceImpl implements GitService {
             String accessToken = (String) runResMap.get("access_token");
 
             //通过access_token获取用户信息
-            String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json", null, accessToken);
+            String userReq = HttpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json", null, accessToken);
             if (StringUtils.isEmpty(userReq)) {
                 throw new RuntimeException("终止响应内容为空。");
             }
@@ -100,7 +103,7 @@ public class GitServiceImpl implements GitService {
 
     @Override
     public Map createProject(String token,GitProjectVo gitProjectVo) throws Exception {
-        String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token);
+        String userReq = HttpUtils.sendPostWithToken(gitendpoint + "/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token);
         return JsonUtils.jsonToMap(userReq);
     }
 
@@ -125,12 +128,12 @@ public class GitServiceImpl implements GitService {
         Map resMap = new HashMap<>();
         resMap.put("project_id", id);
         resMap.put("name", topicName);
-        String req = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/v1/project_topics.json", JsonUtils.objectToJson(resMap), token);
+        String req = HttpUtils.sendPostWithToken(gitendpoint + "/api/v1/project_topics.json", JsonUtils.objectToJson(resMap), token);
     }
 
     @Override
     public List> getBrancheList(String token,String owner, String projectName) throws Exception {
-        String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token);
+        String req = HttpUtils.sendGetWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token);
         // 解析响应JSON
         if (StringUtils.isEmpty(req)) {
             throw new RuntimeException("终止响应内容为空。");
@@ -142,7 +145,7 @@ public class GitServiceImpl implements GitService {
 
     @Override
     public void deleteProject(String token,String owner, String projectName) throws Exception {
-        HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/" + owner + "/" + projectName + ".json", token);
+        HttpUtils.sendDeleteRequest(gitendpoint + "/api/" + owner + "/" + projectName + ".json", token);
     }
 
     @Override
@@ -153,12 +156,12 @@ public class GitServiceImpl implements GitService {
         } catch (IOException | GitAPIException e) {
             log.error("Exception occurred while creating local branch based on master",e);
         }
-        HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token);
+        HttpUtils.sendDeleteRequest(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token);
     }
 
     @Override
     public Map getUserInfo(String token) throws Exception {
-        String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, token);
+        String userReq = HttpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json",null, token);
         if (StringUtils.isEmpty(userReq)){
             return null;
         }

From 1155def01882e446dc3fda20e942f020f2a0716e Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 13:44:11 +0800
Subject: [PATCH 088/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index ee705559..8a13e00a 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,5 +1,5 @@
 # 基础镜像
-FROM  172.20.32.187/ci4s/jdk:1.8_161
+FROM  172.20.32.187/ci4s/jdk:1.8_u422
 #FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi

From 7e90541d4c99bec7f11ff41aa74b10671069a61f Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 13:45:54 +0800
Subject: [PATCH 089/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index 8a13e00a..34474d61 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,6 +1,6 @@
 # 基础镜像
-FROM  172.20.32.187/ci4s/jdk:1.8_u422
-#FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
+#FROM  172.20.32.187/ci4s/jdk:1.8_u422
+FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi
 

From d60b57af023501b2afac24fcc2e643b80abc1c06 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 13:48:08 +0800
Subject: [PATCH 090/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/main/java/com/ruoyi/platform/utils/HttpUtils.java        | 1 +
 1 file changed, 1 insertion(+)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java
index 7a3d5518..1de5d84e 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java
@@ -110,6 +110,7 @@ public class HttpUtils {
      * @return 所代表远程资源的响应结果
      */
     public static String sendGetWithToken(String url, String param, String token) {
+        System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
         String result = "";
         try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
             URIBuilder uriBuilder = new URIBuilder(url);

From 696bcd0a20c9116b994de2b32ea8649a05cf7a5e Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 13:56:07 +0800
Subject: [PATCH 091/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index 34474d61..c461d347 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,6 +1,6 @@
 # 基础镜像
-#FROM  172.20.32.187/ci4s/jdk:1.8_u422
-FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
+FROM  172.20.32.187/ci4s/openjdk:8-jre
+#FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi
 

From b610ae73cd5a8dfe3bf34432e3fd1c63988d44c5 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 13:59:35 +0800
Subject: [PATCH 092/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index c461d347..ee705559 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,5 +1,5 @@
 # 基础镜像
-FROM  172.20.32.187/ci4s/openjdk:8-jre
+FROM  172.20.32.187/ci4s/jdk:1.8_161
 #FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi

From 67d62678de0b85f704424ae0f47d1e17994f2951 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Sat, 14 Sep 2024 14:46:18 +0800
Subject: [PATCH 093/381] =?UTF-8?q?ssl=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=B0=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/dockerfiles/managent-dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index ee705559..7338f094 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,5 +1,5 @@
 # 基础镜像
-FROM  172.20.32.187/ci4s/jdk:1.8_161
+FROM  172.20.32.187/ci4s/openjdk:8u162
 #FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi

From d87b013ed667299d8ac0ab9c3da8ebd3e92fce58 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Sat, 14 Sep 2024 15:07:39 +0800
Subject: [PATCH 094/381] =?UTF-8?q?=E6=94=B9=E9=80=A0=E4=B8=BA=E5=8F=AF?=
 =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BD=BF=E7=94=A8=E4=BB=A3=E7=90=86=E6=9C=8D?=
 =?UTF-8?q?=E5=8A=A1=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../platform/service/impl/AimServiceImpl.java |  8 +++---
 .../impl/ExperimentInsServiceImpl.java        |  8 +++---
 .../service/impl/ExperimentServiceImpl.java   |  9 ++++---
 .../platform/service/impl/GitServiceImpl.java | 25 ++++++++++---------
 .../service/impl/ModelsServiceImpl.java       |  7 +++---
 .../service/impl/NewDatasetServiceImpl.java   |  6 +++--
 .../service/impl/WorkflowServiceImpl.java     |  8 +++---
 .../src/main/resources/bootstrap.yml          | 16 +++---------
 8 files changed, 43 insertions(+), 44 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java
index 338fab19..943a1dc4 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java
@@ -1,14 +1,12 @@
 package com.ruoyi.platform.service.impl;
 
 import com.ruoyi.platform.domain.ExperimentIns;
-import com.ruoyi.platform.domain.ModelDependency;
 import com.ruoyi.platform.service.AimService;
 import com.ruoyi.platform.service.ExperimentInsService;
-import com.ruoyi.platform.service.ModelDependencyService;
 import com.ruoyi.platform.utils.AIM64EncoderUtil;
-import com.ruoyi.platform.utils.HttpUtils;
 import com.ruoyi.platform.utils.JacksonUtil;
 import com.ruoyi.platform.utils.JsonUtils;
+import com.ruoyi.platform.utils.NewHttpUtils;
 import com.ruoyi.platform.vo.InsMetricInfoVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -28,6 +26,8 @@ public class AimServiceImpl implements AimService {
     private String aimUrl;
     @Value("${aim.proxyUrl}")
     private String aimProxyUrl;
+    @Resource
+    private NewHttpUtils httpUtils;
 
     @Override
     public List getExpTrainInfos(Integer experimentId) throws Exception {
@@ -52,7 +52,7 @@ public class AimServiceImpl implements AimService {
         }
         String encodedUrlString = URLEncoder.encode("run.experiment==\""+experimentName+"\"", "UTF-8");
         String url = aimProxyUrl+"/api/runs/search/run?query="+encodedUrlString;
-        String s = HttpUtils.sendGetRequest(url);
+        String s = httpUtils.sendGet(url,null);
         List> response = JacksonUtil.parseJSONStr2MapList(s);
         System.out.println("response: "+JacksonUtil.toJSONString(response));
         if (response == null || response.size() == 0){
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java
index 5c04914b..e9457bcb 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java
@@ -56,6 +56,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
     @Value("${minio.endpoint}")
     private String minioEndpoint;
     @Resource
+    private NewHttpUtils httpUtils;
+    @Resource
     private K8sClientUtil k8sClientUtil;
     private final MinioUtil minioUtil;
     public ExperimentInsServiceImpl(MinioUtil minioUtil) {
@@ -263,7 +265,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
 
         try {
             // 发送POST请求到Argo工作流状态查询接口,并将请求数据转换为JSON
-            String req = HttpUtils.sendPost(argoUrl + argoWorkflowStatus, JsonUtils.mapToJson(res));
+            String req = httpUtils.sendPost(argoUrl + argoWorkflowStatus,null, JsonUtils.mapToJson(res));
             // 检查响应是否为空或无内容
             if (req == null || StringUtils.isEmpty(req)) {
                 throw new RuntimeException("工作流状态响应为空。");
@@ -357,7 +359,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
 
         try {
             // 发送POST请求到Argo工作流状态查询接口,并将请求数据转换为JSON
-            String req = HttpUtils.sendPost(argoUrl + argoWorkflowTermination, JsonUtils.mapToJson(res));
+            String req = httpUtils.sendPost(argoUrl + argoWorkflowTermination,null, JsonUtils.mapToJson(res));
             // 检查响应是否为空或无内容
             if (StringUtils.isEmpty(req)) {
                 throw new RuntimeException("终止响应内容为空。");
@@ -415,7 +417,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
 
         try {
             // 发送POST请求到Argo工作流日志查询接口,并将请求数据转换为JSON
-            String req = HttpUtils.sendPost(argoUrl + argoWorkflowLog, JsonUtils.mapToJson(res));
+            String req = httpUtils.sendPost(argoUrl + argoWorkflowLog, null,JsonUtils.mapToJson(res));
             // 检查响应是否为空或无内容
             if (StringUtils.isEmpty(req)) {
                 throw new RuntimeException("响应内容为空");
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
index 41f9d68a..811253e7 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
@@ -8,9 +8,9 @@ import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency;
 import com.ruoyi.platform.mapper.ExperimentDao;
 import com.ruoyi.platform.mapper.ExperimentInsDao;
 import com.ruoyi.platform.service.*;
-import com.ruoyi.platform.utils.HttpUtils;
 import com.ruoyi.platform.utils.JacksonUtil;
 import com.ruoyi.platform.utils.JsonUtils;
+import com.ruoyi.platform.utils.NewHttpUtils;
 import com.ruoyi.system.api.model.LoginUser;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -55,7 +55,8 @@ public class ExperimentServiceImpl implements ExperimentService {
     @Resource
     @Lazy
     private ExperimentInsService experimentInsService;
-
+    @Resource
+    private NewHttpUtils httpUtils;
     @Value("${argo.url}")
     private String  argoUrl;
     @Value("${argo.convert}")
@@ -222,7 +223,7 @@ public class ExperimentServiceImpl implements ExperimentService {
         String dag = workflow.getDag();
         // 调argo转换接口
         try {
-            String convertRes = HttpUtils.sendPost(argoUrl + argoConvert, dag);
+            String convertRes = httpUtils.sendPost(argoUrl + argoConvert,null, dag);
             if (convertRes == null || StringUtils.isEmpty(convertRes)) {
                 throw new RuntimeException("转换流水线失败");
             }
@@ -241,7 +242,7 @@ public class ExperimentServiceImpl implements ExperimentService {
 
             Map output = (Map) converMap.get("output");
             // 调argo运行接口
-            String runRes = HttpUtils.sendPost(argoUrl + argoWorkflowRun, JsonUtils.mapToJson(runReqMap));
+            String runRes = httpUtils.sendPost(argoUrl + argoWorkflowRun,null, JsonUtils.mapToJson(runReqMap));
 
             if (runRes == null || StringUtils.isEmpty(runRes)) {
                 throw new RuntimeException("Failed to run workflow.");
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
index 850edd8b..ce582396 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
@@ -2,9 +2,9 @@ package com.ruoyi.platform.service.impl;
 
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.platform.service.GitService;
-import com.ruoyi.platform.utils.HttpUtils;
 import com.ruoyi.platform.utils.JacksonUtil;
 import com.ruoyi.platform.utils.JsonUtils;
+import com.ruoyi.platform.utils.NewHttpUtils;
 import com.ruoyi.platform.vo.GitProjectVo;
 import com.ruoyi.system.api.model.LoginUser;
 import org.apache.commons.lang3.StringUtils;
@@ -16,9 +16,9 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import redis.clients.jedis.Jedis;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,7 +32,8 @@ public class GitServiceImpl implements GitService {
     private Integer redisPort;
     @Value("${git.endpoint}")
     String gitendpoint;
-
+    @Resource
+    private NewHttpUtils httpUtils;
     private static final Logger log = LoggerFactory.getLogger(GitServiceImpl.class);
 
     @Override
@@ -46,7 +47,7 @@ public class GitServiceImpl implements GitService {
         params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE");
         try {
             // 发送POST请求
-            String req = HttpUtils.sendPostRequest(gitendpoint + "/oauth/token", null, JsonUtils.mapToJson(params));
+            String req = httpUtils.sendPost(gitendpoint + "/oauth/token", null,JsonUtils.mapToJson(params));
             // 解析响应JSON
             if (StringUtils.isEmpty(req)) {
                 throw new RuntimeException("终止响应内容为空。");
@@ -58,7 +59,7 @@ public class GitServiceImpl implements GitService {
             String accessToken = (String) runResMap.get("access_token");
 
             //通过access_token获取用户信息
-            String userReq = HttpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json", null, accessToken);
+            String userReq = httpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json", null, accessToken);
             if (StringUtils.isEmpty(userReq)) {
                 throw new RuntimeException("终止响应内容为空。");
             }
@@ -103,7 +104,7 @@ public class GitServiceImpl implements GitService {
 
     @Override
     public Map createProject(String token,GitProjectVo gitProjectVo) throws Exception {
-        String userReq = HttpUtils.sendPostWithToken(gitendpoint + "/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token);
+        String userReq = httpUtils.sendPostWithToken(gitendpoint + "/api/projects.json",null, token,JsonUtils.objectToJson(gitProjectVo));
         return JsonUtils.jsonToMap(userReq);
     }
 
@@ -118,7 +119,7 @@ public class GitServiceImpl implements GitService {
         Map resMap = new HashMap<>();
         resMap.put("new_branch_name", branchName);
         resMap.put("old_branch_name", oldBranchName);
-        String req = HttpUtils.sendPostWithToken(createBranchUrl, JsonUtils.objectToJson(resMap), token);
+        String req = httpUtils.sendPostWithToken(createBranchUrl, null, token,JsonUtils.objectToJson(resMap));
         System.out.println(req);
     }
 
@@ -128,12 +129,12 @@ public class GitServiceImpl implements GitService {
         Map resMap = new HashMap<>();
         resMap.put("project_id", id);
         resMap.put("name", topicName);
-        String req = HttpUtils.sendPostWithToken(gitendpoint + "/api/v1/project_topics.json", JsonUtils.objectToJson(resMap), token);
+        String req = httpUtils.sendPostWithToken(gitendpoint + "/api/v1/project_topics.json",null, token ,JsonUtils.objectToJson(resMap));
     }
 
     @Override
     public List> getBrancheList(String token,String owner, String projectName) throws Exception {
-        String req = HttpUtils.sendGetWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token);
+        String req = httpUtils.sendGetWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token);
         // 解析响应JSON
         if (StringUtils.isEmpty(req)) {
             throw new RuntimeException("终止响应内容为空。");
@@ -145,7 +146,7 @@ public class GitServiceImpl implements GitService {
 
     @Override
     public void deleteProject(String token,String owner, String projectName) throws Exception {
-        HttpUtils.sendDeleteRequest(gitendpoint + "/api/" + owner + "/" + projectName + ".json", token);
+        httpUtils.sendDeleteWithToken(gitendpoint + "/api/" + owner + "/" + projectName + ".json", null, token);
     }
 
     @Override
@@ -156,12 +157,12 @@ public class GitServiceImpl implements GitService {
         } catch (IOException | GitAPIException e) {
             log.error("Exception occurred while creating local branch based on master",e);
         }
-        HttpUtils.sendDeleteRequest(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token);
+        httpUtils.sendDeleteWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", null, token);
     }
 
     @Override
     public Map getUserInfo(String token) throws Exception {
-        String userReq = HttpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json",null, token);
+        String userReq = httpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json",null, token);
         if (StringUtils.isEmpty(userReq)){
             return null;
         }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 6513cb5c..ad2cc90a 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -76,7 +76,8 @@ public class ModelsServiceImpl implements ModelsService {
 
     @Resource
     private AssetIconService assetIconService;
-
+    @Resource
+    private NewHttpUtils httpUtils;
 
     // 固定存储桶名
     @Value("${minio.dataReleaseBucketName}")
@@ -845,7 +846,7 @@ public class ModelsServiceImpl implements ModelsService {
             url = url + "&search=" + name;
         }
 
-        String req = HttpUtils.sendGetWithToken(url, null, token);
+        String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         Integer total = (Integer) stringObjectMap.get("count");
         List> projects = (List>) stringObjectMap.get("projects");
@@ -876,7 +877,7 @@ public class ModelsServiceImpl implements ModelsService {
             url = url + "&search=" + name;
         }
 
-        String req = HttpUtils.sendGetWithToken(url, null, token);
+        String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         Integer total = (Integer) stringObjectMap.get("total_count");
         List> projects = (List>) stringObjectMap.get("projects");
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 806ee48a..e0b80170 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -63,6 +63,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     @Value("${git.localPath}")
     String localPathlocal;
     @Resource
+    private NewHttpUtils httpUtils;
+    @Resource
     private DatasetTempStorageService datasetTempStorageService;
     @Override
     public String newCreateDataset(NewDatasetVo datasetVo) throws Exception {
@@ -236,7 +238,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         if (StringUtils.isNotEmpty(name)){
             url =url + "&search=" + name;
         }
-        String req = HttpUtils.sendGetWithToken(url, null, token);
+        String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         Integer total = (Integer) stringObjectMap.get("count");
         List> projects = (List>) stringObjectMap.get("projects");
@@ -264,7 +266,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             url =url + "&search=" + name;
         }
 
-        String req = HttpUtils.sendGetWithToken(url, null, token);
+        String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         Integer total = (Integer) stringObjectMap.get("total_count");
         List> projects = (List>) stringObjectMap.get("projects");
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java
index 9c36d277..2b586f24 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java
@@ -2,15 +2,14 @@ package com.ruoyi.platform.service.impl;
 
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.platform.annotations.CheckDuplicate;
-import com.ruoyi.platform.domain.Dataset;
 import com.ruoyi.platform.domain.Experiment;
 import com.ruoyi.platform.domain.Workflow;
 import com.ruoyi.platform.mapper.WorkflowDao;
 import com.ruoyi.platform.service.ExperimentService;
 import com.ruoyi.platform.service.WorkflowService;
-import com.ruoyi.platform.utils.HttpUtils;
 import com.ruoyi.platform.utils.JsonUtils;
 import com.ruoyi.platform.utils.MinioUtil;
+import com.ruoyi.platform.utils.NewHttpUtils;
 import com.ruoyi.system.api.model.LoginUser;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -45,7 +44,8 @@ public class WorkflowServiceImpl implements WorkflowService {
 
     @Value("${argo.workflowCopy}")
     private String argoWorkflowCopy;
-
+    @Resource
+    private NewHttpUtils httpUtils;
     private final MinioUtil minioUtil;
 
     public WorkflowServiceImpl(MinioUtil minioUtil) {
@@ -172,7 +172,7 @@ public class WorkflowServiceImpl implements WorkflowService {
                 Map requestData = new HashMap<>();
                 requestData.put("data", oldDag);
                 // 发送POST请求到Argo工作流复制接口,并将请求数据转换为JSON
-                String req = HttpUtils.sendPost(argoUrl + argoWorkflowCopy , JsonUtils.mapToJson(requestData));
+                String req = httpUtils.sendPost(argoUrl + argoWorkflowCopy,null , JsonUtils.mapToJson(requestData));
                 // 检查响应是否为空或无内容
                 if (StringUtils.isEmpty(req)) {
                     throw new RuntimeException("工作流复制接口响应内容为空");
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
index 17d17c3c..fa1d6384 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -3,7 +3,7 @@ server:
   port: 9201
 
 # Spring
-spring: 
+spring:
   application:
     # 应用名称
     name: ruoyi-system
@@ -13,21 +13,13 @@ spring:
   cloud:
     nacos:
       discovery:
-        namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01
         # 服务注册地址
-        server-addr: 172.20.32.181:8848
-        username: nacos
-        password: h1n2x3j4y5@
-        retry:
-          enabled: true
+        server-addr: 172.20.32.181:18847
       config:
-        namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01
         # 配置中心地址
-        server-addr: 172.20.32.181:8848
+        server-addr: 172.20.32.181:18847
         # 配置文件格式
         file-extension: yml
         # 共享配置
         shared-configs:
-          - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
-            group: DEFAULT_GROUP
-            refresh: true
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

From 9050a65e02a4ea7ca683c2933ffe5066d6ce7845 Mon Sep 17 00:00:00 2001
From: somunslotus 
Date: Sat, 14 Sep 2024 15:13:48 +0800
Subject: [PATCH 095/381] xx

---
 k8s/build-java.sh                        |   0
 k8s/build-java.sh.bak                    |  25 ++++
 k8s/build-node.sh                        |   0
 k8s/build-node.sh.bak                    |  21 +++
 k8s/build.sh                             |   0
 k8s/build_and_deploy.sh                  |   0
 k8s/build_and_deploy.sh.bak              |  74 +++++++++++
 k8s/deploy.sh                            |   0
 k8s/deploy.sh.bak                        | 162 +++++++++++++++++++++++
 k8s/dockerfiles/conf/nginx.conf.20240705 |  64 +++++++++
 k8s/dockerfiles/conf/nginx.conf.20240909 | 131 ++++++++++++++++++
 k8s/dockerfiles/conf/nginx.conf.bak      |  60 +++++++++
 k8s/dockerfiles/conf/nginx.conf.bak0719  | 110 +++++++++++++++
 k8s/redis.tgz                            | Bin 0 -> 21044 bytes
 k8s/vim                                  |   0
 15 files changed, 647 insertions(+)
 mode change 100644 => 100755 k8s/build-java.sh
 create mode 100644 k8s/build-java.sh.bak
 mode change 100644 => 100755 k8s/build-node.sh
 create mode 100644 k8s/build-node.sh.bak
 mode change 100644 => 100755 k8s/build.sh
 mode change 100644 => 100755 k8s/build_and_deploy.sh
 create mode 100644 k8s/build_and_deploy.sh.bak
 mode change 100644 => 100755 k8s/deploy.sh
 create mode 100644 k8s/deploy.sh.bak
 create mode 100644 k8s/dockerfiles/conf/nginx.conf.20240705
 create mode 100644 k8s/dockerfiles/conf/nginx.conf.20240909
 create mode 100644 k8s/dockerfiles/conf/nginx.conf.bak
 create mode 100644 k8s/dockerfiles/conf/nginx.conf.bak0719
 create mode 100644 k8s/redis.tgz
 create mode 100644 k8s/vim

diff --git a/k8s/build-java.sh b/k8s/build-java.sh
old mode 100644
new mode 100755
diff --git a/k8s/build-java.sh.bak b/k8s/build-java.sh.bak
new file mode 100644
index 00000000..66ddbecc
--- /dev/null
+++ b/k8s/build-java.sh.bak
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+baseDir="/home/somuns/ci4s"
+#判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块
+if [ "$1" == "all" ]; then
+   buildDir=$baseDir
+else
+   buildDir="$baseDir/ruoyi-modules/management-platform"
+fi
+
+echo "Building $buildDir"
+cd  $buildDir  && mvn clean install
+
+if [ $? -ne 0 ]; then
+    echo "Failed to build ruoyi-modules"
+    exit 1
+fi
+
+
+
+
+
+
+
+
diff --git a/k8s/build-node.sh b/k8s/build-node.sh
old mode 100644
new mode 100755
diff --git a/k8s/build-node.sh.bak b/k8s/build-node.sh.bak
new file mode 100644
index 00000000..9805d2ca
--- /dev/null
+++ b/k8s/build-node.sh.bak
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+baseDir="/home/somuns/ci4s"
+cd ${baseDir}/react-ui
+
+npm install
+
+if [ $? -ne 0 ]; then
+    echo "Failed to install npm depend package"
+    exit 1
+fi
+
+
+npm run build  
+if [ $? -ne 0 ]; then
+    echo "Failed to build react-ui"
+    exit 1
+fi
+
+
+
diff --git a/k8s/build.sh b/k8s/build.sh
old mode 100644
new mode 100755
diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh
old mode 100644
new mode 100755
diff --git a/k8s/build_and_deploy.sh.bak b/k8s/build_and_deploy.sh.bak
new file mode 100644
index 00000000..eacc9c6b
--- /dev/null
+++ b/k8s/build_and_deploy.sh.bak
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+#记录开始时间
+startTime=$(date +%s)
+
+# 登录到目标环境
+baseDir="/home/somuns/ci4s"
+cd ${baseDir}
+
+
+#build
+# 默认参数
+branch="master"
+service="manage-front"
+env="dev"
+
+#
+show_help() {
+  echo "Usage: $0 [-b branch] [-s service] [-e environment]"
+  echo
+  echo "Options:"
+  echo "  -b  Branch to deploy, default: master"
+  echo "  -s  Service to deploy (manage-front, manage, front, all, default: manage-front)"
+  echo "  -e  Environment (e.g., dev, test, default: dev)"
+  echo "  -h  Show this help message"
+}
+
+# 解析命令行选项
+while getopts "b:s:e:h" opt; do
+  case $opt in
+    b) branch=$OPTARG ;;
+    s) service=$OPTARG ;;
+    e) env=$OPTARG ;;
+    h) show_help; exit 0 ;;
+    \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;;
+  esac
+done
+
+valid_services=("manage-front" "manage" "front" "all")
+if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then
+  echo "Invalid service name: $service" >&2
+  echo "Valid services are: ${valid_services[*]}"
+  exit 1
+fi
+
+valid_envs=("dev" "test")
+if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then
+  echo "Invalid environment: $env" >&2
+  echo "Valid environments are: ${valid_envs[*]}"
+  exit 1
+fi
+
+echo "start build"
+sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service}
+if [ $? -ne 0 ]; then
+  echo "Build failed"
+  exit 1
+fi
+echo "build success"
+
+# 部署
+echo "start deploy"
+sh ${baseDir}/k8s/deploy.sh -s ${service} -e ${env}
+if [ $? -ne 0 ]; then
+  echo "Deploy failed"
+  exit 1
+fi
+echo "deploy success"
+
+# 记录结束时间
+endTime=$(date +%s)
+# 计算运行时间
+duration=$(( $endTime - $startTime ))
+echo "编译发布总耗时: $duration 秒"
\ No newline at end of file
diff --git a/k8s/deploy.sh b/k8s/deploy.sh
old mode 100644
new mode 100755
diff --git a/k8s/deploy.sh.bak b/k8s/deploy.sh.bak
new file mode 100644
index 00000000..a9fe57f8
--- /dev/null
+++ b/k8s/deploy.sh.bak
@@ -0,0 +1,162 @@
+#!/bin/bash
+
+# 记录开始时间
+start=$(date +%s)
+# 默认参数
+service="manage-front"
+env="dev"
+
+show_help() {
+  echo "Usage: $0 [-s service] [-e environment]"
+  echo
+  echo "Options:"
+  echo "  -s  Service to deploy (manage-front, manage, front, all default: manage-front)"
+  echo "  -e  Environment (e.g., dev, test, default: dev)"
+  echo "  -h  Show this help message"
+}
+
+# 解析命令行参数
+while getopts "s:e:h" opt; do
+  case $opt in
+    s) service=$OPTARG ;;
+    e) env=$OPTARG ;;
+    h) show_help; exit 0 ;;
+    \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;;
+  esac
+done
+
+echo "Deploy service: $service, environment: $env"
+
+valid_services=("manage-front" "manage" "front" "all")
+if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then
+  echo "Invalid service name: $service" >&2
+  echo "Valid services are: ${valid_services[*]}"
+  exit 1
+fi
+
+valid_envs=("dev" "test")
+if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then
+  echo "Invalid environment: $env" >&2
+  echo "Valid environments are: ${valid_envs[*]}"
+  exit 1
+fi
+
+# 根据环境设置 IP 地址
+if [ "$env" == "dev" ]; then
+  remote_ip="172.20.32.181"
+elif [ "$env" == "test" ]; then
+  remote_ip="172.20.32.185"
+else
+  echo "Invalid environment - $env"
+  exit 1
+fi
+
+baseDir=/home/somuns/ci4s
+tag=$(date +'%Y%m%d%H%M')
+remote_deploy_dir=/home/deploy/manage-platform
+
+# 构建镜像函数
+build_image() {
+  local dockerfile=$1
+  local image=$2
+  cd ${baseDir}/k8s/dockerfiles
+  docker build -t ${image} -f ${dockerfile} .
+  if [ $? -ne 0 ]; then
+    echo "Build ${image} image fail"
+    exit 1
+  fi
+  docker push ${image}
+}
+
+# 复制和替换 YAML 文件函数
+prepare_yaml() {
+  local yaml_file=$1
+  local image=$2
+
+  placeholder="\${${yaml_file%.yaml}-image}"
+  cd ${baseDir}/k8s/template-yaml
+  cp -rf ${yaml_file} deploy/
+  cd deploy/
+  sed -i "s|${placeholder}|${image}|g" ${yaml_file}
+  if [ $? -ne 0 ]; then
+    echo "Replace ${image} image fail"
+    exit 1
+  fi
+
+  # 建立远程目录并备份文件
+  ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${yaml_file} ]; then mv ${remote_deploy_dir}/${yaml_file} ${remote_deploy_dir}/${yaml_file}.bak; fi"
+  if [ $? -ne 0 ]; then
+    echo "Failed to create remote directory or backup ${yaml_file}"
+    exit 1
+  else
+    echo "Successfully created remote directory and backup ${yaml_file}"
+  fi
+
+  scp ${baseDir}/k8s/template-yaml/deploy/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file}
+  if [ $? -ne 0 ]; then
+    echo "Failed to copy ${yaml_file}"
+    exit 1
+  else
+    echo "Successfully copied ${yaml_file}"
+  fi
+}
+
+# 部署服务函数
+deploy_service() {
+  local yaml_file=$1
+  ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${yaml_file}"
+  if [ $? -ne 0 ]; then
+    echo "Failed to deploy ${yaml_file}"
+    exit 1
+  else
+    echo "Successfully deployed ${yaml_file}"
+  fi
+}
+
+deploy_nacos() {
+     local yaml_file=$1
+     scp ${baseDir}/k8s/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file}
+     deploy_service ${yaml_file}
+}
+
+build_and_deploy() {
+  local dockerfile=$1
+  local image=$2
+  local yaml_file=$3
+
+  build_image ${dockerfile} ${image}
+  prepare_yaml ${yaml_file} ${image}
+  deploy_service ${yaml_file}
+}
+
+# 构建和部署 manage 服务
+if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then
+  build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}"  "k8s-7management.yaml"
+fi
+
+
+# 构建和部署 front 服务
+if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then
+  build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}"  "k8s-12front.yaml"
+fi
+
+
+if [ "$service" == "all" ]; then
+  #部署前端
+  build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}"  "k8s-12front.yaml"
+  #部署管理平台
+  build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}"  "k8s-7management.yaml"
+  #部署认证中心
+  build_and_deploy "auth-dockerfile" "172.20.32.187/ci4s/ci4s-auth:${tag}"  "k8s-5auth.yaml"
+  #部署网关
+  build_and_deploy "gateway-dockerfile" "172.20.32.187/ci4s/ci4s-gateway:${tag}"  "k8s-4gateway.yaml"
+  #部署系统服务
+  build_and_deploy "system-dockerfile" "172.20.32.187/ci4s/ci4s-system:${tag}"  "k8s-6system.yaml"
+  #部署配置中心
+  deploy_nacos "k8s-3nacos.yaml"
+fi
+
+
+# 记录结束时间
+end=$(date +%s)
+echo "部署成功, 耗时: $((end-start))秒"
diff --git a/k8s/dockerfiles/conf/nginx.conf.20240705 b/k8s/dockerfiles/conf/nginx.conf.20240705
new file mode 100644
index 00000000..bf9f77c4
--- /dev/null
+++ b/k8s/dockerfiles/conf/nginx.conf.20240705
@@ -0,0 +1,64 @@
+worker_processes  1;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+    sendfile        on;
+    keepalive_timeout  65;
+    client_max_body_size 20480m;
+
+    server {
+        listen       8000;
+        server_name  localhost;
+
+        location /api/{
+#            rewrite ^/prod-api/(.*)$ /$1 break;
+            proxy_set_header Host $http_host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
+            proxy_connect_timeout 500s;  # 设置连接超时时间为 120 秒
+            proxy_read_timeout 500s;     # 设置读取超时时间为 120 秒
+            proxy_send_timeout 500s;     # 设置发送超时时间为 120 秒
+        }
+        
+        location /label-studio/ {
+           # rewrite ^/label-studio/(.*)$ /$1 break;
+           proxy_pass http://label-studio-service.argo.svc:8080/projects/;
+           proxy_hide_header X-Frame-Options;
+           add_header X-Frame-Options ALLOWALL;
+        }
+
+        location / {
+            rewrite ^/prod-api/(.*)$ /$1 break;
+            root   /home/ruoyi/projects/ruoyi-ui;
+            try_files $uri $uri/ /index.html;
+            index  index.html index.htm;
+        }
+        
+       location /api/v1/model/ {
+            proxy_pass http://pipeline-convert-service.argo.svc:80;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+       }
+
+        location @router {
+            rewrite ^.*$ /index.html last;
+        }
+
+        # 避免actuator暴露
+        if ($request_uri ~ "/actuator") {
+            return 403;
+        }
+
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+    }
+}
diff --git a/k8s/dockerfiles/conf/nginx.conf.20240909 b/k8s/dockerfiles/conf/nginx.conf.20240909
new file mode 100644
index 00000000..c23e02c3
--- /dev/null
+++ b/k8s/dockerfiles/conf/nginx.conf.20240909
@@ -0,0 +1,131 @@
+worker_processes  1;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+    sendfile        on;
+    keepalive_timeout  65;
+    client_max_body_size 20480m;
+    error_log /var/log/nginx/error.log debug;
+    server {
+        listen       8000;
+        server_name  localhost;
+
+        location /api/{
+#            rewrite ^/prod-api/(.*)$ /$1 break;
+            proxy_set_header Host $http_host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
+            proxy_connect_timeout 500s;  # 设置连接超时时间为 120 秒
+            proxy_read_timeout 500s;     # 设置读取超时时间为 120 秒
+            proxy_send_timeout 500s;     # 设置发送超时时间为 120 秒
+        }
+        
+        location /label-studio/ {
+           # rewrite ^/label-studio/(.*)$ /$1 break;
+           proxy_pass http://label-studio-service.argo.svc:8080/projects/;
+           proxy_hide_header X-Frame-Options;
+           add_header X-Frame-Options ALLOWALL;
+        }
+
+        location / {
+            rewrite ^/prod-api/(.*)$ /$1 break;
+            root   /home/ruoyi/projects/ruoyi-ui;
+            try_files $uri $uri/ /index.html;
+            index  index.html index.htm;
+        }
+        
+       location /api/v1/model/ {
+            proxy_pass http://pipeline-convert-service.argo.svc:80;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+       }
+  #    location /api/v1/realtimeStatus {
+  #          proxy_pass http://argo-server.argo.svc:2746/api/v1/workflow-events/argo;
+  #          proxy_set_header REMOTE-HOST $remote_addr;
+  #          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+  #     }
+
+          
+        location /api/v1/tensorboard/show {
+        # 提取查询参数中的 `svc` 值
+        set $svc "";
+        if ($arg_svc) {
+            set $svc $arg_svc;
+        }
+
+        # 将请求转发到动态生成的内部服务地址
+        proxy_pass http://$svc.argo.svc:6006;
+
+        # 传递必要的头信息
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # 对于 WebSocket 应用很重要
+        proxy_buffering off;
+       }
+
+          location /api/v1/realtimeStatus {
+        rewrite ^/api/v1/realtimeStatus(.*)$ /api/v1/workflow-events/argo$1 break;
+        
+        proxy_pass https://argo-server.argo.svc:2746;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header REMOTE-HOST $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # 保留查询参数
+        proxy_set_header X-Original-URI $request_uri;
+
+        # 禁用缓冲
+        proxy_buffering off;
+
+        # 增加超时时间
+        proxy_read_timeout 3600s;
+        proxy_send_timeout 3600s;
+        proxy_connect_timeout 60s;
+
+        # 设置传递的请求头
+       # proxy_set_header Connection '';
+       # chunked_transfer_encoding off;
+
+        # 如果需要保留自定义头部
+        proxy_set_header Accept 'text/event-stream';
+    }
+
+       
+       location /newlog/realtimeLog {
+ 	   proxy_pass http://loki.loki-log.svc:3100/loki/api/v1/tail;
+    	   proxy_http_version 1.1;
+    	   proxy_set_header Upgrade $http_upgrade;
+    	   proxy_set_header Connection "Upgrade";
+    	   proxy_set_header Host $host;
+    	   proxy_set_header X-Real-IP $remote_addr;
+    	   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    	   proxy_set_header X-Forwarded-Proto $scheme;
+	}
+
+        location @router {
+            rewrite ^.*$ /index.html last;
+        }
+
+        # 避免actuator暴露
+        if ($request_uri ~ "/actuator") {
+            return 403;
+        }
+
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+    }
+}
diff --git a/k8s/dockerfiles/conf/nginx.conf.bak b/k8s/dockerfiles/conf/nginx.conf.bak
new file mode 100644
index 00000000..281ad4f4
--- /dev/null
+++ b/k8s/dockerfiles/conf/nginx.conf.bak
@@ -0,0 +1,60 @@
+worker_processes  1;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+    sendfile        on;
+    keepalive_timeout  65;
+
+    server {
+        listen       8000;
+        server_name  localhost;
+
+        location /api/{
+            rewrite ^/prod-api/(.*)$ /$1 break;
+            proxy_set_header Host $http_host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
+        }
+        
+        location /label-studio {
+             rewrite ^/prod-api/(.*)$ /$1 break;
+             proxy_pass http://label-studio-ls-app.label-data.svc:80/;
+             proxy_hide_header X-Frame-Options;
+             add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/";
+        }
+
+        location /api/v1/model/ {
+            proxy_pass http://pipeline-convert-service.argo.svc:80;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+
+        location / {
+            rewrite ^/prod-api/(.*)$ /$1 break;
+            root   /home/ruoyi/projects/ruoyi-ui;
+            try_files $uri $uri/ /index.html;
+            index  index.html index.htm;
+        }
+
+        location @router {
+            rewrite ^.*$ /index.html last;
+        }
+
+        # 避免actuator暴露
+        if ($request_uri ~ "/actuator") {
+            return 403;
+        }
+
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+    }
+}
diff --git a/k8s/dockerfiles/conf/nginx.conf.bak0719 b/k8s/dockerfiles/conf/nginx.conf.bak0719
new file mode 100644
index 00000000..48e45bf0
--- /dev/null
+++ b/k8s/dockerfiles/conf/nginx.conf.bak0719
@@ -0,0 +1,110 @@
+worker_processes  1;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+    sendfile        on;
+    keepalive_timeout  65;
+    client_max_body_size 20480m;
+    error_log /var/log/nginx/error.log debug;
+    server {
+        listen       8000;
+        server_name  localhost;
+
+        location /api/{
+#            rewrite ^/prod-api/(.*)$ /$1 break;
+            proxy_set_header Host $http_host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
+            proxy_connect_timeout 500s;  # 设置连接超时时间为 120 秒
+            proxy_read_timeout 500s;     # 设置读取超时时间为 120 秒
+            proxy_send_timeout 500s;     # 设置发送超时时间为 120 秒
+        }
+        
+        location /label-studio/ {
+           # rewrite ^/label-studio/(.*)$ /$1 break;
+           proxy_pass http://label-studio-service.argo.svc:8080/projects/;
+           proxy_hide_header X-Frame-Options;
+           add_header X-Frame-Options ALLOWALL;
+        }
+
+        location / {
+            rewrite ^/prod-api/(.*)$ /$1 break;
+            root   /home/ruoyi/projects/ruoyi-ui;
+            try_files $uri $uri/ /index.html;
+            index  index.html index.htm;
+        }
+        
+       location /api/v1/model/ {
+            proxy_pass http://pipeline-convert-service.argo.svc:80;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+       }
+  #    location /api/v1/realtimeStatus {
+  #          proxy_pass http://argo-server.argo.svc:2746/api/v1/workflow-events/argo;
+  #          proxy_set_header REMOTE-HOST $remote_addr;
+  #          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+  #     }
+
+          location /api/v1/realtimeStatus {
+        rewrite ^/api/v1/realtimeStatus(.*)$ /api/v1/workflow-events/argo$1 break;
+        
+        proxy_pass https://argo-server.argo.svc:2746;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header REMOTE-HOST $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # 保留查询参数
+        proxy_set_header X-Original-URI $request_uri;
+
+        # 禁用缓冲
+        proxy_buffering off;
+
+        # 增加超时时间
+        proxy_read_timeout 3600s;
+        proxy_send_timeout 3600s;
+        proxy_connect_timeout 60s;
+
+        # 设置传递的请求头
+       # proxy_set_header Connection '';
+       # chunked_transfer_encoding off;
+
+        # 如果需要保留自定义头部
+        proxy_set_header Accept 'text/event-stream';
+    }
+
+       
+       location /newlog/realtimeLog {
+ 	   proxy_pass http://loki.loki-log.svc:3100/loki/api/v1/tail;
+    	   proxy_http_version 1.1;
+    	   proxy_set_header Upgrade $http_upgrade;
+    	   proxy_set_header Connection "Upgrade";
+    	   proxy_set_header Host $host;
+    	   proxy_set_header X-Real-IP $remote_addr;
+    	   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    	   proxy_set_header X-Forwarded-Proto $scheme;
+	}
+
+        location @router {
+            rewrite ^.*$ /index.html last;
+        }
+
+        # 避免actuator暴露
+        if ($request_uri ~ "/actuator") {
+            return 403;
+        }
+
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+    }
+}
diff --git a/k8s/redis.tgz b/k8s/redis.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..288e3db7b52dced5148c408333adb77569ce6cc5
GIT binary patch
literal 21044
zcmV(-K-|9{iwFQ_vDRh)1MEE8a@$6hdB#`tP?H(SBY+}xal)CTinf&4728o+a$L1e
z)@%Yz5+x9gK?9PQI9s(}ugDG?qN;-LO)z2y~y*efr$b
zY0gwK_xrhuV&l(b_iz98ubS*~?)-MII?|3p6<8{)A}C-Jn*mB^LRWgg-me=U_MjF4$0
zl6W2$#)FZ$nheCOD6&DfdsdEBo~lBbAlBVTho)N^mHX2&j#M|)^QzN@=+p95gnKP+cy!V6v*FXS;ulb(x2j#Xloq0n4@F%ZA}
zO2dzJWW))8j^Pl8VW>-3=?5Q6{oF8UUoz;fXCGKp$ccdMBvWBLiGdQpC9vLHNVh0E
zP?(u6lL)y9hz{o*(Mom)rxTHCfUXJ>GzNwY
zg5b7c83YKvPZewo@xo-};O5x`6JQ4#Sg3iHz$gUH979w-O653#-AVCeD2{V|$-FmK
zMFD$#re*XCJeLOFn=;FEUIb!T!qLhCm?#16%>WLP4EFPqj(1MO
z0~So+ySaiL5hGs0^OPp3OAve51kVVQ5~rA8<;cS^9Ht7UaWN~$c*CX$BV^boZGJze+vVwdA0yL7=zPm
z&P;U#jCvj;{~uej!?Yh%zCb#G_|T~*I-UASe2&C|&88}(We8BKz#nj;B+@7z`NA@`
z1bIUiVAPcqHQ4W_iq^3oDoG^MdKJs+%IeEvk@5WIu5dB@o|z5@4a8%Xw5P}PEU6?O
zAMvPlZG+>trsKXtz1PO_adt`0v2n$9mQFHiX;a8`DGw3l;chRDB6JpElSl;$F
z5xGE@43I`@0=f)MLhcTqX4B-xroPY6?&`e4)9_%Hh#t?CE(@C8qJVuh5IrJ546AVl
zVOg`efh=mQfd*pFRLrFEnu=i(!wEFL&s2B@cEphAh9xNvw4#>|TbT~cD}yk45OvYB
ziTO6yW!88?qh9FrB}6+`&RJMrTi2+itW1NOVDBLaJ|1bAf^C9zWD>m=*1#zBGnq$2
z@Gpj-Hh>Nb$G?nY7)3FvAW$cg2Urh7Mg+Ev8zIVS&aj%o{w3=tAX*Lqi2(mYXm;)_
z?n)i4Q^Md2fj$=EQTIotj+F<)z@~Hr%We0yg20!s@{N3s3?{aN%K@Qlf`-NCP&wI?S@2
za}5LrMdc@X*=Zr-LASxzgcf*CA;7r<89;eLz~&eY0>;Bf0z~($%)lSdt0;U49*K?v
zbet%3*ukkqn=ipP&=9wZO`ZC%ptCK6XjplI^Uf;N0_Cs?vj+=~iLE6_)rFv#FrXNp
zayTHvxaBNY=L&;+O8Ah;VkIIF8JGg&!a`&pUZVj>K+`XGc0{k^H9SMBezsw54$3w`
zLj?y;dKT$`)`Y%Xz--04-kXT0Nys>t5i8+
z01-f4#Qv_aYYCQA^arSCx4K$G;{;z$&?wGfeX-TI>?7|~cmX8~qILYwoqldkVkg@U
z_3J?3iwYDv$Vs9S5;Q=v?{u%-uS2^eNlS~qdtq7v{|U+yPx017L8~!PI|5o4{{WR<
zKmcPyzwIgz*e3U*04J6A$AJU{51?`lkZG=Nmdyqtg(@rRgd01p41{uT7(aD4D2jqG
zIK+7L4&h>2uP{Dr#&2xKAFD$86EKP34c;X>M?OL*fz^EX#KQq6c88VY+l)M|pIH?n
zZWVr36&dg$LbPHar!!P_RVau!;#@Q%RJQ)eo?vaG!xE#x6ZT8sucs^w{P^e+IF1-y
zqMqVZH+u&Y5K5Gp8^kX+B_r8%`hGP*+h^!q8Gqj}`d*=bKq0|~IO1IB0RI+5@CpS#
z5;YlaM#O5K5Wcuj@pJ|PxxZ6Cbr3NbK4?A`94Z`LIyc3%UL(Xa1)DdSF50hz&^G5Y
z0I@HgrmF);*RKL)z#UW?9ZQzGI_zs?1`u7H1G#MmWL3UeX^_>^Zl*!IN*mdX5F(IGt$p%^~<;wT;W-4Nwizk+KSWY#P&a6<|kT79gia7>W4G
zy5u!7;3Tpg?X}~92?Ja%X41?s^ohn4zif~)pnx3aZFWwMo*g|t?QDzvt!0dWtU1nZ
z7Y23^tdC%Qq%a0+h3UB2@dT#+%U2?e6AD`FV?4mO+vm8DIFoU1HuEir=ImQKuOLpr
zwiTPa*KKjWg&Vx){On|vM$3QI)WPDj|zqV~A9qWU3q$Lp$&x34*_t2o}a-gter@#EAQS1OIy
z))`w>Mi0D$!`S2{>9I#;G*v|vYtQB7tF+3QaPD~nbI-%(Gq2egXsqcVbvJx<`b2D6
zZ!W`5hCkROJ{Da#rG$ak+-!OH#Bs_71388n7dnpyRaHY>#)gEC`#^;4G_m3+MhFC4
zg^}3g+=E#LwB>D7Ah_FvL30X%^QH)Arjux?cS>Xy0;-JGA_C819SHmbD5`RUrINJx
zK_}&WxlmO1LpV=KM6!_LxSAw*mN?<$tDwFP&ozNDheX>hH{0m?_)GKA*VPOXVJ$j-
zXWgU@JiVC3;S4jt-24?SK+3=|0>9)u#-NBrjG>jOU4htaRP(m5x5y$&!P(gc#k7Kq
zT&^mcglY#gSvb?WPD0y6RE1gPfe@S1tdBwZ@bwAq08}o7rh<(w!uj^QqiuW%%ms3h
zo)j`XBkf5oE{#PDxbTI|MCpWb(UNL~&oSs{wdaF@l+kM}wR{ip76OQW1~T=(#mv%b
z>kA%Zn8Ai0ZM8+rbo8(i8OAfi(Blj2_-u0
zr-BUxF1tt@-I6KwR@9AZHg%&lQE49AzA%`O$TGzk42Z;D_DrTzwpjoYX4>A(2F-D`
zE(?Nv&Q4}+>YIICn{gx!2EH}s;Bk#Ek+{^l_K$A-wx8K@|NrBe%!^!?#xwC`m|h0Q`ySXbft|Ua$uzOXuH`|1j>}
zJ&%!$@9$qJ|M>T^{Pz#`4?Yw7cfXX?&;N7zUp;@s*4*FfHK8E1+RyQs?1BUd>ON>+XuceCri$
ze17!J=a0Vl{EKh=s0PFpQwHRx1ZayJH{QIWCDvdOR$yjWSD0Fu*p8{2;JRA@M&<0g
zdj1VR9%iHJz1f)CdoaWtR9?7n^GyR0CG-+-jo-KJ?nZOBZq`;HUfZ6XId<>3T%<(T
z+g{nJTb9KeY|UAV=@3Y@IAp&R>nwzG>w)Ll4$HYbQ{wog5nb`r7_18*C@v19`T{dL
zo?FS8QW9HKo2!6;q|$9t_$r&MBBc
z-2BwNH^e7Q*Jfa_MLj6MLA!)Owl!cZCs|Bo?3WWS8#VlFeTgv=J$
zm8Ylhp9v_ldiw0ohcEx^d85$?LZX@Xdx8AOUB1*%TX#NVkOIRz@6n=41QIV2BUMv&
zx!Irq2LhWKAJEN4?4)Ysf~C#c+73b@QKOI1=6p7}b_eXe<^oz>CypbKm`3a179uS!
zG_S+nonAprowiqCHn&4(W9Mz09x5TU+eA~(>
zuNf<7c+=4^rvsomHm~?|DYv=h?&mi8iAh^$GCV`ikR8OFS>iZXR1pAuqEIn5L;qgz
z#h+NJ9w}hg;qg=BJUSS7{6jM{?5-QTj#A7_=LyL^*pFORyw25wY?{j|sZVC4QcQL0
zcR>n*l)zXi+`PReuP2ozGMJyRN~SIl@D?!~N8teqP8VXcad+Cab`nb{TlO|vZt=Up
zrLZwKYZ7;+)In})JqRKIn#-mZacHHZ-{i~ZjcVCmJ3;OImKgvQ3SIBz4M&=;mD>^x
zH$?!fmyd>zF{R(Sk)G=W4qOZku{jlisRO>Oh)cTFZRG2(@UC(XRnXU8?ZTfs%X`}v
zBfPgWvj0AcQ-m>Mn>$*@J*xBFOVz5^TyKTY=veF0vOPz)j5PxzIyOW#VilamSDk+8UUgZb?ZMzVqDmdC
zFoPZT7djOm6RlsbG6FL%>C6=#aKCnfm-dYgW4_LV=TNH*W~PKDu%_qo(o)4+IxCEA
z#i*QVcVt#;Dp$vVj~gVnPNV&iiwY^9vtvKkALP9g$8M@N36~_idR6t
z6ECVbsOjKz8_von@_}vcj_wUOQgOLt5pcC)M5zCs-w(U5wSLeCMJ_Mzm;RpGW)O{&^?9z16R^-3~ZO^jL-s4s4=+%rtVn`4sZkG4?0)xqn{d)EP#{
zEhONPV+IOytkg-^NC;W}y_ZGZ#|O5F7sE&Q1H7hU>qk6BqPEfai+vc^LI8vL1MEU|
zDI6QJPx%IJ<3~P5&0qN#t^Jjcd)d)d8x
zPB`OytJq57FTUtV_GIRZGh&Nui9I6O44agtSl%btN7{GVSJ=7$XaId-QzB_AhxpE!
zSZrJig{neTp=$n}Cs5=Ir8UH@I2hdEWijj+u}i`W{nTBV;gk|U*-ZQ)aD7(dkitQl
z2G-H=MsNE!=Dw0?3ninU;Y~8v&J8FUZ_-<8=mWgOv%7vfCmaRK-4breYxz*Utw&kh
z*(m(XFZkxUmg0qqR%>ycCs5Q(BN+|2%h9{~D}IeePrgiXk)tf8A_&*{wc5g_e76G2
z{P?N0sLol^kwFw(29wEM63yR3Vlc4G?S-)y8;Ts)BpK*dyb1?lf6_N>IZWbWF$fT@
z{z$qpvFTPuMp?v6?^zIvt%Y@NLD6L}w-{C`v~}3CFc&|?juLhwdt4U7Sv+@1py)7|
zEbfvOqNNmrN$u5AdCcOui(a40U{c&gqY!eIhr(E>ES|gILzgTTorWUTM6-r8O+6r3
zE*^^bvM+OhTOBhU-&(0BbS!`K^T%Vht;bSaQg0Dk@{q^Dc0-uzJ&XX1+RhF?Y^*yNRj|bk|Wv
zpO8HE{xcaUnQPn?t=d0Wvat`_#@rE;plF8SvU$vS-h@0D?(U{hrV0bw}njgeq|Xt9V?<_
zGS;m)ah`sw%O3d)J~SvgVKO)ED4ClXK{89iopI4U$;r^AV%6CZ>E^urITcuDwc1)#
z=Lp4A+y@M4VT=eU2|wugG#rOwK@(b3xdnXtAzW1FnNTzyF}4JYjrxZN3e3gR#S|2+
z_$Dn>)&i%FIyy+P{7$ct&fx_{>u6kQKT1Bwsbw-J_k
zwS}2)wpt75+=61-#Hyi4Z^<5Tfn{Qh*w$h?x1i{VK4_>m0xfdfLZi+?X0)J!+$Evv
z_yTum#dX{i&Q}V~TSdrM-ERzuri}9qJj>xODx_{p4V@KEd8DofXOba!xGc8Pwqr+e@(hgqE&)LtyeO>F}{WdhJPil
zd=y3xpT9UcJ^bg^9n&V#x)KCZSr%+&eFVq7|taui8fiVUDpLg*jf#
zMDJT*nRWdHdG4JTL6NO6deB?((hl$JkVrKBF^|az-#qu3&sdhprX5`57}RR)Tk&J`
zfkFZa;K^Z6`0BVyzY~ga0}N&|u9Z9M*j7crUhqj@{E5~t^c{VK_CD$8hy^co#_n)%
zQRm+tL|HtKR!~g6ax-7IDLAS;ln?6ivW(Yl3W}t*qV+S*2dW!eg1o5H!MiWBvOMQAGTl?c(lXxjcGMrO
z6Vmw%7I^z!yoYEK(P=#L&F5_zies5ufnpsdEVhVHmjcVwvu@43^DHP1BotaaybDS7S!Us0&)Ni?YfnM+b3f3yRSJ)V
zbe;u8ONvQD@j(hOOFYrzuzh)>)i4$W>65@*AL2|^K+ei8pVH0v$DlWq?u)=>2Qpfy
zh`W<9W(xV7u8hmm)8Kytzk>=ysrhOp8ZQcW=}T`WGTkR>OX-#QmyMX82Z}?3F3Jm<
z0XhZE2LnWoS@QKFyhelrMP>fAG_c93=AYBSoOM3Th0JhHWqG)$plEsFBv8zVg{|TD
z#e3(F`_0xO-EXp>s6yx%P|OA$#gY2*i(xYIGU6@Wv-2z{CJD7$ehl>&)YEmE5QsbNEkCs9jT}eJg
zUC;#QRbZLBiwSWqa-hgho7IpxP*jy31`x^jW@}Mk%*MrDXt)IA;i9axf?^&NyFvR>
z510o(b3H}JDw)fC(FH3-8CT|u6>{;cW
z@Qf^=i<;tm$`W|A41!S``gTM@R%?@QA?dngszIzz(3B~6qtTZi+
zaXg`zlt>FbBQ;_yFp)ZCaE5t7qhJ(w!=VZ0qc2OvxOg5N-^A^4kDS_FTeR|vU_cr<
zCNZ>m)CtdT#7~(1u$M6DFS9J(?qWhwCW~yzp^Z;Ek0d=12SNM+WE4uu;yvC?D2{@Q
z5M(`;8Eq)Ou(46qT-e;^TF`pMIh4bwHTTZbP}HxfraLAwDK4C>pP+ra%#E!X4#-ysm;}9`ru=Hw)2@rJzVLMt%fI
z<>Ut6Q@!E@bxKHV)nlB;dDQDLpKjIhcQ0Pd?B-aO%cCvhm5qxJ)^deq32|uK-JkX!=)=dFt#Ggf-R{PPTG0H*=ls0b|Yb9%k%Jtav9t_rB?;NZ0djh
z+QLXq6H;^I`8G4zw`$^hxFrVHet*~tHggl+zpn_vBhYKgr|h4b{0dy`DJF*9lZj#J
zlYomS-UsUHMxUfd_s^oMM7X86MX8v>sJ;sahU<>@MXFUQ3Uk7%pm(z=eDSY?S1;w$
zI}ETC>nx`f0+qtiYZnJ2(7jC5HylM*VTWFjVi!)5c*=@i5>no|mDVQ{0!HHce?=3T
z!z2!@hi$(Yo&36P{IS8A-}&_+!wW%plARL?p`E04PhKzfk@WK>nz?Jz>5&jN?D65p
zGVK7rS{eEw0&^5iE;wI(%a~+KOa{nKoCI`~eZWl_RD-!=p8COM%$b*Hf(T0g$`5;V
zp_CJXegEZ^D
zG{s)Una*zQnlOt0+PU-OcCE=#m$P=Ules>AzMxl^EKYuqOM{h3a98vx)_XP?k|%OU
zzXy{EI|xbix&1rW|5p5+b9;D{q}0P*hTjO6zC{^t)b|}aW^{r`@A>E0ydMJb1C)#g
z9f0f>lw34UWdNHAlXJ#w@}P{>FV6YBKZ1W0k>BGW2yhPMz8i$vu9i#C=(#nfoS|J)
zze?J#(x})Z%X<8cYU%8RYBh1x3;Y;ObYsbSV6a%T9D39pX{*)X#(CbXHkt>ArXi{)
zkb5C(Q^0igEIb!Cz&Ci}xvAc0(b;>HWNE7rJHgw5(#)Mm&0OVJCRx7`GKGwYiK=w{
z0mf61hpjo59n_5uvHh$RB_NFhWtLJGnqE1XHP1-bR2)FuhHJ3+^ilC6gg=tl=oU0+xP3
z-pAoM$t_0KK^`=b6Yq7fHA`2_22fO+aC(0A+hI{B2&g^p8@`X%fnNqJ9<*
z>L5ArU*2_F{_EDOu)xP-2=4=!?&Sa|-c+GeYBS<%Jyi97F=d|I{!qj)*WsV?%5>
z2Vw}5ClO`6u_Y8m15hIGbNkq+RStmS!d%;UqT599y8dto&Ow&@RP+65)%^
zaW#m5wCiW&GUF9mO)JM?e2KLwZ5^`RpzWi)ms$h)d18O9;RFyq?gB$U4*br|L8k*m
zAr2%;wLswQjk~xmI#7Dfo5|aesG|c)KvQ|U0x1q@?FWBE%->iMx$o90fBM1;irU_`
zlBVk_nn_%r;~03pp6u<>f1$YlrGGbe_jk5;cXxL78-Lnr>~6z<#NHg|kXt5rB!u`A
znx%^BP5b^pOYZ)^e)IP5q&B{u!=iD6_jh;m_J6yv({T2G@5$DaKZ&jT4?Vs758r>5
zNu=P$8L2TBN9gl|xQ`!&m3ofeCyGy>oGWsP=2k*%>_J+5&m+7x=y&g8KiW+oW!$FS&5+ZBK<0|+NU$twpt6DE=`@IUv
zIR?L_!AzA2$krb}ddREPGB9}`^o3W#w-{t~JPJWt$jHe^vI&V3YwMR2;7}lcpihg;
zJy>QX!iz-pKXEibM}(&zYv_9L%VV6u<6l2j#jQAlCGPJE&+7mm?gVgg-mYN)7PX#4
z1H`u&Vqzpx-xyjF(nGLAaZP-8qctYjy38~^hLyKP-G{Lj$XUmM-SF^y4OYNF>#Oj>
za-c}Yh`YiYh`c?nRCW>wB+5Jn!n2nz#5%}HcyZ8@(FV_o#|0<|&li8ENZ;Pk!O4mD
z{qdVu-pS#!f1C#;g^0^7y
zs+20Z{Qs0saaZvsP4yLNl#HZ
z26xP$DZZ*BVZnnfwIfv-A}&$SRq?z#d@`-{;YtF~si;y7*jhN~pgv+(b*m^Y>9@j>
zsMe7aR_X6TDTQia4c)O9;Eryorazzx1#FEh4G)<#^_N}xg6<$b;>$T
zFkRAtXnK;hdRUJtC7FY>>o`ND|CzNjmUb#@b29Z?8T*r6Z`LiEz5$Lp&4e?|I`~ag
zQCCB3G_LZ#s5+(g%9tE!gOuEAH_YIKygl@&;WaVDwP^@Z9zXOf@JEl(q~s(>Hk=>2
z&{NX5TU8VL@y*HG*9Wf-pH|n_Q3Hmezy@#Si`UN&{|Uc;RCOLb`pWyn-(DS@ygfX|
zMl*{T!W$M|6*Q>-b@b%jluMc0Q`m;`-UDfT?-5FW?_#ZEx9X>6y(-QN?!V4x9>lmC)hA^dI
zeM5ZI2bHc*)pz)T)3)122vRu9o6Q>UN;PSV5glIr>r}7h#q+1t_iG=Gzfac)pFdR%
z%FqF+TvQuz{oficqJI;1U;wMH_wNVws;I76P)&EVZFeM}{I8iPB-R>YE!jk|#t0&&
zjKHu-h=@{shC{J-@cQ+ecdwrvp1wG$if_Lab{|u_pv_&gkRY#{PZi1QFiYO_9po!A
zZ(nLDXv2%n9dOXV)wSd#WH$4Pm!GsQZp;gJ26tP_CAXvDjg*nC6}N|?j$zj@>YB&j
zO=D>GQnDIZ$1)oaKB*%#o(xYVBZxELFD+1LzfrZ4v4K7P0^QS5sEVhex>Xgw{*8=X
zx=y+)ejpL)8@^H+@NukKEluozk<9I}>N%vKxGJA7I9|1{B<9qRqwrubQrX9gf-Vt;=~>uunSv1;R+4yjrbrf1HU=*`mDKa#j*WLEz||
zGHztx=K)*4WYA2ko5CZBrM7HQRa75XPg=@CO%9;YySG2$cNTyI#`@Z*ivI#UKYH`}
zhsuikH=JBPG(bC>C`;&bt&1;&>U^SDLfa>L?t>^QPiorv{jQ})tO!yvxuq|
zT7DCcU%&a`&70>ZFAx54_*i7)luZ!auOs+68i+0PcN>S|UI2qNtQtAuomv>K%U;%W
zsm*4C_m<0SOqp`*(ukae?jm(KGHRu0i^d?bccKMV?dv9;U$novXE5tz8=I0EgGcxt
zNE7<&z*U{dheFheVz@4=Ex+_B>$Z<~{}L~KfC7eC$zOP$=v*H9z3}&BP6_}9ALSMX
z&3`(bDl5K~Nt!DfABZAba)FB%#%?JJjC@TEBtWoWZ%5{P25U+7E$B@_K7$NaQrntw
zY5~g08sOT6#H%IN
zUw*B>fB%>I#p8{?r6k(8o^|uAuYEN8|Ku{_Z23hkkLN;$c{&(VF04i@k1Xv*R=NqP
z+$gM)Xf?8w8gg6sx+S5~k2-)Q?VO;Nw-LDH5TjR
z=!C)>7&mFIv0=4yF8JAlW@-Ukomhx%ImTHs8(HmsJ|7G%irY@q^+^ETxOFP
z=Y!^(6_Ib(DuXrlp^RRIc1L7bjQR`|$3;`0%C2zSK!SmLkoQIeUj
zni`pMbzcH|KUIUBU8XzB;URb_e*>3t^)6c@&!og)iGBOB77F2TK;v_>zrqAgQ(6bdEaLFILe%$pa2?tP(nApcS
z?+DL@4rS@vb10EMh49xY+xfpR8WaxBqxZ_s6QNO}yHV5&n$|`xjhp}idnu9vd-74l
zqpMT8Q>^O`z*OPG;0!*kPvuk_K!nA%xCh-Tq!bQ4gG(D6s)iVaaiH&I8PshCs!?#R
zS10YEoiyvHnH%{fGwwwkfa&MKNwlGAYtAXZ=iC+YS*V#bApwg-WbDC1V$>a9tJ8r$
zsrbQ)PNAQ860ttXm`)^%LI4$voFp1R_)RnaW~A^-82Ld?!oI9~tJy(@F}~0OTyUd4
zO__oZj*j2_^IxXP(71fF{>Cs}m>=QBZ?;Zc0hW7FD{+uet<#I5Av*rAt;fM{fb)&5
zjlaR|Q{s)KgqnKD#9#g*&HyBeg0gnwXP*>*G@3%Y>0R-IQH1Y}SYN|gZU|J7;22U%
z%j$_}5V+bi)k#W=Hg(vU)oDpXTQTM8L5nnN(`ThRO%!fY3z_Jq^6pgitl5&1%0|*J
zPurHkH8YiM>BA<0lT8Mc|5v{MAAA|YMPlLpe_MNvE!Y2le;+=t{Qs6vO8fuSzp6Z=
zq$9%DMnycXH{!R6-^0iN9n8*49{jb+&jG%x8nmhYSnTi6i}_f;)S`!vKTXc?T^(SX
z^!pEkUMHsese0K(PV8{2U6+rm9ka*s?sQx+j{v21G-gw+ukR94nuwQZ$g9
z&8u-8&gq_vv!U;&CIV1BRTYvE|%QOu5d
zh10dv@U?6QpKa27*@;E}_9F%$krgStivGes(pfyGo5WxYN1c+1fcOa40w1MhJbotS
zp*?g4<_!eW(9CgPG^F5eFbc=`K-zlyaU#XYTOc*~SRN{l_>)~vo&sHo0O5>Ezm0-(
zIpCszuZB@j_hlp%I#g)fkbyJkeR3xP3J5d}@VzGj%;2H~Xe5;YZi7&&%~D}VqRDtT
z8RH|Y-=pXf1m$4lHEP?n9ry)J4MTkX>+QfVjnnO|#*?k>#y44;mcYfM>jK>=*Z?Z3
ze+9wow5sUWKX~dKhu0z?27N2!AoS`PYsts|Ix}y(%`wJUOP){KWrG8*|2mJz+tq5E
zOiV72+^N<1UoX6$ZRB-0U=iM?tWMWe`HyO;PO`{nCInI@H%;0yEOzMYzV5ipy47xz
z8CPM!Nq->mhn-jHPJ!43*RT9>yDO^y{^kAq58nItwO{|bR!vXA*qZF_xI&hF$>mz=
zxj{!%4+Ql!WnDnHMih%cH(c-Ir16NE)7}6auNG{>=N4dBMMj+XQ~HN&#o?
zG{%(sA6x+U?fc*M*6x$l`|qU`Nq&&^TB`hYRM)6qf@=`pfH0g8B5X*(C6o-WDXtoo
z%W%+X3a(I5Vi2-lB;$D!PDw9icmD%aQwD=F(JKN6r-)?Me
zug?E6%Iq3>eTC-}iGEn=b86g8XHwgz{kuvi@jcJWBS(a>+4QJb*_Ek&
zUkj$BJ19RTE5~}pvCYPCMBC$N#0Y1q33ymbS0IN|x`{MNU~<6NEh|@zD}Q)L
zNj|}unPqx%(RQaXMvcDIb&C
zipqcfGM)Zwu_A7d!r}N1{9u~?XZML?|KHwuvbVdU|H~+jWk8FayxAg8(Q|JOk&9J}
z)dH!R@~Avlz7FLigW%m
zQnaSDy_^-Qe$_aGqpt|UQM%z>Ndq9C9X*lLhE(
zQnOgS^7QkM{_Xc80MpL@6IcJ+c(T9J|1PIw*nhIU0}_4hncr4FI+TGvp&=z2g};*;
zv3B`2serWLa17YAEc?*IxJy!!>t@A+CLx*UW0lsRTBR$d%!Q_Y)%suf`zjcn=?_S9
zXV#yUJOB6u1EW^ljSNiF|1`FD9r?e3A;DMYe+i}Z`Oi82$*KO1aily!SWy9ERq^EP
zKOl?{A+U^BavP?=D9iDSsSE7Pad3`cQ1qo>TcDOfrf1rgmFE6Img)5W&SrmIrqTcX
zohPpTe`jldMgNykX1AMvWk@Znx@+*!#W7Pem;*!#L8Jni5vNYM+
zZpV0^<5`<$bibdyoz3a5qfUSp-^wGQGGn|r!k_60U?~IpeQoQo!*UW$vD4Vz+Ma4}
zpNFYEPghxJV^`MjjJe#~#$M9GUT9n|Rvaw+{FkQx(g*!6Y+%~`e{awA|7`5?aNuU2GjlI?RUq-RTsb~JsKMQ-|
zI0Ra7aP&grd|dm{k406Y04jnog=Q4fYp<(Dbw+WkP;PT*P2QL`1(IVJ6e!oOX-`T%
z=X1r;T$^BK>vZ5qB@@hDXfC-d$5++qd6vc*QfT6UO5&C&9u)~!C8ti&XE1iZq_gVp
zQd2h@=Z9g*Ydr>tV_=sX8PA2~LHKv6u~V(@Faa5mQ{6`>xXfFXmb}ayk`639{7-a7
zmaW-w@g!{{BZO2+=K?N0)x1_t1TJlgD{+1M+|>5VD<$~9;n%we{r~pv-qw!G|F>8A
zpXC&j*TQ*>4c036{p9YJe64zzU92zDe^Z5O`_j$-nl`Ef9pNIW3vn8;^Q2yU&+K%t&;3%j#M9T?)fzW7D%9
z+@#gC9C4I`tHMW_hfu6#jGPsM
z(umaWj;q5e9`FEgwaumznKh>lPiGV<%s4zKT7MUKky*)XuaiY~o=@}$zW|}neBX=b1p$Vl5#h~pfGh9^`eWLp90`-_Tw^@
zp)eB{-v&8bgxQ29qrmG#eLo!3&<)plarwIn2Re-}P$;n@m;^^|Fqnh;CCgVn)%sQp
zO7MvoaA5@7`V7PWUXQbQk5eU+|D??bcQ826QUS-FseJHpo`_(CD@#d%%IHW^FxS*u
zNI=S(nG?>YsFoY6%znAwp?-O_`oSywY8*QSAtWdWAp^syqazY*>#5HfGzTM!!QF1!+GMr7m8Fm{nb2r5IEY_I
zgJZbz<7u;VZ^6yxD(nRpK}SDxw;H|!Y-{T5YH1~)>1v0|#g*46&UEV6b~pMkNMjj(
z#|9pK&pVeMKkhq&%^+p#K1XD>#<^5b&2?kfq*#mv3=pdz{
z+$S4irtUT3bZ9idVG`v7#ov2B!2d@`TsOs^JJqa+b~2d3hFD*-IQa&SKuU;)R6%_F
zXoWz_O@EL~8RIj%Q~Vxo^tL?00k(j*OHa+Dr1TJGAf~jap>=cR8f1&hR!8MBI$IsO
z5+at%z{c_<+EV)bO*_ysSzyw+d88eLwXRs4l*6IgWyu8p+)jxJs(s=bh2`_oiHt+e
zyJz@{1Vj6dZD^J7
z@8c43KF;Ss&%XiCM1u~<_l>=BjD|a%%4xJCBA4uQVw|Xy1vz{2d9)$tz$Tk%{Fv#g
zNO1YGj;(ocotfH4*Ezga?1*WsYISbs#<%W$UNgO8x!mi>>V9WEwFPGdOa9@_UCI5<
zZ)v-XMQ%JR;1)rX4|=AZhQ2xHTz}-FUM+Rj6U$HLakr1~bPGtbSj_%&0Ih8d@r36k
zHj$@gOd?pU^Pd2YllLAxe|~K3xD>Jptj&787q$H!-bb5L3HKB-f4d-^&tRy4hfG>UdsxgHl`EGM?t&d1M)br!m*0rZTS&PnWm_kclSL$Nt
zTqN5n@{PIl8GK^QKsOn1pRQre)ubx5p*gXk+>D!?^t|Qw-7DI@`vRpX8jva>bmQ1@
zJf?&hsHRq)B1Z+-g>F!kF!LXT2)0bY$N>lx_TMTWIre{b{bW+NjSR<`>C8Sg8{c+w
zNe)h-6GVXvgx?056TgZ&LB_Q5r;)U>^<8+}%&^!w=;nko;GZZVqqVm&+_l`RSZXeD
z_LV))Hjzo
z|52QZr~3a=&_=Hl413WHdKuoq2e{b(x3Rsm?Z$uIZZuZ;AC^*5UP`GLq3jL(Tq8gw
z%VqeE4#IM{%5uVem2iO_1y>=i?8gvk@6Ah0x5wgsrZ;Yq@Y}Rn&FA5R0UYL%g$^gh
zzPoqY5-hI6=v`)B&XGD>NGhL9n%Ke=SKOSu(R1*~EgHqTq~`jG8ot!i-Kgz|ycvGf
z>0rC%{HayP{xqlRtcoR^L`?zok$4>h9oWGS-C!UlG1`hJgMQTEq?s6`#*3Yt2R9oI
z!^IOqtXf5>+I!XBYE?_jh8nRqwQI#*(f&(qic&#rjoN$1R=ZkC?Y&3ECQsk5@Sbx&
z#P8m7??s&0o3!p+_`+eeqoMU9@rOse>(+I3_mdyPI)#x0suB8v;M`&^kH6+E2a41eVdsTgjU!z_4a7s}75EC%1&k3Sz^?Hk#W<
zMu!xrSW5o&+T_EUrw_juK7m&^{cMd~VuXh`Dos}Gy7Kmqf2Nc85wS@>yG*z
z_G8wi&}r{a(noHySRNe*b@=%TvX|prwG_POzwj(>&V^t#bmGL;8#7dpkQ(WcTZ<2G
zP^R-2$>y5kI{7Q5L5I-Z8-CI4vBft^DuuPYyN9No4hgY%E2ijs)eF
zo6Y-3bU*zb!!1Ms^ipvb`u9rmX7LsON1mb^xmUe7on|F%3j8lT4@V>)dlgs9JEbt#
zMCv@K&yVU*A6#O9{HBrJeM%MKw8OEcum60F>u`c_s;-z)$d>^in>@3_p&kt>u_7jaLRR^?L{C4
z=^cmTXp8q#;5Cr2!@no$!s3%Sn`xNxeeO#;9$H+ur_(>5+P0;GeMq&c3xreXNSoE|r=ws}neZ
z#rxK+>rwu`v+&?>&!rQb^ZwysEXi2*
zy2u=Q#(m~ScRFG3Vczq_KF)oR-*lmNe`Lws{q95uMk0Ot9ea5U7c=i0gNQSW`HR~{
zk#+lq_dR4Cn6?
zN1Pv@N3HJD#@}6vr5~Lf9{`Dzk(*+E`{M;;3S=bvKZ1lY0SYbM8?lWGBDzpBU}t`*
z@R&_Y-MPKuCy6)r8#BWN(VvF8z057`>oMPx#`VCdis;A|@>_ptsIy_p*4GCvr>U0c
zgJum5D0t0-70sD6A&O=xPF>kG*@#g<{Gh>d%`^t*H<)JJ$CM+!Pze;ZzoNqgdupAw
zuAWZ0SycXOBKE4$AAownA>Q;H>0Ke}7&tn;Yp4KHiJ0v*njo)NOGeyJKa!X`i?E^3
z`LUXV1n>aaT+J`~ngO!lV?S-Mj;RUIXm){H8zC3fDI5jt0D#msol-Uzo!_WvQP0ZS
zk*QoIq4~Vh`x3#cM6~I3;!fQGWUe}Gp;c>gBN_OOF~*A5k75GE)L;eNBGLp6rox>?GicPz)kc@i*ZCH$oH(%klD&aq>j5<4
zzh5PT%AGaQM)@q%5RidXjDt7V4p(!bO|Xw4?cLn(IPbhrf*t7rNMgMOUsDOhfv!H-
zCycq_d1nbXaNdW`_ZSL4)wH}aWXtI>Hh!y9;2rhu6kQ-|j8VnG6-c7wQXlm~w)fD;
zGmn1%LhScRZ@oPZ9~a+S9Q&xFeZRP_gktq3|-9jPL-orTjgKD{gwzz}3Y~aCemQ%0psmjh;G=!1s+}-zGVzf0%xr
z6_8hKA_~f`DT~z%j-@H(^S6uF&NNj~sa_x*(k;Vr-__412*~n1i8~{U7rF|#RJgaH
z(Rtr5>>mr3+X^uWPe&y`N893OTOYW~Ts9S@0*|>f2PV|Z-tmbbgD#TWF;>iL%1UR(
zY!3>fSKy^)aJPL?0U5ye4DDQiGe=VrQIe8cFD55wxpELnN0so~qIV!qblY8D6eak<
z?00jT{|`~w-oOudk3?vsz1E5bnI!EUsXtvYPUska%8pGiCbjGS1a~!GO%%{r&o#FzV7mN2~q<;s~5#4t;gd0WObt-P3v6!wktR
z*LeccB%O*;BzuKSF@;4`wJF3^zsr6B1RR##L`o;LQ79MTe|kD_J$q5v&djGq1Sl0rfJs*@0;;`{qoX=gE$nd;nxE&JUYmGzm=FEbSuMH7
zIWeMTLlA&aYy^o>sqvA6p72=wI7_aVx{ljIJB
z+1=zMl!+<1hUMtj;7Mo_*>Pm4Ng^S$_O>^EaNK9#sO>S(YyaU4?rEk!$MGhokt)Y3
z6Y*6qr9-BcyBPYpDAc=Y`TJv%Y6H4C)t0Thh;04%)Xr99`zIcDon==DO_mywHNT?H
z)p3@`)1QAXMZl>0nr(3
zscwK{;KN>p0q7Q)q$Wp)ZL^jAB|o-ylruF|Bz!aTjA<-e$kAMxX;PyOqu#UR6#;>pM>vdBkcdl5tzutfYkWCP-HS)9$VDm*T
zdY(d=IQMSo<5F=4pO~
zz1kUi?ujv?r;=WxG9?zAe%I_D?4mhr2qHNSmCTN%?VBf)Xcq*TyxJ;FKhJByM5y&j
zI{yN94{f+E&Mi(4bE3lIzkw2a*<4k#FFnIfv!eeL0zt?&1h=JL9c?
zx>LUnk=0B(^T^hu!qebiM}dBzfi&?4@YP>M7pCpRUjBuD)&M2Y6#-y@$7lKoAGJ`j
z3#Zi%#=UXV7gSxbDn@c#{^b_1rUju=7F2UtSg`%BbNy~W>>u>5!)`#~jdAqbnwMr~
zH-fy#$NdCT8|IQO^7RM9G~x@dNf9-|ZUv!i<59;%T*#I-8`l{!y5L<+drjAmRr!!n
z_0#CT4u4FNbU8lN1@nBSD=S)F?hJu1=XkMG*5yKytBxojm))&lgL0l&-wq~h5Sp#<
zUgnO_gF)*JvZVCCTaX1g^j2YDI~>-Z*Y=<+7mE^~;ioZ}DeDi3V^BW;Lot8
zCTfI0vXW*+NFqL>Bww|Cxs3Woks_!0=?MvCm(i@l%N8hCXb8A&=58dmqEJj2=voEfUF-dFpMr@$=1}xgHeaE)%Pd|JBS`6kd1Yy^YH&$vJf9g~>
z+9VPoK4aIt^KEHcu~lXiY;hU&Z_N!WdVHL(J9A@IW(%}F-ZDrZ`~D^2p(elcqNz-j
zT9)GJoC^Di0UkG;$W{6on7c3Ik)G>GkrOiASP}b9ocS=nXtHUYe_>~spKht@AHQ(G
zucP5oL1U`XYS-M_B(W>`)2GQbe=bAu-LCi|`J
zNewwWoW8{nt@Xy^Ll{|jvSvu^t)?7tTL5+~p5z`SvOxv+1_>#u73dn6Nxl{|+UY`l
zY1(*8BgF8qp6eIvf^we8{WUYO{1*ZEC_mA!Y+I#;(wS<7lHOP65u81r)hgK4-AQi2
z%F{zZb}^JO($OhtymdJ;Q}LiiY94e5?fOqB^r>|mTh3_QzH+#9__a}E9>)`#8Wj4a
z;U)IDv>P0XKl05ghf&6Xl|IrOb0u{7;jL$CxRnD#LJd
zpoK!NFWYM48Oh7=cm@H)%TWff3Wepwuq~&$y0*wYx(14HFt0lUgv_V6{W_>&TmC9#Cgn!Gh
ztm!{$R4QdGnk6F66MuQ|+oFI;CWD9i{o>{fzQjUBYsEmHFBSSxd8xH>HTr)?QQuz6
pPy_KN9~&Oas28c%-TqQ+oVh4R5C8wAFnx*xek5^D0}$Z>{s+$aDeeFO

literal 0
HcmV?d00001

diff --git a/k8s/vim b/k8s/vim
new file mode 100644
index 00000000..e69de29b

From 2791f9c8dbdcf33363a68d03c0266912f02a4f5c Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Sat, 14 Sep 2024 15:15:29 +0800
Subject: [PATCH 096/381] =?UTF-8?q?=E6=94=B9=E9=80=A0=E4=B8=BA=E5=8F=AF?=
 =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BD=BF=E7=94=A8=E4=BB=A3=E7=90=86=E6=9C=8D?=
 =?UTF-8?q?=E5=8A=A1=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ruoyi/platform/utils/NewHttpUtils.java    | 132 ++++++++++++++++++
 1 file changed, 132 insertions(+)
 create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java
new file mode 100644
index 00000000..da117614
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java
@@ -0,0 +1,132 @@
+package com.ruoyi.platform.utils;
+import org.apache.http.HttpHost;
+import org.apache.http.client.methods.*;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.net.ssl.SSLContext;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
+
+@Component
+public class NewHttpUtils {
+
+    private static final Logger log = LoggerFactory.getLogger(NewHttpUtils.class);
+
+    @Value("${proxy.useProxy:false}")
+    private boolean useProxy;
+
+    @Value("${proxy.host}")
+    private String host;
+
+    @Value("${proxy.port}")
+    private Integer port;
+
+    private static CloseableHttpClient httpClient;
+
+    @PostConstruct
+    public void init() {
+        try {
+            SSLContext sslContext = SSLContextBuilder.create()
+                    .loadTrustMaterial(new TrustSelfSignedStrategy())
+                    .build();
+
+            SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext);
+
+            if (useProxy) {
+                httpClient = HttpClients.custom()
+                        .setSSLSocketFactory(sslSocketFactory)
+                        .setProxy(new HttpHost(host, port))
+                        .build();
+            } else {
+                httpClient = HttpClients.custom()
+                        .setSSLSocketFactory(sslSocketFactory)
+                        .build();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to initialize HttpClient", e);
+        }
+    }
+
+    public static String sendGet(String url, String param) {
+        return sendRequest(new HttpGet(), url, param, null, null);
+    }
+
+    public static String sendPost(String url, String param, String body) {
+        return sendRequest(new HttpPost(), url, param, null, body);
+    }
+
+    public static String sendGetWithToken(String url, String param, String token) {
+        return sendRequest(new HttpGet(), url, param, token, null);
+    }
+
+    public static String sendPostWithToken(String url, String param, String token, String body) {
+        return sendRequest(new HttpPost(), url, param, token, body);
+    }
+
+    public static String sendDeleteWithToken(String url, String param, String token) {
+        return sendRequest(new HttpDelete(), url, param, token, null);
+    }
+
+    private static String sendRequest(HttpRequestBase request, String url, String param, String token, String body) {
+        if (httpClient == null) {
+            throw new IllegalStateException("HttpClient is not initialized");
+        }
+
+        String result = "";
+        try {
+            URIBuilder uriBuilder = new URIBuilder(url);
+            if (param != null && !param.isEmpty()) {
+                String[] pairs = param.split("&");
+                for (String pair : pairs) {
+                    int idx = pair.indexOf("=");
+                    if (idx != -1) {
+                        uriBuilder.setParameter(pair.substring(0, idx), pair.substring(idx + 1));
+                    }
+                }
+            }
+
+            URI uri = uriBuilder.build();
+            request.setURI(uri);
+
+            request.setHeader("Content-Type", "application/json");
+            if (token != null) {
+                request.setHeader("Authorization", "Bearer " + token);
+            }
+
+            if (request instanceof HttpEntityEnclosingRequestBase && body != null) {
+                ((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(body, StandardCharsets.UTF_8));
+            }
+
+            log.info("Executing request: " + request.getRequestLine());
+
+            try (CloseableHttpResponse response = httpClient.execute(request)) {
+                int statusCode = response.getStatusLine().getStatusCode();
+                if (statusCode >= 200 && statusCode < 300) {
+                    result = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
+                } else {
+                    throw new IOException("HTTP request failed with response code: " + statusCode);
+                }
+                log.info("Response: " + result);
+            }
+        } catch (URISyntaxException e) {
+            log.error("URISyntaxException, url=" + url + ", param=" + param, e);
+        } catch (IOException e) {
+            log.error("IOException, url=" + url + ", param=" + param, e);
+        }
+        return result;
+    }
+}

From 8ed145326d10fb2c0a9a3d47f4f6b05f2e97f361 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 09:51:58 +0800
Subject: [PATCH 097/381] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../service/impl/ModelsServiceImpl.java       | 68 +++++++------------
 .../service/impl/NewDatasetServiceImpl.java   | 40 +++++------
 2 files changed, 46 insertions(+), 62 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 6513cb5c..ad2309f8 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -548,10 +548,6 @@ public class ModelsServiceImpl implements ModelsService {
             String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
             String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
 
-//            String ci4sUsername = "chenzhihang";
-//            String gitLinkUsername = "chenzhihang";
-//            String gitLinkPassword = "czh19970311";
-
             Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword);
             Integer userId = (Integer) userInfo.get("user_id");
 
@@ -574,17 +570,17 @@ public class ModelsServiceImpl implements ModelsService {
             gitProjectVo.setUserId(userId);
 
             // 创建项目
-            Map project = gitService.createProject(token,gitProjectVo);
+            Map project = gitService.createProject(token, gitProjectVo);
             Integer gitlinIid = (Integer) project.get("id");
             if (gitlinIid == null) {
                 throw new Exception("创建模型失败:" + project.get("message"));
             }
             // 创建分支
-            gitService.createBranch(token,(String) userInfo.get("login"), repositoryName, modelsVo.getVersion(), "master");
-            // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType
-            gitService.createTopic(token,gitlinIid, "ci4s_model");
-            gitService.createTopic(token,gitlinIid, "modeltag_" + modelsVo.getModelTag());
-            gitService.createTopic(token,gitlinIid, "modeltype_" + modelsVo.getModelType());
+            gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, modelsVo.getVersion(), "master");
+            // 定义标签 标签1:ci4s-model 标签2:ModelTag 标签3:ModelType
+            gitService.createTopic(token, gitlinIid, "ci4s-model");
+            gitService.createTopic(token, gitlinIid, "modeltag-" + modelsVo.getModelTag());
+            gitService.createTopic(token, gitlinIid, "modeltype-" + modelsVo.getModelType());
 
             String branchName = modelsVo.getVersion();
             String owner = (String) userInfo.get("login");
@@ -663,10 +659,6 @@ public class ModelsServiceImpl implements ModelsService {
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
         String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
 
-//        String ci4sUsername = "chenzhihang";
-//        String gitLinkUsername = "chenzhihang";
-//        String gitLinkPassword = "czh19970311";
-
         Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword);
 
         String repositoryName = modelsVo.getIdentifier() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getIdentifier();
@@ -759,7 +751,6 @@ public class ModelsServiceImpl implements ModelsService {
         for (MultipartFile file : files) {
             // 构建objectName
             String username = SecurityUtils.getLoginUser().getUsername();
-//            String username = "chenzhihang";
             String fileName = file.getOriginalFilename();
             String path = localPath + "/temp/" + username + "/models/" + uuid;
             long sizeInBytes = file.getSize();
@@ -824,19 +815,15 @@ public class ModelsServiceImpl implements ModelsService {
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
         String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
 
-//        String ci4sUsername = "chenzhihang";
-//        String gitLinkUsername = "chenzhihang";
-//        String gitLinkPassword = "czh19970311";
-
         Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword);
         String token = (String) userInfo.get("token");
 
         //拼接查询url
         String modelTagName = modelsVo.getModelTag();
         String modelTypeName = modelsVo.getModelType();
-        String topic_name = "ci4s_model";
-        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTypeName;
-        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype_" + modelTypeName;
+        String topic_name = "ci4s-model";
+        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag-" + modelTypeName;
+        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype-" + modelTypeName;
 
         String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name;
 
@@ -866,9 +853,9 @@ public class ModelsServiceImpl implements ModelsService {
         //拼接查询url
         String modelTagName = modelsVo.getModelTag();
         String modelTypeName = modelsVo.getModelType();
-        String topic_name = "ci4s_model";
-        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTagName;
-        topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype_" + modelTypeName;
+        String topic_name = "ci4s-model";
+        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag-" + modelTagName;
+        topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype-" + modelTypeName;
 
         String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name;
         String name = modelsVo.getName();
@@ -886,7 +873,7 @@ public class ModelsServiceImpl implements ModelsService {
     @Override
     public List> getVersionList(String identifier, String owner) throws Exception {
         String token = gitService.checkoutToken();
-        List> brancheList = gitService.getBrancheList(token,owner, identifier);
+        List> brancheList = gitService.getBrancheList(token, owner, identifier);
         return brancheList.stream()
                 .filter(branch -> !"master".equals(branch.get("name")))
                 .collect(Collectors.toList());
@@ -898,9 +885,6 @@ public class ModelsServiceImpl implements ModelsService {
         String ci4sUsername = loginUser.getUsername();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
         String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword();
-//        String ci4sUsername = "chenzhihang";
-//        String gitLinkUsername = "chenzhihang";
-//        String gitLinkPassword = "czh19970311";
 
         if (StringUtils.isEmpty(version)) {
             List> versionList = this.getVersionList(identifier, owner);
@@ -954,7 +938,7 @@ public class ModelsServiceImpl implements ModelsService {
     @Override
     public void deleteModel(Integer repoId, String identifier, String owner) throws Exception {
         String token = gitService.checkoutToken();
-        gitService.deleteProject(token,owner, identifier);
+        gitService.deleteProject(token, owner, identifier);
         //删除模型依赖
         modelDependency1Dao.deleteModel(repoId, identifier, owner, null);
 
@@ -968,7 +952,7 @@ public class ModelsServiceImpl implements ModelsService {
     @Override
     public void deleteVersion(Integer repoId, String identifier, String owner, String version, String relativePath) throws Exception {
         String token = gitService.checkoutToken();
-        gitService.deleteBranch(token,owner, identifier, version, localPath + relativePath);
+        gitService.deleteBranch(token, owner, identifier, version, localPath + relativePath);
         //删除模型依赖
         modelDependency1Dao.deleteModel(repoId, identifier, owner, version);
         HashMap map = new HashMap<>();
@@ -995,19 +979,19 @@ public class ModelsServiceImpl implements ModelsService {
                         topics.forEach(topic -> {
                             String name = (String) topic.get("name");
                             if (name != null) {
-                                if (name.startsWith("modeltag_")) {
-                                    newModelVo.setModelTag(name.substring("modeltag_".length()));
-                                } else if (name.startsWith("modeltype_")) {
-                                    newModelVo.setModelType(name.substring("modeltype_".length()));
-                                }
-                            }
+                                if (name.startsWith("modeltag-")) {
+                                    newModelVo.setModelTag(name.substring("modeltag-".length()));
+                                } else if (name.startsWith("modeltype-")) {
+                                    newModelVo.setModelType(name.substring("modeltype-".length()));
+                        }
+                        }
                         });
                     }
-                    Map author = (Map) map.get("author");
-                    newModelVo.setCreateBy((String) author.get("name"));
-                    newModelVo.setOwner((String) author.get("login"));
+                        Map author = (Map) map.get("author");
+                        newModelVo.setCreateBy((String) author.get("name"));
+                        newModelVo.setOwner((String) author.get("login"));
+                    }
                 }
-            }
             return newModelVos;
         }
         return new ArrayList<>();
@@ -1059,7 +1043,7 @@ public class ModelsServiceImpl implements ModelsService {
     }
 
     Map getUserInfo(String ci4sUsername, String gitLinkUsername, String gitLinkPassword) throws IOException {
-        Jedis jedis = new Jedis(redisHost,redisPort);
+        Jedis jedis = new Jedis(redisHost, redisPort);
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         if (userReq == null) {
             gitService.login(gitLinkUsername, gitLinkPassword);
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 806ee48a..228f2877 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -93,10 +93,10 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         // 创建分支
         String branchName = datasetVo.getVersion();
         gitService.createBranch(token,(String) userInfo.get("login"), repositoryName, branchName, "master");
-        // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType
-        gitService.createTopic(token,gitlinIid, "ci4s_dataset");
-        gitService.createTopic(token,gitlinIid, "DataTag_" + datasetVo.getDataTag());
-        gitService.createTopic(token, gitlinIid, "DataType_" + datasetVo.getDataType());
+        // 定义标签 标签1:ci4s-dataset 标签2:DataTag 标签3:DataType
+        gitService.createTopic(token,gitlinIid, "ci4s-dataset");
+        gitService.createTopic(token,gitlinIid, "datatag-" + datasetVo.getDataTag());
+        gitService.createTopic(token, gitlinIid, "datatype-" + datasetVo.getDataType());
         // 得到项目地址
         String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git";
 
@@ -227,9 +227,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         // 拼接查询url
         String datasetTagName = dataset.getDatasetTagName();
         String datasetTypeName = dataset.getDatasetTypeName();
-        String topic_name = "ci4s_dataset";
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName;
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName;
+        String topic_name = "ci4s-dataset";
+        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag-" + datasetTagName;
+        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype-" + datasetTypeName;
         String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name;
         String name = dataset.getName();
 
@@ -255,9 +255,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         // 拼接查询url
         String datasetTagName = dataset.getDatasetTagName();
         String datasetTypeName = dataset.getDatasetTypeName();
-        String topic_name = "ci4s_dataset";
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag_" + datasetTagName;
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype_" + datasetTypeName;
+        String topic_name = "ci4s-dataset";
+        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag-" + datasetTagName;
+        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype-" + datasetTypeName;
         String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name;
         String name = dataset.getName();
         if (StringUtils.isNotEmpty(name)){
@@ -436,20 +436,20 @@ public class NewDatasetServiceImpl implements NewDatasetService {
                         topics.forEach(topic -> {
                             String name = (String) topic.get("name");
                             if (name != null) {
-                                if (name.startsWith("datatag_")) {
-                                    newDatasetVo.setDataTag(name.substring("datatag_".length()));
-                                } else if (name.startsWith("datatype_")) {
-                                    newDatasetVo.setDataType(name.substring("datatype_".length()));
-                                }
-                            }
+                                if (name.startsWith("datatag-")) {
+                                    newDatasetVo.setDataTag(name.substring("datatag-".length()));
+                                } else if (name.startsWith("datatype-")) {
+                                    newDatasetVo.setDataType(name.substring("datatype-".length()));
+                        }
+                        }
                         });
                     }
 
-                    Map author = (Map) map.get("author");
-                    newDatasetVo.setCreateBy((String) author.get("name"));
-                    newDatasetVo.setOwner((String) author.get("login"));
+                        Map author = (Map) map.get("author");
+                        newDatasetVo.setCreateBy((String) author.get("name"));
+                        newDatasetVo.setOwner((String) author.get("login"));
+                    }
                 }
-            }
 
             return newDatasetVos;
         }

From d38703abd7f3bd3728aae4b3369d3754dbdb5562 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 10:23:08 +0800
Subject: [PATCH 098/381] =?UTF-8?q?=E6=94=B9=E9=80=A0=E4=B8=BA=E5=8F=AF?=
 =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BD=BF=E7=94=A8=E4=BB=A3=E7=90=86=E6=9C=8D?=
 =?UTF-8?q?=E5=8A=A1=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../platform/service/impl/DvcServiceImpl.java | 16 ++--
 .../service/impl/ModelsServiceImpl.java       | 48 ++++++-----
 .../service/impl/NewDatasetServiceImpl.java   | 47 ++++++-----
 .../com/ruoyi/platform/utils/DVCUtils.java    | 83 +++++++++++++------
 4 files changed, 115 insertions(+), 79 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java
index a962588f..192dfe7c 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java
@@ -7,6 +7,8 @@ import com.ruoyi.system.api.model.LoginUser;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 @Service
 public class DvcServiceImpl implements DvcService {
     @Value("${minio.accessKey}")
@@ -15,20 +17,22 @@ public class DvcServiceImpl implements DvcService {
     String secretAccessKey;
     @Value("${minio.endpoint}")
     String endpoint;
+    @Resource
+    private DVCUtils dvcUtils;
     @Override
     public void initaddpushDvc(String localPath) throws Exception {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         // dvc init 初始化
-        DVCUtils.dvcInit(localPath);
+        dvcUtils.dvcInit(localPath);
         // 配置远程S3地址
-        DVCUtils.dvcRemoteAdd(localPath,"");
-//        DVCUtils.dvcConfigS3Credentials(localPath,endpoint, accessKeyId, secretAccessKey);
+        dvcUtils.dvcRemoteAdd(localPath,"");
+//        dvcUtils.dvcConfigS3Credentials(localPath,endpoint, accessKeyId, secretAccessKey);
         // dvc 跟踪
-        DVCUtils.dvcAdd(localPath , "data");
+        dvcUtils.dvcAdd(localPath , "data");
         // git commit
-        DVCUtils.gitCommit(localPath, "commit from ci4s with "+loginUser.getUsername());
+        dvcUtils.gitCommit(localPath, "commit from ci4s with "+loginUser.getUsername());
         // dvc push 到远程S3
-        DVCUtils.dvcPush(localPath);
+        dvcUtils.dvcPush(localPath);
     }
 
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index ad2cc90a..762dd69e 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -78,6 +78,8 @@ public class ModelsServiceImpl implements ModelsService {
     private AssetIconService assetIconService;
     @Resource
     private NewHttpUtils httpUtils;
+    @Resource
+    private DVCUtils dvcUtils;
 
     // 固定存储桶名
     @Value("${minio.dataReleaseBucketName}")
@@ -597,8 +599,8 @@ public class ModelsServiceImpl implements ModelsService {
             String modelPath = rootPath + "/model";
             String metaPath = rootPath + "/metadata";
 
-            DVCUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
-            DVCUtils.moveFiles(sourcePath, modelPath);
+            dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
+            dvcUtils.moveFiles(sourcePath, modelPath);
 
             //拼接生产的元数据后写入yaml文件
             ModelMetaVo modelMetaVo = new ModelMetaVo();
@@ -625,21 +627,21 @@ public class ModelsServiceImpl implements ModelsService {
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
             String meta = JSON.toJSONString(modelMetaVo);
 
-            DVCUtils.dvcInit(rootPath);
+            dvcUtils.dvcInit(rootPath);
             // 配置远程S3地址
             String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName;
-            DVCUtils.dvcRemoteAdd(rootPath, s3Path);
-            DVCUtils.dvcConfigS3Credentials(rootPath, endpoint);
-            DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
-            DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
+            dvcUtils.dvcRemoteAdd(rootPath, s3Path);
+            dvcUtils.dvcConfigS3Credentials(rootPath, endpoint);
+            dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
+            dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
 
             // dvc 跟踪
-            DVCUtils.dvcAdd(rootPath, "model");
+            dvcUtils.dvcAdd(rootPath, "model");
             // git commit
-            DVCUtils.gitAdd(rootPath, ".");
-            DVCUtils.gitCommit(rootPath, "commit from ci4s with " + ci4sUsername);
-            DVCUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword);
-            DVCUtils.dvcPush(rootPath);
+            dvcUtils.gitAdd(rootPath, ".");
+            dvcUtils.gitCommit(rootPath, "commit from ci4s with " + ci4sUsername);
+            dvcUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword);
+            dvcUtils.dvcPush(rootPath);
 
             //保存模型依赖
             modelDependency.setRepoId(gitlinIid);
@@ -694,10 +696,10 @@ public class ModelsServiceImpl implements ModelsService {
             ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class);
 
             // 创建本地分支
-            DVCUtils.createLocalBranchBasedOnMaster(rootPath, branchName);
+            dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName);
             //dvc checkout
-            DVCUtils.dvcCheckout(rootPath);
-            DVCUtils.moveFiles(sourcePath, modelPath);
+            dvcUtils.dvcCheckout(rootPath);
+            dvcUtils.moveFiles(sourcePath, modelPath);
 
             //拼接生产的元数据后写入yaml文件
             ModelMetaVo modelMetaVo = new ModelMetaVo();
@@ -727,15 +729,15 @@ public class ModelsServiceImpl implements ModelsService {
 
             // 配置远程S3地址
             String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName;
-            DVCUtils.dvcRemoteAdd(rootPath, s3Path);
-            DVCUtils.dvcConfigS3Credentials(rootPath, endpoint);
-            DVCUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
-            DVCUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
+            dvcUtils.dvcRemoteAdd(rootPath, s3Path);
+            dvcUtils.dvcConfigS3Credentials(rootPath, endpoint);
+            dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
+            dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
             // dvc 跟踪
-            DVCUtils.dvcAdd(rootPath, "model");
-            DVCUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName);
+            dvcUtils.dvcAdd(rootPath, "model");
+            dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName);
             //dvc push 到远程S3
-            DVCUtils.dvcPush(rootPath);
+            dvcUtils.dvcPush(rootPath);
 
             //保存模型依赖
             modelDependency.setRepoId(modelsVo.getId());
@@ -912,7 +914,7 @@ public class ModelsServiceImpl implements ModelsService {
         }
 
         // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP
-        List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, name, version, "model", gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, name, version, "model", gitLinkUsername, gitLinkPassword);
 
         Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + name + "/metadata/metadata.yaml");
 
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index e0b80170..c09f8a14 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -66,6 +66,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     private NewHttpUtils httpUtils;
     @Resource
     private DatasetTempStorageService datasetTempStorageService;
+    @Resource
+    private DVCUtils dvcUtils;
     @Override
     public String newCreateDataset(NewDatasetVo datasetVo) throws Exception {
         String token = gitService.checkoutToken();
@@ -109,10 +111,10 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         String datasetPath = localPath + "/dataset";
 
         // 命令行操作 git clone 项目地址
-        DVCUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
+        dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
         String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName;
 
-        DVCUtils.moveFiles(sourcePath, datasetPath);
+        dvcUtils.moveFiles(sourcePath, datasetPath);
         // 拼接生产的元数据后写入yaml文件
         datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login")));
         datasetVo.setUpdateTime(DateUtils.getTime());
@@ -132,20 +134,19 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
         YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset");
         // dvc init 初始化
-        DVCUtils.dvcInit(localPath);
+        dvcUtils.dvcInit(localPath);
         // 配置远程S3地址
-        DVCUtils.dvcRemoteAdd(localPath, s3Path);
-        DVCUtils.dvcConfigS3Credentials(localPath, endpoint);
-        DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId);
-        DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey);
+        dvcUtils.dvcRemoteAdd(localPath, s3Path);
+        dvcUtils.dvcConfigS3Credentials(localPath, endpoint);
+        dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId);
+        dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey);
         // dvc 跟踪
-        DVCUtils.dvcAdd(localPath, "dataset");
+        dvcUtils.dvcAdd(localPath, "dataset");
         // git commit
-        DVCUtils.gitAdd(localPath, ".");
-        DVCUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername());
-        DVCUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword);
+        dvcUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername());
+        dvcUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword);
         // dvc push 到远程S3
-        DVCUtils.dvcPush(localPath);
+        dvcUtils.dvcPush(localPath);
         return "新增数据集成功";
     }
 
@@ -172,15 +173,15 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);
 
         // 创建本地分支
-        DVCUtils.createLocalBranchBasedOnMaster(localPath, branchName);
+        dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName);
 
         //dvc checkout
-        DVCUtils.dvcCheckout(localPath);
+        dvcUtils.dvcCheckout(localPath);
 
         // 准备数据
         String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName;
 
-        DVCUtils.moveFiles(sourcePath, datasetPath);
+        dvcUtils.moveFiles(sourcePath, datasetPath);
         // 拼接生产的元数据后写入yaml文件
         datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login")));
         datasetVo.setUpdateTime(DateUtils.getTime());
@@ -205,15 +206,15 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset");
         //dvc数据跟踪
         // 配置远程S3地址
-        DVCUtils.dvcRemoteAdd(localPath, s3Path);
-        DVCUtils.dvcConfigS3Credentials(localPath, endpoint);
-        DVCUtils.dvcConfigS3Credentials2(localPath, accessKeyId);
-        DVCUtils.dvcConfigS3Credentials3(localPath, secretAccessKey);
+        dvcUtils.dvcRemoteAdd(localPath, s3Path);
+        dvcUtils.dvcConfigS3Credentials(localPath, endpoint);
+        dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId);
+        dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey);
         // dvc 跟踪
-        DVCUtils.dvcAdd(localPath, "dataset");
-        DVCUtils.pushNewBranchToRemote(localPath,gitLinkUsername,gitLinkPassword,branchName);
+        dvcUtils.dvcAdd(localPath, "dataset");
+        dvcUtils.pushNewBranchToRemote(localPath,gitLinkUsername,gitLinkPassword,branchName);
         //dvc push 到远程S3
-        DVCUtils.dvcPush(localPath);
+        dvcUtils.dvcPush(localPath);
         return "新增数据集成功";
     }
 
@@ -289,7 +290,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             }
             version = (String) versionList.get(0).get("name");
         }
-        List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, name, version, "data",gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, name, version, "data",gitLinkUsername, gitLinkPassword);
         // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据
         Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + name + "/" + "dataset.yaml");
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
index c877721c..785efee6 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
@@ -9,6 +9,8 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
 import org.eclipse.jgit.transport.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -24,10 +26,32 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
+@Component
 public class DVCUtils {
     private static final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
     private static final Logger log = LoggerFactory.getLogger(DVCUtils.class);
     private static final ExecutorCompletionService completionService = new ExecutorCompletionService<>(executorService);
+    @Value("${proxy.useProxy:false}")
+    private boolean useProxy;
+
+    @Value("${proxy.host}")
+    private String host;
+
+    @Value("${proxy.port}")
+    private Integer port;
+    private class ProxyConfigCallback implements TransportConfigCallback {
+        @Override
+        public void configure(Transport transport) {
+            if (useProxy) {
+                System.setProperty("http.proxyHost", host);
+                System.setProperty("http.proxyPort", String.valueOf(port));
+                System.setProperty("https.proxyHost", host);
+                System.setProperty("https.proxyPort", String.valueOf(port));
+                log.info("Proxy configured: {}:{}", host, port);
+            }
+        }
+    }
+
     private static void runCommand(String command, String workingDir) throws Exception {
         ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));
         processBuilder.directory(new File(workingDir));
@@ -43,7 +67,7 @@ public class DVCUtils {
         }
     }
 
-    public static void moveFiles(String sourcePath, String targetPath) throws Exception {
+    public void moveFiles(String sourcePath, String targetPath) throws Exception {
         Path sourceDir = Paths.get(sourcePath);
         Path targetDir = Paths.get(targetPath);
 
@@ -54,17 +78,18 @@ public class DVCUtils {
         Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING);
     }
 
-    public static void gitClone(String localPath, String repoUrl, String branch, String username, String password) throws GitAPIException {
+    public void gitClone(String localPath, String repoUrl, String branch, String username, String password) throws GitAPIException {
         CloneCommand cloneCommand = Git.cloneRepository()
                 .setURI(repoUrl)
                 .setBranch(branch)
                 .setDirectory(new java.io.File(localPath))
+                .setTransportConfigCallback(new ProxyConfigCallback())
                 .setCredentialsProvider(new UsernamePasswordCredentialsProvider(username, password));
 
         cloneCommand.call();
     }
 
-    public static void gitClone(String localPath, String repoUrl, String username, String password) throws GitAPIException {
+    public void gitClone(String localPath, String repoUrl, String username, String password) throws GitAPIException {
         CloneCommand cloneCommand = Git.cloneRepository()
                 .setURI(repoUrl)
                 .setDirectory(new java.io.File(localPath))
@@ -74,7 +99,7 @@ public class DVCUtils {
     }
 
 
-    public static void gitAdd(String localPath, String filePath) throws IOException, GitAPIException {
+    public void gitAdd(String localPath, String filePath) throws IOException, GitAPIException {
         FileRepositoryBuilder builder = new FileRepositoryBuilder();
         Repository repository = builder.setGitDir(new File(localPath, ".git"))
                 .readEnvironment()
@@ -87,7 +112,7 @@ public class DVCUtils {
         }
     }
 
-    public static void gitCommit(String localPath, String commitMessage) throws IOException, GitAPIException {
+    public void gitCommit(String localPath, String commitMessage) throws IOException, GitAPIException {
         FileRepositoryBuilder builder = new FileRepositoryBuilder();
         Repository repository = builder.setGitDir(new File(localPath, ".git"))
                 .readEnvironment()
@@ -105,7 +130,7 @@ public class DVCUtils {
         }
     }
 
-    public static void gitPush(String localPath, String username, String password) throws IOException, GitAPIException {
+    public void gitPush(String localPath, String username, String password) throws IOException, GitAPIException {
         FileRepositoryBuilder builder = new FileRepositoryBuilder();
         Repository repository = builder.setGitDir(new File(localPath, ".git"))
                 .readEnvironment()
@@ -116,6 +141,7 @@ public class DVCUtils {
             CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);
             PushCommand pushCommand = git.push();
             pushCommand.setCredentialsProvider(credentialsProvider)
+                    .setTransportConfigCallback(new ProxyConfigCallback())
                     .setForce(true)
                     .call();
         }
@@ -129,7 +155,7 @@ public class DVCUtils {
      * @param username  远程仓库用户名
      * @param password  远程仓库密码
      */
-    public static void updateAllBranches(String localPath, String username, String password) {
+    public void updateAllBranches(String localPath, String username, String password) {
         try (Git git = Git.open(new File(localPath))) {
             // 设置凭证,用于远程仓库的认证
             UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);
@@ -171,7 +197,7 @@ public class DVCUtils {
      * @param password   远程仓库密码
      * @param branchName 需要更新的分支名称
      */
-    public static void updateBranch(String localPath, String username, String password, String branchName) {
+    public void updateBranch(String localPath, String username, String password, String branchName) {
         try (Git git = Git.open(new File(localPath))) {
             // 设置凭证,用于远程仓库的认证
             UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);
@@ -202,7 +228,7 @@ public class DVCUtils {
      * @param localPath  本地仓库路径
      * @param branchName 要创建的分支名称
      */
-    public static void createLocalBranch(String localPath, String branchName) {
+    public void createLocalBranch(String localPath, String branchName) {
         try (Git git = Git.open(new File(localPath))) {
             // 创建本地分支
             git.branchCreate().setName(branchName).call();
@@ -219,7 +245,7 @@ public class DVCUtils {
      * @param localPath  本地仓库路径
      * @param branchName 要创建的分支名称
      */
-    public static void createLocalBranchBasedOnMaster(String localPath, String branchName) {
+    public void createLocalBranchBasedOnMaster(String localPath, String branchName) {
         try (Git git = Git.open(new File(localPath))) {
             // 切换到 master 分支
             git.checkout()
@@ -241,7 +267,7 @@ public class DVCUtils {
      * @param password   远程仓库密码
      * @param branchName 要推送的分支名称
      */
-    public static void pushLocalBranchToRemote(String localPath, String username, String password, String branchName) {
+    public void pushLocalBranchToRemote(String localPath, String username, String password, String branchName) {
         try (Git git = Git.open(new File(localPath))) {
             // 设置凭证,用于远程仓库的认证
             UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);
@@ -279,7 +305,7 @@ public class DVCUtils {
      * @throws IOException     如果仓库路径无效
      * @throws GitAPIException 如果Git操作失败
      */
-    public static void pushNewBranchToRemote(String localPath, String username, String password, String branchName) throws IOException, GitAPIException {
+    public void pushNewBranchToRemote(String localPath, String username, String password, String branchName) throws IOException, GitAPIException {
         try (Git git = Git.open(new File(localPath))) {
             // 设置凭证,用于远程仓库的认证
             UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);
@@ -300,6 +326,7 @@ public class DVCUtils {
                     .setRemote("origin")
                     .setRefSpecs(refSpec)
                     .setCredentialsProvider(credentialsProvider)
+                    .setTransportConfigCallback(new ProxyConfigCallback())
                     .call();
 
             // 打印结果
@@ -326,7 +353,7 @@ public class DVCUtils {
         return false;
     }
 
-    public static void refreshRemoteBranches(String localPath, String username, String password, String branch) throws Exception {
+    public void refreshRemoteBranches(String localPath, String username, String password, String branch) throws Exception {
         try (Repository repository = new FileRepositoryBuilder()
                 .setGitDir(new File(localPath + "/.git"))
                 .readEnvironment()
@@ -349,6 +376,7 @@ public class DVCUtils {
             FetchResult fetchResult = git.fetch()
                     .setRemote("origin")
                     .setCredentialsProvider(credentialsProvider)
+                    .setTransportConfigCallback(new ProxyConfigCallback()) // 设置代理
                     .call();
 
             // 打印获取的远程分支
@@ -394,7 +422,7 @@ public class DVCUtils {
         dvcCheckout(localPath);
     }
 
-    private static void processBranch(Git git, Repository repository, UsernamePasswordCredentialsProvider credentialsProvider, String fullBranchName, String branchName) throws Exception {
+    private void processBranch(Git git, Repository repository, UsernamePasswordCredentialsProvider credentialsProvider, String fullBranchName, String branchName) throws Exception {
         // 检查本地分支是否存在
         Ref localRef = repository.findRef("refs/heads/" + branchName);
         if (localRef != null) {
@@ -422,6 +450,7 @@ public class DVCUtils {
         }
         // 执行 git pull
         PullCommand pullCommand = git.pull()
+                .setTransportConfigCallback(new ProxyConfigCallback())
                 .setCredentialsProvider(credentialsProvider);
         pullCommand.call();
     }
@@ -447,7 +476,7 @@ public class DVCUtils {
 
 
     
-    public static void gitFetch(String localPath, String username, String password) throws IOException, GitAPIException {
+    public void gitFetch(String localPath, String username, String password) throws IOException, GitAPIException {
         FileRepositoryBuilder builder = new FileRepositoryBuilder();
         Repository repository = builder.setGitDir(new File(localPath, ".git"))
                 .readEnvironment()
@@ -460,7 +489,7 @@ public class DVCUtils {
             fetchCommand.setCredentialsProvider(credentialsProvider).call();
         }
     }
-    public static void gitCheckoutBranch(String localPath, String branchName) throws IOException, GitAPIException {
+    public void gitCheckoutBranch(String localPath, String branchName) throws IOException, GitAPIException {
         FileRepositoryBuilder builder = new FileRepositoryBuilder();
         Repository repository = builder.setGitDir(new File(localPath, ".git"))
                 .readEnvironment()
@@ -473,7 +502,7 @@ public class DVCUtils {
         }
     }
 
-    public static void gitPull(String localPath, String username, String password) throws IOException, GitAPIException {
+    public void gitPull(String localPath, String username, String password) throws IOException, GitAPIException {
         FileRepositoryBuilder builder = new FileRepositoryBuilder();
         Repository repository = builder.setGitDir(new File(localPath, ".git"))
                 .readEnvironment()
@@ -487,50 +516,50 @@ public class DVCUtils {
         }
     }
 
-    public static void dvcInit(String localPath) throws Exception {
+    public void dvcInit(String localPath) throws Exception {
         String command = "dvc init";
         runCommand(command, localPath);
     }
 
-    public static void dvcAdd(String localPath, String filePath) throws Exception {
+    public void dvcAdd(String localPath, String filePath) throws Exception {
         String command = "dvc add " + filePath;
         runCommand(command, localPath);
     }
 
-    public static void dvcRemoteAdd(String localPath, String s3RemoteUrl) throws Exception {
+    public void dvcRemoteAdd(String localPath, String s3RemoteUrl) throws Exception {
         String command = "dvc remote add -d myremote s3://" + s3RemoteUrl;
         runCommand(command, localPath);
     }
 
-    public static void dvcConfigS3Credentials(String localPath, String endpointurl) throws Exception {
+    public void dvcConfigS3Credentials(String localPath, String endpointurl) throws Exception {
         String command = "dvc remote modify myremote endpointurl " + endpointurl;
         runCommand(command, localPath);
     }
 
-    public static void dvcConfigS3Credentials2(String localPath, String accessKeyId) throws Exception {
+    public void dvcConfigS3Credentials2(String localPath, String accessKeyId) throws Exception {
         String command = "dvc remote modify myremote access_key_id " + accessKeyId;
         runCommand(command, localPath);
     }
 
-    public static void dvcConfigS3Credentials3(String localPath, String secretAccessKey) throws Exception {
+    public void dvcConfigS3Credentials3(String localPath, String secretAccessKey) throws Exception {
         String command = "dvc remote modify myremote secret_access_key " + secretAccessKey;
         runCommand(command, localPath);
     }
 
-    public static void dvcPush(String localPath) throws Exception {
+    public void dvcPush(String localPath) throws Exception {
         String command = "dvc push -v";
         runCommand(command, localPath);
     }
 
     // 更新的 dvcPull 方法
-    public static void dvcPull(String localPath) throws Exception {
+    public void dvcPull(String localPath) throws Exception {
         String command = "dvc pull";
         runCommand(command, localPath);
     }
 
 
     //  方法
-    public static void dvcCheckout(String localPath) throws Exception {
+    public void dvcCheckout(String localPath) throws Exception {
         String command = "dvc checkout";
         runCommand(command, localPath);
     }
@@ -544,7 +573,7 @@ public class DVCUtils {
      * @param branch     分支名称
      * @return 包含文件路径、名称和大小的List>
      */
-    public static List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) {
+    public List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) {
         List> fileInfoList = new ArrayList<>();
 
         try {

From 752e2c851cb4a3ea007a3d8396e5f173ca0b9e7d Mon Sep 17 00:00:00 2001
From: somunslotus 
Date: Wed, 18 Sep 2024 11:58:58 +0800
Subject: [PATCH 099/381] x

---
 k8s/build-java.sh                             | 0
 k8s/build-node.sh                             | 0
 k8s/build.sh                                  | 0
 k8s/build_and_deploy.sh                       | 0
 k8s/deploy.sh                                 | 0
 k8s/dockerfiles/managent-dockerfile           | 4 ++--
 k8s/template-yaml/deploy/k8s-7management.yaml | 8 ++++++--
 7 files changed, 8 insertions(+), 4 deletions(-)
 mode change 100644 => 100755 k8s/build-java.sh
 mode change 100644 => 100755 k8s/build-node.sh
 mode change 100644 => 100755 k8s/build.sh
 mode change 100644 => 100755 k8s/build_and_deploy.sh
 mode change 100644 => 100755 k8s/deploy.sh

diff --git a/k8s/build-java.sh b/k8s/build-java.sh
old mode 100644
new mode 100755
diff --git a/k8s/build-node.sh b/k8s/build-node.sh
old mode 100644
new mode 100755
diff --git a/k8s/build.sh b/k8s/build.sh
old mode 100644
new mode 100755
diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh
old mode 100644
new mode 100755
diff --git a/k8s/deploy.sh b/k8s/deploy.sh
old mode 100644
new mode 100755
diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile
index 7338f094..b36b9eb1 100644
--- a/k8s/dockerfiles/managent-dockerfile
+++ b/k8s/dockerfiles/managent-dockerfile
@@ -1,6 +1,6 @@
 # 基础镜像
-FROM  172.20.32.187/ci4s/openjdk:8u162
-#FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
+#FROM  172.20.32.187/ci4s/openjdk:8u162
+FROM 172.20.32.187/ci4s/openjdk-dvc:2024829
 # author
 MAINTAINER ruoyi
 
diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml
index d92c2d68..db233ae0 100644
--- a/k8s/template-yaml/deploy/k8s-7management.yaml
+++ b/k8s/template-yaml/deploy/k8s-7management.yaml
@@ -15,10 +15,14 @@ spec:
     spec:
       containers:
       - name: ci4s-management-platform
-        image: 172.20.32.187/ci4s/managent:202406121003
+        image: 172.20.32.187/ci4s/ci4s-managent:202409181153
         ports:
         - containerPort: 9213
-
+        env:
+        - name: http_proxy
+          value: "http://172.20.32.253:3128"
+        - name: https_proxy
+          value: "http://172.20.32.253:3128"
 ---
 apiVersion: v1
 kind: Service

From d429a915eb7e19c3724ea9d2d289e4b7b7482449 Mon Sep 17 00:00:00 2001
From: somunslotus 
Date: Wed, 18 Sep 2024 12:52:50 +0800
Subject: [PATCH 100/381] x

---
 k8s/template-yaml/deploy/k8s-7management.yaml | 2 +-
 k8s/template-yaml/k8s-7management.yaml        | 5 -----
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml
index db233ae0..7ad00856 100644
--- a/k8s/template-yaml/deploy/k8s-7management.yaml
+++ b/k8s/template-yaml/deploy/k8s-7management.yaml
@@ -15,7 +15,7 @@ spec:
     spec:
       containers:
       - name: ci4s-management-platform
-        image: 172.20.32.187/ci4s/ci4s-managent:202409181153
+        image: 172.20.32.187/ci4s/ci4s-managent:202409181159
         ports:
         - containerPort: 9213
         env:
diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml
index 222eb354..8e7c69c6 100644
--- a/k8s/template-yaml/k8s-7management.yaml
+++ b/k8s/template-yaml/k8s-7management.yaml
@@ -18,11 +18,6 @@ spec:
         image: ${k8s-7management-image}
         ports:
         - containerPort: 9213
-        env:
-        - name: http_proxy
-          value: "http://172.20.32.253:3128"
-        - name: https_proxy
-          value: "http://172.20.32.253:3128"
 ---
 apiVersion: v1
 kind: Service

From a5ce1a56fe4429a1d80928b861c9405108260d01 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 13:35:19 +0800
Subject: [PATCH 101/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?=
 =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../service/impl/ModelsServiceImpl.java       | 51 ++++++++--------
 .../service/impl/NewDatasetServiceImpl.java   | 58 ++++++++++---------
 2 files changed, 59 insertions(+), 50 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 63bdb299..41784e5c 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -822,11 +822,8 @@ public class ModelsServiceImpl implements ModelsService {
         //拼接查询url
         String modelTagName = modelsVo.getModelTag();
         String modelTypeName = modelsVo.getModelType();
-        String topic_name = "ci4s-model";
-        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag-" + modelTypeName;
-        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype-" + modelTypeName;
 
-        String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name;
+        String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage";
 
         String name = modelsVo.getName();
         if (StringUtils.isNotEmpty(name)) {
@@ -835,9 +832,11 @@ public class ModelsServiceImpl implements ModelsService {
 
         String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
-        Integer total = (Integer) stringObjectMap.get("count");
         List> projects = (List>) stringObjectMap.get("projects");
-        return new PageImpl<>(convert(projects), pageRequest, total);
+        List collect = convert(projects, "ci4s-model", modelTagName, modelTypeName);
+        List result = collect.stream().skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
+                collect(Collectors.toList());
+        return new PageImpl<>(result, pageRequest, collect.size());
     }
 
     @Override
@@ -854,11 +853,9 @@ public class ModelsServiceImpl implements ModelsService {
         //拼接查询url
         String modelTagName = modelsVo.getModelTag();
         String modelTypeName = modelsVo.getModelType();
-        String topic_name = "ci4s-model";
-        topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag-" + modelTagName;
-        topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype-" + modelTypeName;
 
-        String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name;
+        String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&sort_by=praises_count";
+
         String name = modelsVo.getName();
         if (StringUtils.isNotEmpty(name)) {
             url = url + "&search=" + name;
@@ -866,9 +863,11 @@ public class ModelsServiceImpl implements ModelsService {
 
         String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
-        Integer total = (Integer) stringObjectMap.get("total_count");
         List> projects = (List>) stringObjectMap.get("projects");
-        return new PageImpl<>(convert(projects), pageRequest, total);
+        List collect = convert(projects, "ci4s-model", modelTagName, modelTypeName);
+        List result = collect.stream().skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
+                collect(Collectors.toList());
+        return new PageImpl<>(result, pageRequest, collect.size());
     }
 
     @Override
@@ -964,8 +963,9 @@ public class ModelsServiceImpl implements ModelsService {
         modelDependency1Dao.deleteModelDependency(parentModel);
     }
 
-    public List convert(List> lst) {
+    public List convert(List> lst, String modelTopic, String modelTagName, String modelTypeName) {
         if (lst != null && lst.size() > 0) {
+            List result = new ArrayList<>();
             List newModelVos = ConvertUtil.convertListMapToObjectList(lst, ModelsVo.class);
 
             for (ModelsVo newModelVo : newModelVos) {
@@ -976,24 +976,27 @@ public class ModelsServiceImpl implements ModelsService {
 
                 if (map != null) {
                     List> topics = (List>) map.get("topics");
-                    if (topics != null) {
-                        topics.forEach(topic -> {
-                            String name = (String) topic.get("name");
-                            if (name != null) {
-                                if (name.startsWith("modeltag-")) {
-                                    newModelVo.setModelTag(name.substring("modeltag-".length()));
-                                } else if (name.startsWith("modeltype-")) {
-                                    newModelVo.setModelType(name.substring("modeltype-".length()));
+                    if (topics != null && topics.size() > 0 && modelTopic.equals(topics.get(0).get("name"))) {
+                        String modeltag = (String) topics.get(1).get("name");
+                        String modeltype = (String) topics.get(2).get("name");
+                        modeltag = modeltag.substring("modeltag-".length());
+                        modeltype = modeltype.substring("modeltype-".length());
+                        if (StringUtils.isNotEmpty(modelTagName) && !modelTagName.toLowerCase().equals(modeltag)) {
+                            continue;
                         }
+                        if (StringUtils.isNotEmpty(modelTypeName) && !modelTypeName.toLowerCase().equals(modeltype)) {
+                            continue;
                         }
-                        });
-                    }
+                        newModelVo.setModelTag(modelTagName);
+                        newModelVo.setModelType(modelTypeName);
                         Map author = (Map) map.get("author");
                         newModelVo.setCreateBy((String) author.get("name"));
                         newModelVo.setOwner((String) author.get("login"));
+                        result.add(newModelVo);
                     }
                 }
-            return newModelVos;
+            }
+            return result;
         }
         return new ArrayList<>();
     }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 6bdd1cbc..07526cb5 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -10,6 +10,7 @@ import com.ruoyi.platform.service.GitService;
 import com.ruoyi.platform.service.NewDatasetService;
 import com.ruoyi.platform.utils.*;
 import com.ruoyi.platform.vo.GitProjectVo;
+import com.ruoyi.platform.vo.ModelsVo;
 import com.ruoyi.platform.vo.NewDatasetVo;
 import com.ruoyi.platform.vo.VersionVo;
 import com.ruoyi.system.api.model.LoginUser;
@@ -229,20 +230,21 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         // 拼接查询url
         String datasetTagName = dataset.getDatasetTagName();
         String datasetTypeName = dataset.getDatasetTypeName();
-        String topic_name = "ci4s-dataset";
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag-" + datasetTagName;
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype-" + datasetTypeName;
-        String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name;
-        String name = dataset.getName();
 
+        String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage";
+
+        String name = dataset.getName();
         if (StringUtils.isNotEmpty(name)){
             url =url + "&search=" + name;
         }
         String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
-        Integer total = (Integer) stringObjectMap.get("count");
         List> projects = (List>) stringObjectMap.get("projects");
-        return new PageImpl<>(convert(projects), pageRequest, total);
+
+        List collect = convert(projects, "ci4s-dataset", datasetTagName, datasetTypeName);
+        List result = collect.stream().skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
+                collect(Collectors.toList());
+        return new PageImpl<>(result, pageRequest, collect.size());
     }
 
     @Override
@@ -257,10 +259,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         // 拼接查询url
         String datasetTagName = dataset.getDatasetTagName();
         String datasetTypeName = dataset.getDatasetTypeName();
-        String topic_name = "ci4s-dataset";
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatag-" + datasetTagName;
-        topic_name = StringUtils.isEmpty(datasetTagName) ? topic_name : topic_name + ",datatype-" + datasetTypeName;
-        String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name;
+
+        String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&sort_by=praises_count";
+
         String name = dataset.getName();
         if (StringUtils.isNotEmpty(name)){
             url =url + "&search=" + name;
@@ -268,12 +269,14 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
         String req = httpUtils.sendGetWithToken(url, null, token);
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
-        Integer total = (Integer) stringObjectMap.get("total_count");
         List> projects = (List>) stringObjectMap.get("projects");
         if (projects == null) {
             return new PageImpl<>(new ArrayList<>(), pageRequest, 0);
         }
-        return new PageImpl<>(convert(projects), pageRequest, total);
+        List collect = convert(projects, "ci4s-dataset", datasetTagName, datasetTypeName);
+        List result = collect.stream().skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
+                collect(Collectors.toList());
+        return new PageImpl<>(result, pageRequest, collect.size());
     }
 
     @Override
@@ -422,8 +425,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
 
 
-    public List convert(List> lst) {
+    public List convert(List> lst, String datasetTopic, String datasetTagName, String datasetTypeName) {
         if (lst != null && lst.size() > 0) {
+            List result = new ArrayList<>();
             List newDatasetVos = ConvertUtil.convertListMapToObjectList(lst, NewDatasetVo.class);
 
             for (NewDatasetVo newDatasetVo : newDatasetVos) {
@@ -434,26 +438,28 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
                 if (map != null) {
                     List> topics = (List>) map.get("topics");
-                    if (topics != null) {
-                        topics.forEach(topic -> {
-                            String name = (String) topic.get("name");
-                            if (name != null) {
-                                if (name.startsWith("datatag-")) {
-                                    newDatasetVo.setDataTag(name.substring("datatag-".length()));
-                                } else if (name.startsWith("datatype-")) {
-                                    newDatasetVo.setDataType(name.substring("datatype-".length()));
+                    if (topics != null && topics.size() > 0 && datasetTopic.equals(topics.get(0).get("name"))) {
+                        String datasettag = (String) topics.get(1).get("name");
+                        String datasetype = (String) topics.get(2).get("name");
+                        datasettag = datasettag.substring("modeltag_".length());
+                        datasetype = datasetype.substring("modeltype_".length());
+                        if (StringUtils.isNotEmpty(datasetTagName) && !datasetTagName.toLowerCase().equals(datasettag)) {
+                            continue;
                         }
+                        if (StringUtils.isNotEmpty(datasetTypeName) && !datasetTypeName.toLowerCase().equals(datasetype)) {
+                            continue;
                         }
-                        });
-                    }
+                        newDatasetVo.setDataTag(datasetTagName);
+                        newDatasetVo.setDataType(datasetTypeName);
 
                         Map author = (Map) map.get("author");
                         newDatasetVo.setCreateBy((String) author.get("name"));
                         newDatasetVo.setOwner((String) author.get("login"));
+                        result.add(newDatasetVo);
                     }
                 }
-
-            return newDatasetVos;
+            }
+            return result;
         }
         return new ArrayList<>();
     }

From b4de8aa7d8555d0952a30287516c1c9ca384eeb6 Mon Sep 17 00:00:00 2001
From: somunslotus 
Date: Wed, 18 Sep 2024 14:20:16 +0800
Subject: [PATCH 102/381] modify nginx.cofn

---
 k8s/dockerfiles/conf/nginx.conf | 191 ++++++++++++++++++++++----------
 1 file changed, 131 insertions(+), 60 deletions(-)

diff --git a/k8s/dockerfiles/conf/nginx.conf b/k8s/dockerfiles/conf/nginx.conf
index 281ad4f4..c23e02c3 100644
--- a/k8s/dockerfiles/conf/nginx.conf
+++ b/k8s/dockerfiles/conf/nginx.conf
@@ -1,60 +1,131 @@
-worker_processes  1;
-
-events {
-    worker_connections  1024;
-}
-
-http {
-    include       mime.types;
-    default_type  application/octet-stream;
-    sendfile        on;
-    keepalive_timeout  65;
-
-    server {
-        listen       8000;
-        server_name  localhost;
-
-        location /api/{
-            rewrite ^/prod-api/(.*)$ /$1 break;
-            proxy_set_header Host $http_host;
-            proxy_set_header X-Real-IP $remote_addr;
-            proxy_set_header REMOTE-HOST $remote_addr;
-            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
-        }
-        
-        location /label-studio {
-             rewrite ^/prod-api/(.*)$ /$1 break;
-             proxy_pass http://label-studio-ls-app.label-data.svc:80/;
-             proxy_hide_header X-Frame-Options;
-             add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/";
-        }
-
-        location /api/v1/model/ {
-            proxy_pass http://pipeline-convert-service.argo.svc:80;
-            proxy_set_header REMOTE-HOST $remote_addr;
-            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-        }
-
-        location / {
-            rewrite ^/prod-api/(.*)$ /$1 break;
-            root   /home/ruoyi/projects/ruoyi-ui;
-            try_files $uri $uri/ /index.html;
-            index  index.html index.htm;
-        }
-
-        location @router {
-            rewrite ^.*$ /index.html last;
-        }
-
-        # 避免actuator暴露
-        if ($request_uri ~ "/actuator") {
-            return 403;
-        }
-
-        error_page   500 502 503 504  /50x.html;
-        location = /50x.html {
-            root   html;
-        }
-    }
-}
+worker_processes  1;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+    sendfile        on;
+    keepalive_timeout  65;
+    client_max_body_size 20480m;
+    error_log /var/log/nginx/error.log debug;
+    server {
+        listen       8000;
+        server_name  localhost;
+
+        location /api/{
+#            rewrite ^/prod-api/(.*)$ /$1 break;
+            proxy_set_header Host $http_host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
+            proxy_connect_timeout 500s;  # 设置连接超时时间为 120 秒
+            proxy_read_timeout 500s;     # 设置读取超时时间为 120 秒
+            proxy_send_timeout 500s;     # 设置发送超时时间为 120 秒
+        }
+        
+        location /label-studio/ {
+           # rewrite ^/label-studio/(.*)$ /$1 break;
+           proxy_pass http://label-studio-service.argo.svc:8080/projects/;
+           proxy_hide_header X-Frame-Options;
+           add_header X-Frame-Options ALLOWALL;
+        }
+
+        location / {
+            rewrite ^/prod-api/(.*)$ /$1 break;
+            root   /home/ruoyi/projects/ruoyi-ui;
+            try_files $uri $uri/ /index.html;
+            index  index.html index.htm;
+        }
+        
+       location /api/v1/model/ {
+            proxy_pass http://pipeline-convert-service.argo.svc:80;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+       }
+  #    location /api/v1/realtimeStatus {
+  #          proxy_pass http://argo-server.argo.svc:2746/api/v1/workflow-events/argo;
+  #          proxy_set_header REMOTE-HOST $remote_addr;
+  #          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+  #     }
+
+          
+        location /api/v1/tensorboard/show {
+        # 提取查询参数中的 `svc` 值
+        set $svc "";
+        if ($arg_svc) {
+            set $svc $arg_svc;
+        }
+
+        # 将请求转发到动态生成的内部服务地址
+        proxy_pass http://$svc.argo.svc:6006;
+
+        # 传递必要的头信息
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # 对于 WebSocket 应用很重要
+        proxy_buffering off;
+       }
+
+          location /api/v1/realtimeStatus {
+        rewrite ^/api/v1/realtimeStatus(.*)$ /api/v1/workflow-events/argo$1 break;
+        
+        proxy_pass https://argo-server.argo.svc:2746;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header REMOTE-HOST $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+
+        # 保留查询参数
+        proxy_set_header X-Original-URI $request_uri;
+
+        # 禁用缓冲
+        proxy_buffering off;
+
+        # 增加超时时间
+        proxy_read_timeout 3600s;
+        proxy_send_timeout 3600s;
+        proxy_connect_timeout 60s;
+
+        # 设置传递的请求头
+       # proxy_set_header Connection '';
+       # chunked_transfer_encoding off;
+
+        # 如果需要保留自定义头部
+        proxy_set_header Accept 'text/event-stream';
+    }
+
+       
+       location /newlog/realtimeLog {
+ 	   proxy_pass http://loki.loki-log.svc:3100/loki/api/v1/tail;
+    	   proxy_http_version 1.1;
+    	   proxy_set_header Upgrade $http_upgrade;
+    	   proxy_set_header Connection "Upgrade";
+    	   proxy_set_header Host $host;
+    	   proxy_set_header X-Real-IP $remote_addr;
+    	   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    	   proxy_set_header X-Forwarded-Proto $scheme;
+	}
+
+        location @router {
+            rewrite ^.*$ /index.html last;
+        }
+
+        # 避免actuator暴露
+        if ($request_uri ~ "/actuator") {
+            return 403;
+        }
+
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+    }
+}

From 1673d9480f9e081ef58afc660e1b84673d217206 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 14:34:10 +0800
Subject: [PATCH 103/381] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=9C=8D=E5=8A=A1pod?=
 =?UTF-8?q?=E6=8C=82=E8=BD=BD=E6=8C=81=E4=B9=85=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/k8s-7management.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/k8s/k8s-7management.yaml b/k8s/k8s-7management.yaml
index a22a109b..eed2a82e 100644
--- a/k8s/k8s-7management.yaml
+++ b/k8s/k8s-7management.yaml
@@ -18,6 +18,14 @@ spec:
         image: 172.20.32.187/ci4s/managent:20240401
         ports:
         - containerPort: 9213
+        volumeMounts:
+          - name: resource
+            mountPath: /home/resource/
+      volumes:
+        - name: resource
+          hostPath: # 指定宿主机目录为 /data/nginx/log
+            path: /home/resource/
+            type: DirectoryOrCreate
 
 ---
 apiVersion: v1

From c1fc913ac123b50a5a9fc24c8027aa57dcf91222 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 14:34:23 +0800
Subject: [PATCH 104/381] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=9C=8D=E5=8A=A1pod?=
 =?UTF-8?q?=E6=8C=82=E8=BD=BD=E6=8C=81=E4=B9=85=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 k8s/k8s-7management.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s/k8s-7management.yaml b/k8s/k8s-7management.yaml
index eed2a82e..cb07a130 100644
--- a/k8s/k8s-7management.yaml
+++ b/k8s/k8s-7management.yaml
@@ -23,7 +23,7 @@ spec:
             mountPath: /home/resource/
       volumes:
         - name: resource
-          hostPath: # 指定宿主机目录为 /data/nginx/log
+          hostPath:
             path: /home/resource/
             type: DirectoryOrCreate
 

From f270ba7c0a69d38651a0da1f9be4f244e2dc5d88 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 14:49:44 +0800
Subject: [PATCH 105/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index c1696c09..f4b929de 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -107,7 +107,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
 
         // 得到用户操作的路径
         String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl();
-        String relatePath = ci4sUsername+"/datasets/" + gitlinIid + "/" + datasetVo.getName();
+        String relatePath = ci4sUsername+"/datasets/" + gitlinIid + "/" + repositoryName;
         String localPath = localPathlocal+ relatePath;
         String datasetPath = localPath + "/dataset";
 
@@ -164,7 +164,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion();
         String repositoryName = datasetVo.getIdentifier();
         String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl();
-        String relatePath = ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + datasetVo.getName();
+        String relatePath = ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + repositoryName;
         String localPath = localPathlocal + relatePath;
         String datasetPath = localPath + "/dataset";
         String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + repositoryName + ".git";

From e3dee373d634f8801187ab81b1177e55a988c1bb Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 14:53:21 +0800
Subject: [PATCH 106/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 8a7c4442..12464338 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -590,7 +590,7 @@ public class ModelsServiceImpl implements ModelsService {
 
             String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git";
             String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl();
-            String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + modelsVo.getName();
+            String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName;
             String rootPath = localPath + relatePath;
             String modelPath = rootPath + "/model";
             String metaPath = rootPath + "/metadata";
@@ -678,7 +678,7 @@ public class ModelsServiceImpl implements ModelsService {
 
             String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git";
             String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl();
-            String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + modelsVo.getName();
+            String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName;
             String rootPath = localPath + relatePath;
             String modelPath = rootPath + "/model";
             String metaPath = rootPath + "/metadata";

From 375f9bb4a2319aab4f0034e2e341a269a0c16e88 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 15:09:09 +0800
Subject: [PATCH 107/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index f4b929de..7d3fe47f 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -293,9 +293,9 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             }
             version = (String) versionList.get(0).get("name");
         }
-        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, name, version, "data",gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repo, version, "data",gitLinkUsername, gitLinkPassword);
         // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据
-        Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + name + "/" + "dataset.yaml");
+        Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + repo + "/" + "dataset.yaml");
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);
         List versionVos = new ArrayList();
         if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){

From c37da222f75f102410eb1f82474a4753b3e29580 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 15:10:32 +0800
Subject: [PATCH 108/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 12464338..03a1aec7 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -897,9 +897,9 @@ public class ModelsServiceImpl implements ModelsService {
         }
 
         // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP
-        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, name, version, "model", gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, identifier, version, "model", gitLinkUsername, gitLinkPassword);
 
-        Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + name + "/metadata/metadata.yaml");
+        Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/metadata/metadata.yaml");
 
         String jsonString = JSON.toJSONString(stringObjectMap);
         ModelsVo modelsVo = JSON.parseObject(jsonString, ModelsVo.class);

From 296c7916716a9ae8a2b511fca9ceeebae3d01b12 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 15:15:33 +0800
Subject: [PATCH 109/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?=
 =?UTF-8?q?=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../model/NewModelFromGitController.java      | 22 +++++++++++++++++--
 .../ruoyi/platform/service/ModelsService.java |  2 +-
 .../service/impl/ModelsServiceImpl.java       |  6 ++---
 3 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
index 1d845818..8715378b 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
@@ -2,9 +2,11 @@ package com.ruoyi.platform.controller.model;
 
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.platform.service.ModelsService;
+import com.ruoyi.platform.utils.DVCUtils;
 import com.ruoyi.platform.vo.ModelsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.eclipse.jgit.api.errors.GitAPIException;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.http.ResponseEntity;
@@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -23,6 +26,9 @@ public class NewModelFromGitController {
     @Resource
     private ModelsService modelsService;
 
+    @Resource
+    private DVCUtils dvcUtils;
+
     @PostMapping("/addModel")
     @ApiOperation("添加模型")
     public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception {
@@ -83,8 +89,8 @@ public class NewModelFromGitController {
 
     @GetMapping("/getModelDetail")
     @ApiOperation(value = "获取模型详细信息")
-    public AjaxResult getModelDetail(@RequestParam("id") Integer id, @RequestParam("name") String name, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception {
-        return AjaxResult.success(this.modelsService.getModelDetail(id, name, identifier, owner, version));
+    public AjaxResult getModelDetail(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception {
+        return AjaxResult.success(this.modelsService.getModelDetail(id, identifier, owner, version));
     }
 
     @GetMapping("/getModelDependencyTree")
@@ -112,4 +118,16 @@ public class NewModelFromGitController {
         this.modelsService.deleteVersion(id, identifier, owner, version, relativePaths);
         return AjaxResult.success();
     }
+
+//    @GetMapping("/test")
+//    public AjaxResult test() {
+//        try {
+//            dvcUtils.gitPush("E:\\test\\admin\\model\\1451938\\object-model", "fanshuai", "h1n2x3j4y5@");
+//        } catch (IOException e) {
+//            throw new RuntimeException(e);
+//        } catch (GitAPIException e) {
+//            throw new RuntimeException(e);
+//        }
+//        return AjaxResult.success();
+//    }
 }
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
index f6b2e495..13ea4d40 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
@@ -101,7 +101,7 @@ public interface ModelsService {
 
     List> getVersionList(String identifier, String owner) throws Exception;
 
-    ModelsVo getModelDetail(Integer id, String name, String identifier, String owner, String version) throws Exception;
+    ModelsVo getModelDetail(Integer id, String identifier, String owner, String version) throws Exception;
 
     ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String identifier, String version) throws Exception;
 
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 12464338..405969bc 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -882,7 +882,7 @@ public class ModelsServiceImpl implements ModelsService {
     }
 
     @Override
-    public ModelsVo getModelDetail(Integer id, String name, String identifier, String owner, String version) throws Exception {
+    public ModelsVo getModelDetail(Integer id, String identifier, String owner, String version) throws Exception {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
@@ -897,9 +897,9 @@ public class ModelsServiceImpl implements ModelsService {
         }
 
         // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP
-        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, name, version, "model", gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, identifier, version, "model", gitLinkUsername, gitLinkPassword);
 
-        Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + name + "/metadata/metadata.yaml");
+        Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/metadata/metadata.yaml");
 
         String jsonString = JSON.toJSONString(stringObjectMap);
         ModelsVo modelsVo = JSON.parseObject(jsonString, ModelsVo.class);

From 1b957fd33d36317708b6f618d01423eba2e4a3cc Mon Sep 17 00:00:00 2001
From: somunslotus 
Date: Wed, 18 Sep 2024 15:22:51 +0800
Subject: [PATCH 110/381] x

---
 k8s/template-yaml/deploy/k8s-7management.yaml | 7 +------
 k8s/template-yaml/k8s-7management.yaml        | 7 +++++++
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml
index 7ad00856..9c00a04b 100644
--- a/k8s/template-yaml/deploy/k8s-7management.yaml
+++ b/k8s/template-yaml/deploy/k8s-7management.yaml
@@ -15,14 +15,9 @@ spec:
     spec:
       containers:
       - name: ci4s-management-platform
-        image: 172.20.32.187/ci4s/ci4s-managent:202409181159
+        image: 172.20.32.187/ci4s/ci4s-managent:202409181517
         ports:
         - containerPort: 9213
-        env:
-        - name: http_proxy
-          value: "http://172.20.32.253:3128"
-        - name: https_proxy
-          value: "http://172.20.32.253:3128"
 ---
 apiVersion: v1
 kind: Service
diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml
index 8e7c69c6..a6b4b3a2 100644
--- a/k8s/template-yaml/k8s-7management.yaml
+++ b/k8s/template-yaml/k8s-7management.yaml
@@ -18,6 +18,13 @@ spec:
         image: ${k8s-7management-image}
         ports:
         - containerPort: 9213
+        volumeMounts:
+        - name: resource-volume
+          mountPath: /home/resource/
+      volumes:
+      - name: resource-volume
+        persistentVolumeClaim:
+          claimName: platform-data-pvc-nfs
 ---
 apiVersion: v1
 kind: Service

From d9d9406695eb96f5c2d03c777ba5bf2491923aaf Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 15:34:31 +0800
Subject: [PATCH 111/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 7d3fe47f..bbf5b330 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -293,7 +293,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
             }
             version = (String) versionList.get(0).get("name");
         }
-        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repo, version, "data",gitLinkUsername, gitLinkPassword);
+        List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repo, version, "dataset",gitLinkUsername, gitLinkPassword);
         // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据
         Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + repo + "/" + "dataset.yaml");
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);

From d74aa4efa29e5643a260694387678917591b62b1 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 15:45:27 +0800
Subject: [PATCH 112/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?=
 =?UTF-8?q?=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
index 785efee6..8051eca6 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
@@ -581,7 +581,7 @@ public class DVCUtils {
             //刷新
             refreshRemoteBranches(localPath+"/"+repoFolder, username, password,branch);
             // 读取data文件夹中的文件列表
-            String path = localPath +  "\\" + repoFolder + "\\" + filePath;
+            String path = localPath +  "/" + repoFolder + "/" + filePath;
             Path dataPath = Paths.get(path);
             File[] files = dataPath.toFile().listFiles();
 

From 6c388f7384ff8a25ad34c9aab1604ac30349cce5 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 15:47:21 +0800
Subject: [PATCH 113/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
index 785efee6..8051eca6 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
@@ -581,7 +581,7 @@ public class DVCUtils {
             //刷新
             refreshRemoteBranches(localPath+"/"+repoFolder, username, password,branch);
             // 读取data文件夹中的文件列表
-            String path = localPath +  "\\" + repoFolder + "\\" + filePath;
+            String path = localPath +  "/" + repoFolder + "/" + filePath;
             Path dataPath = Paths.get(path);
             File[] files = dataPath.toFile().listFiles();
 

From 12942ddba2ec645cacd3efbf5a115aaef54731f8 Mon Sep 17 00:00:00 2001
From: fanshuai <1141904845@qq.com>
Date: Wed, 18 Sep 2024 16:13:38 +0800
Subject: [PATCH 114/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java  | 1 +
 .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java        | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index bbf5b330..f3cdd4c4 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -295,6 +295,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         }
         List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repo, version, "dataset",gitLinkUsername, gitLinkPassword);
         // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据
+        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!fileDetailsAfterGitPull:{}"+fileDetailsAfterGitPull);
         Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + repo + "/" + "dataset.yaml");
         NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);
         List versionVos = new ArrayList();
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
index 8051eca6..772063d7 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
@@ -585,6 +585,8 @@ public class DVCUtils {
             Path dataPath = Paths.get(path);
             File[] files = dataPath.toFile().listFiles();
 
+            System.out.println("!!!!!!!!!!!!!!!!!dataPath: "+path);
+            System.out.println("!!!!!!!!!!!!!!!!!files: "+files);
             if (files != null) {
                 for (File file : files) {
                     if (file.isFile()) {

From 522ed32ff5566fdffbb26828cfc76d810312b711 Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 17:05:31 +0800
Subject: [PATCH 115/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E9=A1=B5?=
 =?UTF-8?q?=E6=9F=A5=E8=AF=A2bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dataset/NewDatasetFromGitController.java       |  9 +++++++--
 .../service/impl/NewDatasetServiceImpl.java        | 14 ++++----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
index cb6e4327..a1146cc7 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
@@ -55,12 +55,17 @@ public class NewDatasetFromGitController {
 
     @GetMapping("/queryDatasets")
     @ApiOperation("数据集广场公开数据集分页查询,根据data_type,data_tag筛选,true公开false私有")
-    public AjaxResult queryDatasets(Dataset dataset, @RequestParam("page") int page,
+    public AjaxResult queryDatasets(@RequestParam("page") int page,
                                     @RequestParam("size") int size,
                                     @RequestParam(value = "is_public") Boolean isPublic,
                                     @RequestParam(value = "data_type", required = false) String dataType,
-                                    @RequestParam(value = "data_tag", required = false) String dataTag) throws Exception {
+                                    @RequestParam(value = "data_tag", required = false) String dataTag,
+                                    @RequestParam(value = "name", required = false) String name) throws Exception {
         PageRequest pageRequest = PageRequest.of(page, size);
+        Dataset dataset = new Dataset();
+        dataset.setDataTag(dataTag);
+        dataset.setDataType(dataType);
+        dataset.setName(name);
         if (isPublic) {
             return AjaxResult.success(this.newDatasetService.newPubilcQueryByPage(dataset, pageRequest));
         } else {
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index f3cdd4c4..06a245e2 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -229,9 +229,6 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
         Map userInfo = JsonUtils.jsonToMap(userReq);
         // 拼接查询url
-        String datasetTagName = dataset.getDatasetTagName();
-        String datasetTypeName = dataset.getDatasetTypeName();
-
         String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage";
 
         String name = dataset.getName();
@@ -242,7 +239,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
         List> projects = (List>) stringObjectMap.get("projects");
 
-        List collect = convert(projects, "ci4s-dataset", datasetTagName, datasetTypeName);
+        List collect = convert(projects, "ci4s-dataset", dataset.getDataTag(), dataset.getDataType());
         List result = collect.stream().skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
                 collect(Collectors.toList());
         return new PageImpl<>(result, pageRequest, collect.size());
@@ -258,9 +255,6 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         Map userInfo = JsonUtils.jsonToMap(userReq);
         Integer userId = (Integer) userInfo.get("user_id");
         // 拼接查询url
-        String datasetTagName = dataset.getDatasetTagName();
-        String datasetTypeName = dataset.getDatasetTypeName();
-
         String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&sort_by=praises_count";
 
         String name = dataset.getName();
@@ -274,7 +268,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         if (projects == null) {
             return new PageImpl<>(new ArrayList<>(), pageRequest, 0);
         }
-        List collect = convert(projects, "ci4s-dataset", datasetTagName, datasetTypeName);
+        List collect = convert(projects, "ci4s-dataset", dataset.getDataTag(), dataset.getDataType());
         List result = collect.stream().skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
                 collect(Collectors.toList());
         return new PageImpl<>(result, pageRequest, collect.size());
@@ -443,8 +437,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
                     if (topics != null && topics.size() > 0 && datasetTopic.equals(topics.get(0).get("name"))) {
                         String datasettag = (String) topics.get(1).get("name");
                         String datasetype = (String) topics.get(2).get("name");
-                        datasettag = datasettag.substring("modeltag_".length());
-                        datasetype = datasetype.substring("modeltype_".length());
+                        datasettag = datasettag.substring("datatag-".length());
+                        datasetype = datasetype.substring("datatype-".length());
                         if (StringUtils.isNotEmpty(datasetTagName) && !datasetTagName.toLowerCase().equals(datasettag)) {
                             continue;
                         }

From 24a51f4ead8f55ff227d1079f6f8350060992c5b Mon Sep 17 00:00:00 2001
From: chenzhihang <709011834@qq.com>
Date: Wed, 18 Sep 2024 17:18:07 +0800
Subject: [PATCH 116/381] =?UTF-8?q?=E5=BC=82=E6=AD=A5=E6=89=A7=E8=A1=8C?=
 =?UTF-8?q?=E5=88=9B=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../service/impl/ModelsServiceImpl.java       |  71 +++++----
 .../service/impl/NewDatasetServiceImpl.java   | 140 ++++++++++--------
 2 files changed, 121 insertions(+), 90 deletions(-)

diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
index 405969bc..9caf1ef4 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
@@ -42,6 +42,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
@@ -623,22 +624,6 @@ public class ModelsServiceImpl implements ModelsService {
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
             String meta = JSON.toJSONString(modelMetaVo);
 
-            dvcUtils.dvcInit(rootPath);
-            // 配置远程S3地址
-            String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName;
-            dvcUtils.dvcRemoteAdd(rootPath, s3Path);
-            dvcUtils.dvcConfigS3Credentials(rootPath, endpoint);
-            dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
-            dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
-
-            // dvc 跟踪
-            dvcUtils.dvcAdd(rootPath, "model");
-            // git commit
-            dvcUtils.gitAdd(rootPath, ".");
-            dvcUtils.gitCommit(rootPath, "commit from ci4s with " + ci4sUsername);
-            dvcUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword);
-            dvcUtils.dvcPush(rootPath);
-
             //保存模型依赖
             modelDependency.setRepoId(gitlinIid);
             modelDependency.setIdentifier(repositoryName);
@@ -648,6 +633,30 @@ public class ModelsServiceImpl implements ModelsService {
             modelDependency.setOwner(gitLinkUsername);
             modelDependency.setMeta(meta);
             modelDependency1Dao.insert(modelDependency);
+
+            CompletableFuture.supplyAsync(() -> {
+                try {
+                    dvcUtils.dvcInit(rootPath);
+                    // 配置远程S3地址
+                    String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName;
+                    dvcUtils.dvcRemoteAdd(rootPath, s3Path);
+                    dvcUtils.dvcConfigS3Credentials(rootPath, endpoint);
+                    dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
+                    dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
+
+                    // dvc 跟踪
+                    dvcUtils.dvcAdd(rootPath, "model");
+                    // git commit
+                    dvcUtils.gitAdd(rootPath, ".");
+                    dvcUtils.gitCommit(rootPath, "commit from ci4s with " + ci4sUsername);
+                    dvcUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword);
+                    dvcUtils.dvcPush(rootPath);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                return null;
+            });
+
             return "新增模型成功";
         } catch (Exception e) {
             logger.error(e.getMessage());
@@ -719,18 +728,6 @@ public class ModelsServiceImpl implements ModelsService {
             YamlUtils.generateYamlFile(metaMap, metaPath, "metadata");
             String meta = JSON.toJSONString(modelMetaVo);
 
-            // 配置远程S3地址
-            String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName;
-            dvcUtils.dvcRemoteAdd(rootPath, s3Path);
-            dvcUtils.dvcConfigS3Credentials(rootPath, endpoint);
-            dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
-            dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
-            // dvc 跟踪
-            dvcUtils.dvcAdd(rootPath, "model");
-            dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName);
-            //dvc push 到远程S3
-            dvcUtils.dvcPush(rootPath);
-
             //保存模型依赖
             modelDependency.setRepoId(modelsVo.getId());
             modelDependency.setIdentifier(repositoryName);
@@ -741,6 +738,24 @@ public class ModelsServiceImpl implements ModelsService {
             modelDependency.setMeta(meta);
             modelDependency1Dao.insert(modelDependency);
 
+            CompletableFuture.supplyAsync(() -> {
+                try {
+                    // 配置远程S3地址
+                    String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName;
+                    dvcUtils.dvcRemoteAdd(rootPath, s3Path);
+                    dvcUtils.dvcConfigS3Credentials(rootPath, endpoint);
+                    dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId);
+                    dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey);
+                    // dvc 跟踪
+                    dvcUtils.dvcAdd(rootPath, "model");
+                    dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName);
+                    //dvc push 到远程S3
+                    dvcUtils.dvcPush(rootPath);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                return null;
+            });
             return "新增模型版本成功";
         }
         return null;
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
index 06a245e2..02e43950 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
@@ -10,7 +10,6 @@ import com.ruoyi.platform.service.GitService;
 import com.ruoyi.platform.service.NewDatasetService;
 import com.ruoyi.platform.utils.*;
 import com.ruoyi.platform.vo.GitProjectVo;
-import com.ruoyi.platform.vo.ModelsVo;
 import com.ruoyi.platform.vo.NewDatasetVo;
 import com.ruoyi.platform.vo.VersionVo;
 import com.ruoyi.system.api.model.LoginUser;
@@ -37,6 +36,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
@@ -69,10 +69,11 @@ public class NewDatasetServiceImpl implements NewDatasetService {
     private DatasetTempStorageService datasetTempStorageService;
     @Resource
     private DVCUtils dvcUtils;
+
     @Override
     public String newCreateDataset(NewDatasetVo datasetVo) throws Exception {
         String token = gitService.checkoutToken();
-        Jedis jedis = new Jedis(redisHost,redisPort);
+        Jedis jedis = new Jedis(redisHost, redisPort);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String ci4sUsername = loginUser.getUsername();
         String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername();
@@ -90,25 +91,25 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         gitProjectVo.setPrivate(!datasetVo.getIsPublic());
         gitProjectVo.setUserId(userId);
         // 创建项目
-        Map project = gitService.createProject(token,gitProjectVo);
+        Map project = gitService.createProject(token, gitProjectVo);
         Integer gitlinIid = (Integer) project.get("id");
-        if (gitlinIid == null){
-            throw new Exception("创建数据集失败:"+project.get("message"));
+        if (gitlinIid == null) {
+            throw new Exception("创建数据集失败:" + project.get("message"));
         }
         // 创建分支
         String branchName = datasetVo.getVersion();
-        gitService.createBranch(token,(String) userInfo.get("login"), repositoryName, branchName, "master");
+        gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master");
         // 定义标签 标签1:ci4s-dataset 标签2:DataTag 标签3:DataType
-        gitService.createTopic(token,gitlinIid, "ci4s-dataset");
-        gitService.createTopic(token,gitlinIid, "datatag-" + datasetVo.getDataTag());
+        gitService.createTopic(token, gitlinIid, "ci4s-dataset");
+        gitService.createTopic(token, gitlinIid, "datatag-" + datasetVo.getDataTag());
         gitService.createTopic(token, gitlinIid, "datatype-" + datasetVo.getDataType());
         // 得到项目地址
-        String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git";
+        String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git";
 
         // 得到用户操作的路径
         String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl();
-        String relatePath = ci4sUsername+"/datasets/" + gitlinIid + "/" + repositoryName;
-        String localPath = localPathlocal+ relatePath;
+        String relatePath = ci4sUsername + "/datasets/" + gitlinIid + "/" + repositoryName;
+        String localPath = localPathlocal + relatePath;
         String datasetPath = localPath + "/dataset";
 
         // 命令行操作 git clone 项目地址
@@ -122,7 +123,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
         datasetVo.setVersionDesc(datasetVo.getDescription());
         datasetVo.setUsage("
" +
                 "# 克隆数据集配置文件与存储参数到本地\n" +
-                "git clone -b " + branchName + " "+ projectUrl + "\n" +
+                "git clone -b " + branchName + " " + projectUrl + "\n" +
                 "# 远程拉取配置文件\n" +
                 "dvc pull\n" +
                 "
"); @@ -134,26 +135,34 @@ public class NewDatasetServiceImpl implements NewDatasetService { addDatasetSourceToDataVo(datasetVo); YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); - // dvc init 初始化 - dvcUtils.dvcInit(localPath); - // 配置远程S3地址 - dvcUtils.dvcRemoteAdd(localPath, s3Path); - dvcUtils.dvcConfigS3Credentials(localPath, endpoint); - dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId); - dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); - // dvc 跟踪 - dvcUtils.dvcAdd(localPath, "dataset"); - // git commit - dvcUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); - dvcUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); - // dvc push 到远程S3 - dvcUtils.dvcPush(localPath); + + CompletableFuture.supplyAsync(() -> { + try { + // dvc init 初始化 + dvcUtils.dvcInit(localPath); + // 配置远程S3地址 + dvcUtils.dvcRemoteAdd(localPath, s3Path); + dvcUtils.dvcConfigS3Credentials(localPath, endpoint); + dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId); + dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); + // dvc 跟踪 + dvcUtils.dvcAdd(localPath, "dataset"); + // git commit + dvcUtils.gitCommit(localPath, "commit from ci4s with " + loginUser.getUsername()); + dvcUtils.gitPush(localPath, gitLinkUsername, gitLinkPassword); + // dvc push 到远程S3 + dvcUtils.dvcPush(localPath); + } catch (Exception e) { + throw new RuntimeException(e); + } + return null; + }); return "新增数据集成功"; } public String newCreateVersion(NewDatasetVo datasetVo) throws Exception { String token = gitService.checkoutToken(); - Jedis jedis = new Jedis(redisHost,redisPort); + Jedis jedis = new Jedis(redisHost, redisPort); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); @@ -164,7 +173,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); String repositoryName = datasetVo.getIdentifier(); String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String relatePath = ci4sUsername +"/datasets/"+ datasetVo.getId() + "/" + repositoryName; + String relatePath = ci4sUsername + "/datasets/" + datasetVo.getId() + "/" + repositoryName; String localPath = localPathlocal + relatePath; String datasetPath = localPath + "/dataset"; String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + repositoryName + ".git"; @@ -188,13 +197,13 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setUpdateTime(DateUtils.getTime()); datasetVo.setUsage("
" +
                 "# 克隆数据集配置文件与存储参数到本地\n" +
-                "git clone -b " + branchName + " "+ projectUrl + "\n" +
+                "git clone -b " + branchName + " " + projectUrl + "\n" +
                 "# 远程拉取配置文件\n" +
                 "dvc pull\n" +
                 "
"); datasetVo.setIdentifier(repositoryName); datasetVo.setOwner((String) userInfo.get("login")); - if (StringUtils.isEmpty(datasetVo.getDatasetSource())){ + if (StringUtils.isEmpty(datasetVo.getDatasetSource())) { datasetVo.setDatasetSource("用户上传"); } datasetVo.setDescription(newDatasetVo.getDescription()); @@ -205,17 +214,25 @@ public class NewDatasetServiceImpl implements NewDatasetService { addDatasetSourceToDataVo(datasetVo); YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); - //dvc数据跟踪 - // 配置远程S3地址 - dvcUtils.dvcRemoteAdd(localPath, s3Path); - dvcUtils.dvcConfigS3Credentials(localPath, endpoint); - dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId); - dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); - // dvc 跟踪 - dvcUtils.dvcAdd(localPath, "dataset"); - dvcUtils.pushNewBranchToRemote(localPath,gitLinkUsername,gitLinkPassword,branchName); - //dvc push 到远程S3 - dvcUtils.dvcPush(localPath); + + CompletableFuture.supplyAsync(() -> { + try { + //dvc数据跟踪 + // 配置远程S3地址 + dvcUtils.dvcRemoteAdd(localPath, s3Path); + dvcUtils.dvcConfigS3Credentials(localPath, endpoint); + dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId); + dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); + // dvc 跟踪 + dvcUtils.dvcAdd(localPath, "dataset"); + dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); + //dvc push 到远程S3 + dvcUtils.dvcPush(localPath); + } catch (Exception e) { + throw new RuntimeException(e); + } + return null; + }); return "新增数据集成功"; } @@ -223,7 +240,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Override public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { String token = gitService.checkoutToken(); - Jedis jedis = new Jedis(redisHost,redisPort); + Jedis jedis = new Jedis(redisHost, redisPort); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); @@ -232,8 +249,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage"; String name = dataset.getName(); - if (StringUtils.isNotEmpty(name)){ - url =url + "&search=" + name; + if (StringUtils.isNotEmpty(name)) { + url = url + "&search=" + name; } String req = httpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); @@ -248,7 +265,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Override public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { String token = gitService.checkoutToken(); - Jedis jedis = new Jedis(redisHost,redisPort); + Jedis jedis = new Jedis(redisHost, redisPort); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); @@ -258,8 +275,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&sort_by=praises_count"; String name = dataset.getName(); - if (StringUtils.isNotEmpty(name)){ - url =url + "&search=" + name; + if (StringUtils.isNotEmpty(name)) { + url = url + "&search=" + name; } String req = httpUtils.sendGetWithToken(url, null, token); @@ -287,14 +304,14 @@ public class NewDatasetServiceImpl implements NewDatasetService { } version = (String) versionList.get(0).get("name"); } - List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal +loginUser.getUsername()+"/datasets/" + id, repo, version, "dataset",gitLinkUsername, gitLinkPassword); + List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!fileDetailsAfterGitPull:{}"+fileDetailsAfterGitPull); - Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal +loginUser.getUsername()+"/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); + System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!fileDetailsAfterGitPull:{}" + fileDetailsAfterGitPull); + Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); List versionVos = new ArrayList(); - if (fileDetailsAfterGitPull!=null&&fileDetailsAfterGitPull.size()>0){ - for(Map fileDetail : fileDetailsAfterGitPull){ + if (fileDetailsAfterGitPull != null && fileDetailsAfterGitPull.size() > 0) { + for (Map fileDetail : fileDetailsAfterGitPull) { VersionVo versionVo = new VersionVo(); versionVo.setUrl((String) fileDetail.get("filePath")); versionVo.setFileName((String) fileDetail.get("fileName")); @@ -310,7 +327,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Override public List> getVersionList(String repo, String owner) throws Exception { String token = gitService.checkoutToken(); - List> brancheList = gitService.getBrancheList(token,owner, repo); + List> brancheList = gitService.getBrancheList(token, owner, repo); return brancheList.stream() .filter(branch -> !"master".equals(branch.get("name"))) .collect(Collectors.toList()); @@ -319,13 +336,13 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Override public void deleteDatasetNew(String repo, String owner) throws Exception { String token = gitService.checkoutToken(); - gitService.deleteProject(token,owner, repo); + gitService.deleteProject(token, owner, repo); } @Override public void deleteDatasetVersionNew(String repo, String owner, String version, String relativePath) throws Exception { String token = gitService.checkoutToken(); - gitService.deleteBranch(token,owner, repo, version, localPathlocal + relativePath); + gitService.deleteBranch(token, owner, repo, version, localPathlocal + relativePath); } @Override @@ -378,14 +395,14 @@ public class NewDatasetServiceImpl implements NewDatasetService { } @Override - public ResponseEntity downloadAllDatasetFilesNew(String name,Integer id, String version) throws Exception { + public ResponseEntity downloadAllDatasetFilesNew(String name, Integer id, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - Jedis jedis = new Jedis(redisHost,redisPort); + Jedis jedis = new Jedis(redisHost, redisPort); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); Map userInfo = JsonUtils.jsonToMap(userReq); - String localPath = localPathlocal+ loginUser.getUsername()+"/datasets/"+id+"/"+name; + String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + name; // 打包 data 文件夹 String dataFolderPath = localPath + "/data"; @@ -412,7 +429,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="+name+"_"+version+"_data.zip") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + name + "_" + version + "_data.zip") .contentType(MediaType.APPLICATION_OCTET_STREAM) .contentLength(zipFile.length()) .body(resource); @@ -420,7 +437,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { } - public List convert(List> lst, String datasetTopic, String datasetTagName, String datasetTypeName) { if (lst != null && lst.size() > 0) { List result = new ArrayList<>(); @@ -460,12 +476,12 @@ public class NewDatasetServiceImpl implements NewDatasetService { return new ArrayList<>(); } - private void addDatasetSourceToDataVo(NewDatasetVo datasetVo){ + private void addDatasetSourceToDataVo(NewDatasetVo datasetVo) { DatasetTempStorage queryDatasetTempStorage = new DatasetTempStorage(); queryDatasetTempStorage.setName(datasetVo.getName()); queryDatasetTempStorage.setVersion(datasetVo.getVersion()); DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); - if (datasetTempStorage != null){ + if (datasetTempStorage != null) { String datasetSourceString = datasetTempStorage.getSource(); Map datasetSourceMap = JacksonUtil.parseJSONStr2Map(datasetSourceString); String preprocessCode = (String) datasetSourceMap.get("preprocess_code"); From 68d09fa06d4e955a4f2db13f288c98254e278e2f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 08:37:51 +0800 Subject: [PATCH 117/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 2 +- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 9caf1ef4..1a1e88b8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -738,6 +738,7 @@ public class ModelsServiceImpl implements ModelsService { modelDependency.setMeta(meta); modelDependency1Dao.insert(modelDependency); + dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); CompletableFuture.supplyAsync(() -> { try { // 配置远程S3地址 @@ -748,7 +749,6 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); // dvc 跟踪 dvcUtils.dvcAdd(rootPath, "model"); - dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); //dvc push 到远程S3 dvcUtils.dvcPush(rootPath); } catch (Exception e) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 02e43950..3178da35 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -214,7 +214,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { addDatasetSourceToDataVo(datasetVo); YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); - + dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); CompletableFuture.supplyAsync(() -> { try { //dvc数据跟踪 @@ -225,7 +225,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); // dvc 跟踪 dvcUtils.dvcAdd(localPath, "dataset"); - dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); //dvc push 到远程S3 dvcUtils.dvcPush(localPath); } catch (Exception e) { From 93d9ef8c932dca0b2968aac024e0ef310dab0815 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 09:22:49 +0800 Subject: [PATCH 118/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/dataset/NewDatasetFromGitController.java | 4 ++-- .../controller/model/NewModelFromGitController.java | 4 ++-- .../java/com/ruoyi/platform/service/ModelsService.java | 2 +- .../com/ruoyi/platform/service/NewDatasetService.java | 2 +- .../ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++-- .../platform/service/impl/NewDatasetServiceImpl.java | 8 ++------ 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index a1146cc7..5144cac7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -132,8 +132,8 @@ public class NewDatasetFromGitController { */ @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有数据集,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { - return newDatasetService.downloadAllDatasetFilesNew(name, id, version); + public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("identifier") String identifier, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { + return newDatasetService.downloadAllDatasetFilesNew(name, identifier, id, version); } /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 8715378b..06efa978 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -50,8 +50,8 @@ public class NewModelFromGitController { @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有模型,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { - return modelsService.downloadAllModelFilesNew(name, id, version); + public ResponseEntity downloadAllDatasetFiles(@RequestParam("name") String name, @RequestParam("identifier") String identifier, @RequestParam("id") Integer id, @RequestParam("version") String version) throws Exception { + return modelsService.downloadAllModelFilesNew(name, identifier, id, version); } @GetMapping("/downloadSingleFile") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 13ea4d40..067f90a7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -93,7 +93,7 @@ public interface ModelsService { List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception; - ResponseEntity downloadAllModelFilesNew(String identifier, Integer id, String version) throws IOException, Exception; + ResponseEntity downloadAllModelFilesNew(String name, String identifier, Integer id, String version) throws IOException, Exception; Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java index 1da4dfee..ff2003de 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -19,7 +19,7 @@ public interface NewDatasetService { String newCreateVersion(NewDatasetVo datasetVo) throws Exception; List> uploadDatasetlocal(MultipartFile[] files, String uuid) throws Exception; ResponseEntity downloadDatasetlocal(String filePath) throws Exception; - ResponseEntity downloadAllDatasetFilesNew(String name,Integer id, String version) throws IOException, Exception; + ResponseEntity downloadAllDatasetFilesNew(String name, String identifier, Integer id, String version) throws IOException, Exception; Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 1a1e88b8..e82e7f9c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -789,7 +789,7 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public ResponseEntity downloadAllModelFilesNew(String identifier, Integer id, String version) throws Exception { + public ResponseEntity downloadAllModelFilesNew(String name, String identifier, Integer id, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -820,7 +820,7 @@ public class ModelsServiceImpl implements ModelsService { InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + identifier + "_" + version + "_model.zip") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + name + "_" + version + "_model.zip") .contentType(MediaType.APPLICATION_OCTET_STREAM) .contentLength(zipFile.length()) .body(resource); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 3178da35..f2651a61 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -394,14 +394,10 @@ public class NewDatasetServiceImpl implements NewDatasetService { } @Override - public ResponseEntity downloadAllDatasetFilesNew(String name, Integer id, String version) throws Exception { + public ResponseEntity downloadAllDatasetFilesNew(String name, String identifier, Integer id, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - Jedis jedis = new Jedis(redisHost, redisPort); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + name; + String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + identifier; // 打包 data 文件夹 String dataFolderPath = localPath + "/data"; From 332959cd218a4c4243a810cbba25965dbd707149 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 09:23:29 +0800 Subject: [PATCH 119/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index f2651a61..b46b99c7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -424,7 +424,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { InputStreamResource resource = new InputStreamResource(new FileInputStream(zipFile)); return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + name + "_" + version + "_data.zip") + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + name + "_" + version + "_dataset.zip") .contentType(MediaType.APPLICATION_OCTET_STREAM) .contentLength(zipFile.length()) .body(resource); From 83c317b85416f1a2c78deda4bccf1a680126bed8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 09:30:58 +0800 Subject: [PATCH 120/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index b46b99c7..a1dc4194 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -400,7 +400,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + identifier; // 打包 data 文件夹 - String dataFolderPath = localPath + "/data"; + String dataFolderPath = localPath + "/dataset"; String zipFilePath = localPath + "/data.zip"; try (FileOutputStream fos = new FileOutputStream(zipFilePath); ZipOutputStream zos = new ZipOutputStream(fos)) { From 0e8fb0ed0f70b593b043ff272109b3b6ca432c4f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 09:58:07 +0800 Subject: [PATCH 121/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=88=9B=E5=BB=BA=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index a1dc4194..e4f6a943 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -214,7 +214,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { addDatasetSourceToDataVo(datasetVo); YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); - dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); CompletableFuture.supplyAsync(() -> { try { //dvc数据跟踪 @@ -225,6 +224,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); // dvc 跟踪 dvcUtils.dvcAdd(localPath, "dataset"); + dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); //dvc push 到远程S3 dvcUtils.dvcPush(localPath); } catch (Exception e) { From 39f7b05869353a19135e85506d8e45903ea699e3 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 10:02:30 +0800 Subject: [PATCH 122/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=88=9B=E5=BB=BA=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index e82e7f9c..81402805 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -738,7 +738,6 @@ public class ModelsServiceImpl implements ModelsService { modelDependency.setMeta(meta); modelDependency1Dao.insert(modelDependency); - dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); CompletableFuture.supplyAsync(() -> { try { // 配置远程S3地址 @@ -749,6 +748,7 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); // dvc 跟踪 dvcUtils.dvcAdd(rootPath, "model"); + dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); //dvc push 到远程S3 dvcUtils.dvcPush(rootPath); } catch (Exception e) { From 658ad688d333e809afc474ab9dfc1e1d569f2f93 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 10:53:57 +0800 Subject: [PATCH 123/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=88=9B=E5=BB=BA=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 24 +++++++++---------- .../service/impl/NewDatasetServiceImpl.java | 19 ++++++++------- .../com/ruoyi/platform/vo/GitProjectVo.java | 5 ++-- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 81402805..6868bf0a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -738,17 +738,18 @@ public class ModelsServiceImpl implements ModelsService { modelDependency.setMeta(meta); modelDependency1Dao.insert(modelDependency); + // 配置远程S3地址 + String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; + dvcUtils.dvcRemoteAdd(rootPath, s3Path); + dvcUtils.dvcConfigS3Credentials(rootPath, endpoint); + dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); + dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); + // dvc 跟踪 + dvcUtils.dvcAdd(rootPath, "model"); + dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); + CompletableFuture.supplyAsync(() -> { try { - // 配置远程S3地址 - String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; - dvcUtils.dvcRemoteAdd(rootPath, s3Path); - dvcUtils.dvcConfigS3Credentials(rootPath, endpoint); - dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); - dvcUtils.dvcConfigS3Credentials3(rootPath, secretAccessKey); - // dvc 跟踪 - dvcUtils.dvcAdd(rootPath, "model"); - dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); //dvc push 到远程S3 dvcUtils.dvcPush(rootPath); } catch (Exception e) { @@ -756,9 +757,8 @@ public class ModelsServiceImpl implements ModelsService { } return null; }); - return "新增模型版本成功"; } - return null; + return "新增模型版本成功"; } @@ -871,7 +871,7 @@ public class ModelsServiceImpl implements ModelsService { String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); - String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&sort_by=praises_count"; + String url = gitendpoint + "/api/projects.json"; String name = modelsVo.getName(); if (StringUtils.isNotEmpty(name)) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index e4f6a943..2ce6cd0d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -214,17 +214,18 @@ public class NewDatasetServiceImpl implements NewDatasetService { addDatasetSourceToDataVo(datasetVo); YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); + //dvc数据跟踪 + // 配置远程S3地址 + dvcUtils.dvcRemoteAdd(localPath, s3Path); + dvcUtils.dvcConfigS3Credentials(localPath, endpoint); + dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId); + dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); + // dvc 跟踪 + dvcUtils.dvcAdd(localPath, "dataset"); + dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); + CompletableFuture.supplyAsync(() -> { try { - //dvc数据跟踪 - // 配置远程S3地址 - dvcUtils.dvcRemoteAdd(localPath, s3Path); - dvcUtils.dvcConfigS3Credentials(localPath, endpoint); - dvcUtils.dvcConfigS3Credentials2(localPath, accessKeyId); - dvcUtils.dvcConfigS3Credentials3(localPath, secretAccessKey); - // dvc 跟踪 - dvcUtils.dvcAdd(localPath, "dataset"); - dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); //dvc push 到远程S3 dvcUtils.dvcPush(localPath); } catch (Exception e) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java index a31a7cd1..2f0ad0fb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java @@ -25,8 +25,9 @@ public class GitProjectVo implements Serializable { @ApiModelProperty(value = "项目标识", required = true) private String repositoryName; -// @ApiModelProperty(value = "项目分类ID", required = false) -// private int projectCategoryId; + @ApiModelProperty(value = "项目分类ID", required = false) + private int projectCategoryId; + // // @ApiModelProperty(value = "项目语言ID", required = false) // private int projectLanguageId; From 469c5752502332ec8c7d257565547b57e53453e3 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 10:57:19 +0800 Subject: [PATCH 124/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=88=9B=E5=BB=BA=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/vo/GitProjectVo.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java index 2f0ad0fb..9b858fcd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java @@ -25,8 +25,8 @@ public class GitProjectVo implements Serializable { @ApiModelProperty(value = "项目标识", required = true) private String repositoryName; - @ApiModelProperty(value = "项目分类ID", required = false) - private int projectCategoryId; +// @ApiModelProperty(value = "项目分类ID", required = false) +// private int projectCategoryId; // // @ApiModelProperty(value = "项目语言ID", required = false) From db3ce4581d91656285072d403682d6d4ac7bd749 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 19 Sep 2024 11:46:30 +0800 Subject: [PATCH 125/381] =?UTF-8?q?=E6=8D=A2=E5=9B=9E=E5=8E=9F=E6=9D=A5?= =?UTF-8?q?=E7=9A=84HTTPUTILS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 811253e7..98094381 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.service.*; +import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.utils.NewHttpUtils; @@ -55,8 +56,6 @@ public class ExperimentServiceImpl implements ExperimentService { @Resource @Lazy private ExperimentInsService experimentInsService; - @Resource - private NewHttpUtils httpUtils; @Value("${argo.url}") private String argoUrl; @Value("${argo.convert}") @@ -223,7 +222,7 @@ public class ExperimentServiceImpl implements ExperimentService { String dag = workflow.getDag(); // 调argo转换接口 try { - String convertRes = httpUtils.sendPost(argoUrl + argoConvert,null, dag); + String convertRes = HttpUtils.sendPost(argoUrl + argoConvert, dag); if (convertRes == null || StringUtils.isEmpty(convertRes)) { throw new RuntimeException("转换流水线失败"); } @@ -242,7 +241,7 @@ public class ExperimentServiceImpl implements ExperimentService { Map output = (Map) converMap.get("output"); // 调argo运行接口 - String runRes = httpUtils.sendPost(argoUrl + argoWorkflowRun,null, JsonUtils.mapToJson(runReqMap)); + String runRes = HttpUtils.sendPost(argoUrl + argoWorkflowRun, JsonUtils.mapToJson(runReqMap)); if (runRes == null || StringUtils.isEmpty(runRes)) { throw new RuntimeException("Failed to run workflow."); From 1ed2d061b3c164fd0f723770317198d4b1b2e846 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 11:49:21 +0800 Subject: [PATCH 126/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/constant/Constant.java | 2 ++ .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 +++- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 4 +++- .../src/main/java/com/ruoyi/platform/vo/GitProjectVo.java | 4 ++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index 0c7a09fc..caaa5abe 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -18,4 +18,6 @@ public class Constant { public final static String Computing_Resource_CPU = "CPU"; // 计算资源_CPU public final static String Computing_Resource_GPU = "GPU"; // 计算资源_GPU + + public final static int Git_Category_Id = 39; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 6868bf0a..179ed563 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; +import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.AssetIcon; import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.domain.Models; @@ -572,6 +573,7 @@ public class ModelsServiceImpl implements ModelsService { gitProjectVo.setDescription(modelsVo.getDescription()); gitProjectVo.setPrivate(!modelsVo.getIsPublic()); gitProjectVo.setUserId(userId); + gitProjectVo.setProjectCategoryId(Constant.Git_Category_Id); // 创建项目 Map project = gitService.createProject(token, gitProjectVo); @@ -871,7 +873,7 @@ public class ModelsServiceImpl implements ModelsService { String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); - String url = gitendpoint + "/api/projects.json"; + String url = gitendpoint + "/api/projects.json?sort_direction=praises_count&sort_by=desc&category_id=" + Constant.Git_Category_Id; String name = modelsVo.getName(); if (StringUtils.isNotEmpty(name)) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 2ce6cd0d..3cf9d2a2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.DatasetTempStorage; import com.ruoyi.platform.service.DatasetTempStorageService; @@ -90,6 +91,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { gitProjectVo.setDescription(datasetVo.getDescription()); gitProjectVo.setPrivate(!datasetVo.getIsPublic()); gitProjectVo.setUserId(userId); + gitProjectVo.setProjectCategoryId(Constant.Git_Category_Id); // 创建项目 Map project = gitService.createProject(token, gitProjectVo); Integer gitlinIid = (Integer) project.get("id"); @@ -272,7 +274,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { Map userInfo = JsonUtils.jsonToMap(userReq); Integer userId = (Integer) userInfo.get("user_id"); // 拼接查询url - String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&sort_by=praises_count"; + String url = gitendpoint + "/api/projects.json?sort_direction=praises_count&sort_by=desc&category_id=" + Constant.Git_Category_Id; String name = dataset.getName(); if (StringUtils.isNotEmpty(name)) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java index 9b858fcd..2f0ad0fb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/GitProjectVo.java @@ -25,8 +25,8 @@ public class GitProjectVo implements Serializable { @ApiModelProperty(value = "项目标识", required = true) private String repositoryName; -// @ApiModelProperty(value = "项目分类ID", required = false) -// private int projectCategoryId; + @ApiModelProperty(value = "项目分类ID", required = false) + private int projectCategoryId; // // @ApiModelProperty(value = "项目语言ID", required = false) From c62d20f63dadc8b8f06c741a3292b64d4b641196 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 19 Sep 2024 14:36:11 +0800 Subject: [PATCH 127/381] =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=E7=94=A8?= =?UTF-8?q?=E5=88=B0=E8=A1=A8=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ExperimentServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 98094381..e14e2009 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -322,10 +322,10 @@ public class ExperimentServiceImpl implements ExperimentService { List> datasets = (List>) trainInfoDetails.get("datasets"); if (datasets != null) { //查询名字再回填 - for (int i = 0; i < datasets.size(); i++) { - Dataset dataset = datasetService.queryById((Integer) datasets.get(i).get("dataset_id")); - datasets.get(i).put("dataset_name", dataset.getName()); - } +// for (int i = 0; i < datasets.size(); i++) { +// Dataset dataset = datasetService.queryById(Integer.valueOf((String) datasets.get(i).get("dataset_id"))); +// datasets.get(i).put("dataset_name", dataset.getName()); +// } metricRecordItem.put("datasets", datasets); } } From 50cfefac46352b329dc3071d29c4b336de748172 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 16:23:38 +0800 Subject: [PATCH 128/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 242 +++++++++++++----- 1 file changed, 175 insertions(+), 67 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 811253e7..84c20d13 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.*; @@ -8,9 +9,12 @@ import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.service.*; +import com.ruoyi.platform.utils.DVCUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.utils.NewHttpUtils; +import com.ruoyi.platform.vo.ModelsVo; +import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -58,14 +62,15 @@ public class ExperimentServiceImpl implements ExperimentService { @Resource private NewHttpUtils httpUtils; @Value("${argo.url}") - private String argoUrl; + private String argoUrl; @Value("${argo.convert}") - private String argoConvert; + private String argoConvert; @Value("${argo.workflowRun}") - private String argoWorkflowRun; + private String argoWorkflowRun; @Value("${argo.workflowStatus}") - private String argoWorkflowStatus; - + private String argoWorkflowStatus; + @Value("${git.localPath}") + String localPath; /** * 通过ID查询单条数据 @@ -96,22 +101,20 @@ public class ExperimentServiceImpl implements ExperimentService { List experimentList = this.experimentDao.queryAllByLimit(experiment, pageRequest); long total = this.experimentDao.count(experiment); // 存储所有实验的ID列表,查询实验对应的流水线 - for(Experiment exp: experimentList){ + for (Experiment exp : experimentList) { Long workflowId = exp.getWorkflowId(); Workflow correspondingWorkflow = this.workflowService.queryById(workflowId); String workflowName = correspondingWorkflow.getName(); exp.setWorkflowName(workflowName); } - return new PageImpl<>(experimentList,pageRequest,total); + return new PageImpl<>(experimentList, pageRequest, total); } /** * 分页查询实验状态 * - * - * * @param experiment 筛选条件 * @param pageRequest 分页对象 * @return 查询结果 @@ -121,7 +124,7 @@ public class ExperimentServiceImpl implements ExperimentService { // 存储所有实验的ID列表 List experimentIds = new ArrayList<>(); //对于每一个从Experiment表中查询出来的id,可能有多个实例,每个实例的实验id是不同的 - for (Experiment exp: experimentList) { + for (Experiment exp : experimentList) { //返回所有实验ID相同的实例列表 List experimentInsList = this.experimentInsService.getByExperimentId(exp.getId()); exp.setExperimentInsList(experimentInsList); @@ -179,7 +182,7 @@ public class ExperimentServiceImpl implements ExperimentService { @Override public String removeById(Integer id) throws Exception { Experiment experiment = experimentDao.queryById(id); - if (experiment==null){ + if (experiment == null) { throw new Exception("实验不存在"); } @@ -187,17 +190,16 @@ public class ExperimentServiceImpl implements ExperimentService { LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); String createdBy = experiment.getCreateBy(); - if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ + if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createdBy))) { throw new Exception("无权限删除该实验"); } List experimentInsList = experimentInsService.queryByExperimentId(experiment.getId()); - if (experimentInsList!=null&&experimentInsList.size()>0){ + if (experimentInsList != null && experimentInsList.size() > 0) { throw new Exception("该实验存在实例,无法删除"); } experiment.setState(0); - return this.experimentDao.update(experiment)>0?"删除成功":"删除失败"; - + return this.experimentDao.update(experiment) > 0 ? "删除成功" : "删除失败"; } @@ -216,14 +218,14 @@ public class ExperimentServiceImpl implements ExperimentService { System.out.println("No experiment"); } Workflow workflow = workflowService.queryById(experiment.getWorkflowId()); - if(workflow == null) { + if (workflow == null) { throw new RuntimeException("流水线不存在,请先创建流水线"); } String dag = workflow.getDag(); // 调argo转换接口 try { - String convertRes = httpUtils.sendPost(argoUrl + argoConvert,null, dag); + String convertRes = httpUtils.sendPost(argoUrl + argoConvert, null, dag); if (convertRes == null || StringUtils.isEmpty(convertRes)) { throw new RuntimeException("转换流水线失败"); } @@ -237,12 +239,12 @@ public class ExperimentServiceImpl implements ExperimentService { runReqMap.put("params", params); // 实验字段的Map,不要写成一行!否则会返回null Map experimentMap = new HashMap<>(); - experimentMap.put("name", "experiment-"+experiment.getId()); + experimentMap.put("name", "experiment-" + experiment.getId()); runReqMap.put("experiment", experimentMap); - Map output = (Map) converMap.get("output"); + Map output = (Map) converMap.get("output"); // 调argo运行接口 - String runRes = httpUtils.sendPost(argoUrl + argoWorkflowRun,null, JsonUtils.mapToJson(runReqMap)); + String runRes = httpUtils.sendPost(argoUrl + argoWorkflowRun, null, JsonUtils.mapToJson(runReqMap)); if (runRes == null || StringUtils.isEmpty(runRes)) { throw new RuntimeException("Failed to run workflow."); @@ -255,7 +257,6 @@ public class ExperimentServiceImpl implements ExperimentService { } - Map metadata = (Map) data.get("metadata"); // 插入记录到实验实例表 ExperimentIns experimentIns = new ExperimentIns(); @@ -275,11 +276,11 @@ public class ExperimentServiceImpl implements ExperimentService { //得到dependendcy Map converMap2 = JsonUtils.jsonToMap(JacksonUtil.replaceInAarry(convertRes, params)); - Map dependendcy = (Map)converMap2.get("model_dependency"); - Map trainInfo = (Map)converMap2.get("component_info"); + Map dependendcy = (Map) converMap2.get("model_dependency"); + Map trainInfo = (Map) converMap2.get("component_info"); Map metricRecord = (Map) runResMap.get("metric_record"); - if (metricRecord != null){ + if (metricRecord != null) { //把训练用的数据集也放进去 addDatesetToMetric(metricRecord, trainInfo); experimentIns.setMetricRecord(JacksonUtil.toJSONString(metricRecord)); @@ -287,18 +288,18 @@ public class ExperimentServiceImpl implements ExperimentService { //插入ExperimentIns表中 ExperimentIns insert = experimentInsService.insert(experimentIns); //插入到模型依赖关系表 - if (dependendcy != null && trainInfo != null){ - insertModelDependency(dependendcy,trainInfo,insert.getId(),experiment.getName()); + if (dependendcy != null && trainInfo != null) { + insertModelDependencyNew(dependendcy, trainInfo, insert.getId(), experiment.getName()); } - Map datasetDependendcy = (Map)converMap2.get("dataset_dependency"); + Map datasetDependendcy = (Map) converMap2.get("dataset_dependency"); //暂存数据集元数据{} - if (datasetDependendcy != null && trainInfo != null){ - insertDatasetTempStorage(datasetDependendcy,trainInfo,experiment.getId(),insert.getId(),experiment.getName()); + if (datasetDependendcy != null && trainInfo != null) { + insertDatasetTempStorage(datasetDependendcy, trainInfo, experiment.getId(), insert.getId(), experiment.getName()); } - }catch (Exception e){ + } catch (Exception e) { throw new RuntimeException(e); } List updatedExperimentInsList = experimentInsService.getByExperimentId(id); @@ -306,12 +307,12 @@ public class ExperimentServiceImpl implements ExperimentService { return experiment; } - private void addDatesetToMetric(Map metricRecord, Map trainInfo) { + private void addDatesetToMetric(Map metricRecord, Map trainInfo) { processMetricPart(metricRecord, trainInfo, "train", "model_train"); processMetricPart(metricRecord, trainInfo, "evaluate", "model_evaluate"); } - private void processMetricPart(Map metricRecord, Map trainInfo, String metricKey, String trainInfoKey) { + private void processMetricPart(Map metricRecord, Map trainInfo, String metricKey, String trainInfoKey) { List> metricList = (List>) metricRecord.get(metricKey); if (metricList != null) { for (Map metricRecordItem : metricList) { @@ -336,24 +337,23 @@ public class ExperimentServiceImpl implements ExperimentService { } - - private void insertModelDependency(Map dependendcy,Map trainInfo, Integer experimentInsId, String experimentName) throws Exception { + private void insertModelDependency(Map dependendcy, Map trainInfo, Integer experimentInsId, String experimentName) throws Exception { Iterator> dependendcyIterator = dependendcy.entrySet().iterator(); - Map modelTrain = (Map) trainInfo.get("model_train"); - Map modelEvaluate = (Map) trainInfo.get("model_evaluate"); - Map modelExport = (Map) trainInfo.get("model_export"); + Map modelTrain = (Map) trainInfo.get("model_train"); + Map modelEvaluate = (Map) trainInfo.get("model_evaluate"); + Map modelExport = (Map) trainInfo.get("model_export"); while (dependendcyIterator.hasNext()) { ModelDependency modelDependency = new ModelDependency(); Map.Entry entry = dependendcyIterator.next(); Map modelDel = (Map) entry.getValue(); - Map source = (Map) modelDel.get("source"); + Map source = (Map) modelDel.get("source"); List> test = (List>) modelDel.get("test"); List> target = (List>) modelDel.get("target"); String sourceTaskId = (String) source.get("task_id"); - Map modelTrainMap = (Map)modelTrain.get(sourceTaskId); + Map modelTrainMap = (Map) modelTrain.get(sourceTaskId); //处理project数据 - Map projectMap = (Map) modelTrainMap.get("project"); + Map projectMap = (Map) modelTrainMap.get("project"); ProjectDepency projectDepency = new ProjectDepency(); projectDepency.setBranch(projectMap.get("branch")); String projectUrl = projectMap.get("url"); @@ -362,7 +362,7 @@ public class ExperimentServiceImpl implements ExperimentService { //依赖项目 modelDependency.setProjectDependency(JsonUtils.objectToJson(projectDepency)); //处理镜像 - Map imagesMap = (Map) modelTrainMap.get("image"); + Map imagesMap = (Map) modelTrainMap.get("image"); modelDependency.setTrainImage(imagesMap.get("name")); List> trainParamList = (List>) modelTrainMap.get("params"); modelDependency.setTrainParams(JsonUtils.objectToJson(trainParamList)); @@ -403,24 +403,24 @@ public class ExperimentServiceImpl implements ExperimentService { List> resultTestDatasets = new ArrayList>(); //处理test数据 if (test != null) { - for(int i=0;i testMap = test.get(i); String testTaskId = (String) testMap.get("task_id"); - Map evaluateMap = (Map) modelEvaluate.get(testTaskId); + Map evaluateMap = (Map) modelEvaluate.get(testTaskId); List> realDataSetList = (List>) evaluateMap.get("datasets"); - for(int j=0;j realDataSet = realDataSetList.get(j); Dataset dataset = datasetService.queryById((Integer) realDataSet.get("dataset_id")); - if (dataset == null){ + if (dataset == null) { throw new Exception("源数据集不存在"); } realDataSet.put("dataset_name", dataset.getName()); resultTestDatasets.add(realDataSet); } - } + } - //测试数据集 - modelDependency.setTestDataset(JsonUtils.objectToJson(resultTestDatasets)); + //测试数据集 + modelDependency.setTestDataset(JsonUtils.objectToJson(resultTestDatasets)); } //处理target数据 if (target != null) { @@ -438,7 +438,7 @@ public class ExperimentServiceImpl implements ExperimentService { modelDependencyService.insert(modelDependency); } } - }else { + } else { modelDependency.setState(2); modelDependencyService.insert(modelDependency); } @@ -448,27 +448,25 @@ public class ExperimentServiceImpl implements ExperimentService { /** * 存储数据集元数据到临时表 - * - * - */ - private void insertDatasetTempStorage(Map datasetDependendcy, Map trainInfo, Integer experimentId,Integer experimentInsId, String experimentName) { + */ + private void insertDatasetTempStorage(Map datasetDependendcy, Map trainInfo, Integer experimentId, Integer experimentInsId, String experimentName) { DatasetTempStorage datasetTempStorage = new DatasetTempStorage(); Iterator> dependendcyIterator = datasetDependendcy.entrySet().iterator(); - Map datasetExport = (Map) trainInfo.get("dataset_export"); - Map datasetPreprocess = (Map) trainInfo.get("dataset_preprocess"); + Map datasetExport = (Map) trainInfo.get("dataset_export"); + Map datasetPreprocess = (Map) trainInfo.get("dataset_preprocess"); while (dependendcyIterator.hasNext()) { Map.Entry entry = dependendcyIterator.next(); Map modelDel = (Map) entry.getValue(); - Map source = (Map) modelDel.get("source"); //被处理数据集 + Map source = (Map) modelDel.get("source"); //被处理数据集 // List> test = (List>) modelDel.get("test"); List> target = (List>) modelDel.get("target"); //导出的数据集 String sourceTaskId = (String) source.get("task_id"); - Map datasetPreprocessMap = (Map)datasetPreprocess.get(sourceTaskId); + Map datasetPreprocessMap = (Map) datasetPreprocess.get(sourceTaskId); //处理project数据 - Map projectMap = (Map) datasetPreprocessMap.get("project"); - Map datasets = (Map) datasetPreprocessMap.get("datasets"); + Map projectMap = (Map) datasetPreprocessMap.get("project"); + Map datasets = (Map) datasetPreprocessMap.get("datasets"); datasetTempStorage.setName((String) datasets.get("dataset_identifier")); datasetTempStorage.setVersion((String) datasets.get("dataset_version")); // 拼接需要的参数 @@ -476,8 +474,8 @@ public class ExperimentServiceImpl implements ExperimentService { sourceParams.put("experiment_name", experimentName); sourceParams.put("experiment_ins_id", experimentInsId); sourceParams.put("experiment_id", experimentId); - sourceParams.put("train_name",sourceTaskId); - sourceParams.put("preprocess_code",projectMap); + sourceParams.put("train_name", sourceTaskId); + sourceParams.put("preprocess_code", projectMap); datasetTempStorage.setSource(JacksonUtil.toJSONString(sourceParams)); datasetTempStorage.setState(1); datasetTempStorageService.insert(datasetTempStorage); @@ -485,9 +483,123 @@ public class ExperimentServiceImpl implements ExperimentService { } + private void insertModelDependencyNew(Map dependendcy, Map trainInfo, Integer experimentInsId, String experimentName) throws Exception { + Iterator> dependendcyIterator = dependendcy.entrySet().iterator(); + Map modelTrain = (Map) trainInfo.get("model_train"); + Map modelEvaluate = (Map) trainInfo.get("model_evaluate"); + Map modelExport = (Map) trainInfo.get("model_export"); + while (dependendcyIterator.hasNext()) { + ModelsVo modelMetaVo = new ModelsVo(); + + Map.Entry entry = dependendcyIterator.next(); + Map modelDel = (Map) entry.getValue(); + Map source = (Map) modelDel.get("source"); + List> test = (List>) modelDel.get("test"); + List> target = (List>) modelDel.get("target"); + String sourceTaskId = (String) source.get("task_id"); + + Map modelTrainMap = (Map) modelTrain.get(sourceTaskId); + //处理project数据 + Map projectMap = (Map) modelTrainMap.get("project"); + ProjectDepency projectDepency = new ProjectDepency(); + projectDepency.setBranch(projectMap.get("branch")); + String projectUrl = projectMap.get("url"); + projectDepency.setUrl(projectUrl); + projectDepency.setName(projectUrl.substring(projectUrl.lastIndexOf('/') + 1, projectUrl.length() - 4)); + modelMetaVo.setProjectDepency(projectDepency); + //处理镜像 + Map imagesMap = (Map) modelTrainMap.get("image"); + modelMetaVo.setImage(imagesMap.get("name")); + //处理训练参数 todo + HashMap trainParam = (HashMap) modelTrainMap.get("params"); + + //处理source数据 + List> modelsList = (List>) modelTrainMap.get("models"); + if (modelsList != null) { + Map parentModelMap = modelsList.get(0); + String id = (String) parentModelMap.get("model_id"); + String identifier = (String) parentModelMap.get("model_identifier"); + String version = (String) parentModelMap.get("model_version"); + + HashMap map = new HashMap<>(); + map.put("repoId", id); + map.put("identifier", identifier); + map.put("version", version); + String parentModel = JSON.toJSONString(map); + modelMetaVo.setParentModel(parentModel); + } + + //训练数据集 + List> trainDatasetList = (List>) modelTrainMap.get("datasets"); + if (trainDatasetList != null) { + List trainDatasets = new ArrayList<>(); + for (Map dataset : trainDatasetList) { + NewDatasetVo newDatasetVo = new NewDatasetVo(); + newDatasetVo.setId((Integer) dataset.get("dataset_id")); + newDatasetVo.setName((String) dataset.get("dataset_name")); + newDatasetVo.setVersion((String) dataset.get("dataset_version")); + newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); + //todo newDatasetVo.setowner + trainDatasets.add(newDatasetVo); + } + modelMetaVo.setTrainDatasets(trainDatasets); + } + //训练任务 + TrainTaskDepency trainTask = new TrainTaskDepency(); + trainTask.setTaskId(sourceTaskId); + trainTask.setInsId(experimentInsId); + trainTask.setName(experimentName); + modelMetaVo.setTrainTask(trainTask); + + //处理test数据 + if (test != null) { + for (Map testMap : test) { + String testTaskId = (String) testMap.get("task_id"); + Map evaluateMap = (Map) modelEvaluate.get(testTaskId); + List> testDatasetList = (List>) evaluateMap.get("datasets"); + List testDatasets = new ArrayList<>(); + for (Map dataset : testDatasetList) { + NewDatasetVo newDatasetVo = new NewDatasetVo(); + newDatasetVo.setId((Integer) dataset.get("dataset_id")); + newDatasetVo.setName((String) dataset.get("dataset_name")); + newDatasetVo.setVersion((String) dataset.get("dataset_version")); + newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); + testDatasets.add(newDatasetVo); + } + modelMetaVo.setTestDatasets(testDatasets); + } + } + + //处理target数据 + if (target != null) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + for (int i = 0; i < target.size(); i++) { + Map targetMap = target.get(i); + String targetTaskId = (String) targetMap.get("task_id"); + Map exportMap = (Map) modelExport.get(targetTaskId); + List> modelTargetList = (List>) exportMap.get("models"); + for (int j = 0; j < modelTargetList.size(); j++) { + Map targetModel = modelTargetList.get(i); + modelMetaVo.setId((Integer) targetModel.get("model_id")); + modelMetaVo.setIdentifier((String) targetModel.get("model_identifier")); + modelMetaVo.setName((String) targetModel.get("model_name")); + modelMetaVo.setVersionDesc((String) targetModel.get("model_version")); + modelMetaVo.setOwner(gitLinkUsername); + + modelsService.newCreateVersion(modelMetaVo); + } + } + } + + } + } + + /** * 被废弃的旧JSON - * @param experiment + * + * @param experiment * @return * @throws Exception */ @@ -586,7 +698,6 @@ public class ExperimentServiceImpl implements ExperimentService { // } // } // } - @Override public Experiment addAndRunExperiment(Experiment experiment) throws Exception { // 第一步: 调用add方法插入实验记录到数据库 @@ -597,7 +708,7 @@ public class ExperimentServiceImpl implements ExperimentService { } // 调用runExperiment方法运行实验 try { - newExperiment = this.runExperiment(newExperiment.getId()); + newExperiment = this.runExperiment(newExperiment.getId()); } catch (Exception e) { throw new RuntimeException(e); } @@ -606,7 +717,6 @@ public class ExperimentServiceImpl implements ExperimentService { } - /** * 返回实验配置参数 * @@ -649,6 +759,4 @@ public class ExperimentServiceImpl implements ExperimentService { } - - } From b3d274f79ce78a1fbefe5b9c596f6b53aab50d3f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 16:56:05 +0800 Subject: [PATCH 129/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 4a2f2c57..85c2f54f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -8,16 +8,18 @@ import com.ruoyi.platform.domain.dependencydomain.ProjectDepency; import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; +import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.service.*; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; -import com.ruoyi.platform.utils.NewHttpUtils; +import com.ruoyi.platform.vo.ModelMetaVo; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; @@ -59,6 +61,10 @@ public class ExperimentServiceImpl implements ExperimentService { @Resource @Lazy private ExperimentInsService experimentInsService; + + @Resource + private ModelDependency1Dao modelDependency1Dao; + @Value("${argo.url}") private String argoUrl; @Value("${argo.convert}") @@ -488,6 +494,7 @@ public class ExperimentServiceImpl implements ExperimentService { Map modelExport = (Map) trainInfo.get("model_export"); while (dependendcyIterator.hasNext()) { ModelsVo modelMetaVo = new ModelsVo(); + ModelDependency1 modelDependency = new ModelDependency1(); Map.Entry entry = dependendcyIterator.next(); Map modelDel = (Map) entry.getValue(); @@ -525,6 +532,7 @@ public class ExperimentServiceImpl implements ExperimentService { map.put("version", version); String parentModel = JSON.toJSONString(map); modelMetaVo.setParentModel(parentModel); + modelDependency.setParentModel(parentModel); } //训练数据集 @@ -569,9 +577,10 @@ public class ExperimentServiceImpl implements ExperimentService { } //处理target数据 + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + modelMetaVo.setOwner(gitLinkUsername); if (target != null) { - LoginUser loginUser = SecurityUtils.getLoginUser(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); for (int i = 0; i < target.size(); i++) { Map targetMap = target.get(i); String targetTaskId = (String) targetMap.get("task_id"); @@ -588,6 +597,11 @@ public class ExperimentServiceImpl implements ExperimentService { modelsService.newCreateVersion(modelMetaVo); } } + } else { + String meta = JSON.toJSONString(modelMetaVo); + modelDependency.setMeta(meta); + modelDependency.setOwner(gitLinkUsername); + modelDependency1Dao.insert(modelDependency); } } From f9cf9ad312295ce65803aefbf52c49b3c797dea5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 17:07:09 +0800 Subject: [PATCH 130/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 6 +++--- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 179ed563..43978891 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -995,9 +995,9 @@ public class ModelsServiceImpl implements ModelsService { if (map != null) { List> topics = (List>) map.get("topics"); - if (topics != null && topics.size() > 0 && modelTopic.equals(topics.get(0).get("name"))) { - String modeltag = (String) topics.get(1).get("name"); - String modeltype = (String) topics.get(2).get("name"); + if (topics != null && topics.size() > 0 && modelTopic.equals(topics.get(1).get("name"))) { + String modeltag = (String) topics.get(2).get("name"); + String modeltype = (String) topics.get(3).get("name"); modeltag = modeltag.substring("modeltag-".length()); modeltype = modeltype.substring("modeltype-".length()); if (StringUtils.isNotEmpty(modelTagName) && !modelTagName.toLowerCase().equals(modeltag)) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 3cf9d2a2..5ebe5274 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -448,9 +448,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { if (map != null) { List> topics = (List>) map.get("topics"); - if (topics != null && topics.size() > 0 && datasetTopic.equals(topics.get(0).get("name"))) { - String datasettag = (String) topics.get(1).get("name"); - String datasetype = (String) topics.get(2).get("name"); + if (topics != null && topics.size() > 0 && datasetTopic.equals(topics.get(1).get("name"))) { + String datasettag = (String) topics.get(2).get("name"); + String datasetype = (String) topics.get(3).get("name"); datasettag = datasettag.substring("datatag-".length()); datasetype = datasetype.substring("datatype-".length()); if (StringUtils.isNotEmpty(datasetTagName) && !datasetTagName.toLowerCase().equals(datasettag)) { From b0ead1807b3af94028b10022070b1985d89e2e82 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 19 Sep 2024 17:24:59 +0800 Subject: [PATCH 131/381] =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=E7=94=A8?= =?UTF-8?q?=E5=88=B0=E8=A1=A8=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 5ebe5274..ecab9d85 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -132,7 +132,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setIdentifier(repositoryName); datasetVo.setId(gitlinIid); datasetVo.setOwner((String) userInfo.get("login")); - datasetVo.setRelativePaths(relatePath); + datasetVo.setRelativePaths(relatePath+"/dataset"); addDatasetSourceToDataVo(datasetVo); @@ -211,7 +211,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setDescription(newDatasetVo.getDescription()); datasetVo.setDataTag(newDatasetVo.getDataTag()); datasetVo.setDataType(newDatasetVo.getDataType()); - datasetVo.setRelativePaths(relatePath); + datasetVo.setRelativePaths(relatePath+"/dataset"); addDatasetSourceToDataVo(datasetVo); @@ -308,7 +308,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { } List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!fileDetailsAfterGitPull:{}" + fileDetailsAfterGitPull); Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); List versionVos = new ArrayList(); From d5ad62af178b74db54b9088942e4998d19c1becd Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 17:27:27 +0800 Subject: [PATCH 132/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=B8=E5=AF=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ModelsServiceImpl.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 43978891..be140f01 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -593,8 +593,7 @@ public class ModelsServiceImpl implements ModelsService { String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); - String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName; - String rootPath = localPath + relatePath; + String rootPath = localPath + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; @@ -617,7 +616,7 @@ public class ModelsServiceImpl implements ModelsService { modelMetaVo.setIdentifier(repositoryName); modelMetaVo.setOwner(owner); modelMetaVo.setVersionDesc(modelMetaVo.getDescription()); - modelMetaVo.setRelativePaths(relatePath); + modelMetaVo.setRelativePaths(modelPath); File folder = new File(modelPath); long folderSize = FileUtil.getFolderSize(folder); modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize)); @@ -689,8 +688,7 @@ public class ModelsServiceImpl implements ModelsService { String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); - String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName; - String rootPath = localPath + relatePath; + String rootPath = localPath + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; @@ -721,7 +719,7 @@ public class ModelsServiceImpl implements ModelsService { modelMetaVo.setDescription(oldModelVo.getDescription()); modelMetaVo.setModelTag(oldModelVo.getModelTag()); modelMetaVo.setModelType(oldModelVo.getModelType()); - modelMetaVo.setRelativePaths(relatePath); + modelMetaVo.setRelativePaths(modelPath); File folder = new File(modelPath); long folderSize = FileUtil.getFolderSize(folder); modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize)); From 5311545d1bfb887fd6cfdabed46e81489b03e9fa Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 17:36:07 +0800 Subject: [PATCH 133/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/common/core/utils/DateUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java index 137eccb5..bcb1f512 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java @@ -9,6 +9,8 @@ import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; +import java.util.TimeZone; + import org.apache.commons.lang3.time.DateFormatUtils; /** @@ -75,7 +77,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils public static final String parseDateToStr(final String format, final Date date) { - return new SimpleDateFormat(format).format(date); + SimpleDateFormat sdf = new SimpleDateFormat(format); + sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); + return sdf.format(date); } public static final Date dateTime(final String format, final String ts) From e374d39af892b57c2b66477321edd80ca4208fca Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 19 Sep 2024 18:07:27 +0800 Subject: [PATCH 134/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/template-yaml/k8s-7management.yaml | 3 +++ .../main/java/com/ruoyi/common/core/utils/DateUtils.java | 6 +----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index a6b4b3a2..d4c17efc 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -16,6 +16,9 @@ spec: containers: - name: ci4s-management-platform image: ${k8s-7management-image} + env: + - name: TZ + value: Asia/Shanghai ports: - containerPort: 9213 volumeMounts: diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java index bcb1f512..137eccb5 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java @@ -9,8 +9,6 @@ import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; -import java.util.TimeZone; - import org.apache.commons.lang3.time.DateFormatUtils; /** @@ -77,9 +75,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils public static final String parseDateToStr(final String format, final Date date) { - SimpleDateFormat sdf = new SimpleDateFormat(format); - sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); - return sdf.format(date); + return new SimpleDateFormat(format).format(date); } public static final Date dateTime(final String format, final String ts) From 28da9b11b82e85f6b9068f819bbcacf93bc51b06 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 09:04:53 +0800 Subject: [PATCH 135/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=B8=E5=AF=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index be140f01..c9110195 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -596,6 +596,7 @@ public class ModelsServiceImpl implements ModelsService { String rootPath = localPath + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; + String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName+ "/model"; dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); dvcUtils.moveFiles(sourcePath, modelPath); @@ -616,7 +617,7 @@ public class ModelsServiceImpl implements ModelsService { modelMetaVo.setIdentifier(repositoryName); modelMetaVo.setOwner(owner); modelMetaVo.setVersionDesc(modelMetaVo.getDescription()); - modelMetaVo.setRelativePaths(modelPath); + modelMetaVo.setRelativePaths(relatePath); File folder = new File(modelPath); long folderSize = FileUtil.getFolderSize(folder); modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize)); @@ -691,6 +692,7 @@ public class ModelsServiceImpl implements ModelsService { String rootPath = localPath + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; + String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/model"; //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml"); @@ -719,7 +721,7 @@ public class ModelsServiceImpl implements ModelsService { modelMetaVo.setDescription(oldModelVo.getDescription()); modelMetaVo.setModelTag(oldModelVo.getModelTag()); modelMetaVo.setModelType(oldModelVo.getModelType()); - modelMetaVo.setRelativePaths(modelPath); + modelMetaVo.setRelativePaths(relatePath); File folder = new File(modelPath); long folderSize = FileUtil.getFolderSize(folder); modelMetaVo.setModelSize(FileUtil.formatFileSize(folderSize)); From 1091dfde558803f24f862734e02377c3ed588c92 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 09:29:41 +0800 Subject: [PATCH 136/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 26 +++++++++++----- .../service/impl/NewDatasetServiceImpl.java | 30 +++++++++++++------ 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index be140f01..292c30a6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -993,15 +993,27 @@ public class ModelsServiceImpl implements ModelsService { if (map != null) { List> topics = (List>) map.get("topics"); - if (topics != null && topics.size() > 0 && modelTopic.equals(topics.get(1).get("name"))) { - String modeltag = (String) topics.get(2).get("name"); - String modeltype = (String) topics.get(3).get("name"); - modeltag = modeltag.substring("modeltag-".length()); - modeltype = modeltype.substring("modeltype-".length()); - if (StringUtils.isNotEmpty(modelTagName) && !modelTagName.toLowerCase().equals(modeltag)) { + String modelTopicName = null; + String modelTag = null; + String modelType = null; + for (Map topic : topics) { + String topicName = (String) topic.get("name"); + if (modelTopic.equals(topicName)) { + modelTopicName = (String) topic.get("name"); + } + if (topicName.startsWith("modeltag-")) { + modelTag = topicName.substring("modeltag-".length()); + } + if (topicName.startsWith("modeltype-")) { + modelType = topicName.substring("modeltype-".length()); + } + } + + if (modelTopicName != null) { + if (StringUtils.isNotEmpty(modelTagName) && !modelTagName.toLowerCase().equals(modelTag)) { continue; } - if (StringUtils.isNotEmpty(modelTypeName) && !modelTypeName.toLowerCase().equals(modeltype)) { + if (StringUtils.isNotEmpty(modelTypeName) && !modelTypeName.toLowerCase().equals(modelType)) { continue; } newModelVo.setModelTag(modelTagName); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index ecab9d85..48b0033d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -132,7 +132,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setIdentifier(repositoryName); datasetVo.setId(gitlinIid); datasetVo.setOwner((String) userInfo.get("login")); - datasetVo.setRelativePaths(relatePath+"/dataset"); + datasetVo.setRelativePaths(relatePath + "/dataset"); addDatasetSourceToDataVo(datasetVo); @@ -211,7 +211,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setDescription(newDatasetVo.getDescription()); datasetVo.setDataTag(newDatasetVo.getDataTag()); datasetVo.setDataType(newDatasetVo.getDataType()); - datasetVo.setRelativePaths(relatePath+"/dataset"); + datasetVo.setRelativePaths(relatePath + "/dataset"); addDatasetSourceToDataVo(datasetVo); @@ -447,15 +447,27 @@ public class NewDatasetServiceImpl implements NewDatasetService { if (map != null) { List> topics = (List>) map.get("topics"); - if (topics != null && topics.size() > 0 && datasetTopic.equals(topics.get(1).get("name"))) { - String datasettag = (String) topics.get(2).get("name"); - String datasetype = (String) topics.get(3).get("name"); - datasettag = datasettag.substring("datatag-".length()); - datasetype = datasetype.substring("datatype-".length()); - if (StringUtils.isNotEmpty(datasetTagName) && !datasetTagName.toLowerCase().equals(datasettag)) { + String datasetTopicName = null; + String datasetTag = null; + String datasetType = null; + for (Map topic : topics) { + String topicName = (String) topic.get("name"); + if (datasetTopic.equals(topicName)) { + datasetTopicName = (String) topic.get("name"); + } + if (topicName.startsWith("datatag-")) { + datasetTag = topicName.substring("datatag-".length()); + } + if (topicName.startsWith("datatype-")) { + datasetType = topicName.substring("datatype-".length()); + } + } + + if (datasetTopicName != null) { + if (StringUtils.isNotEmpty(datasetTagName) && !datasetTagName.toLowerCase().equals(datasetTag)) { continue; } - if (StringUtils.isNotEmpty(datasetTypeName) && !datasetTypeName.toLowerCase().equals(datasetype)) { + if (StringUtils.isNotEmpty(datasetTypeName) && !datasetTypeName.toLowerCase().equals(datasetType)) { continue; } newDatasetVo.setDataTag(datasetTagName); From 994696da9a305c3984687c5a2f78a1e92e10518e Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 11:16:21 +0800 Subject: [PATCH 137/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 39 +++++++++++++----- .../com/ruoyi/platform/utils/DVCUtils.java | 29 ++------------ .../com/ruoyi/platform/utils/FileUtil.java | 40 +++++++++++++++++++ 3 files changed, 72 insertions(+), 36 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 85c2f54f..fdd0ed95 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -10,16 +10,16 @@ import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.service.*; +import com.ruoyi.platform.utils.FileUtil; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; -import com.ruoyi.platform.vo.ModelMetaVo; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; +import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; @@ -293,7 +293,7 @@ public class ExperimentServiceImpl implements ExperimentService { ExperimentIns insert = experimentInsService.insert(experimentIns); //插入到模型依赖关系表 if (dependendcy != null && trainInfo != null) { - insertModelDependencyNew(dependendcy, trainInfo, insert.getId(), experiment.getName()); + insertModelDependencyNew(dependendcy, trainInfo, output, insert.getId(), experiment.getName()); } Map datasetDependendcy = (Map) converMap2.get("dataset_dependency"); @@ -487,11 +487,13 @@ public class ExperimentServiceImpl implements ExperimentService { } - private void insertModelDependencyNew(Map dependendcy, Map trainInfo, Integer experimentInsId, String experimentName) throws Exception { + private void insertModelDependencyNew(Map dependendcy, Map trainInfo, Map output, Integer experimentInsId, String experimentName) throws Exception { Iterator> dependendcyIterator = dependendcy.entrySet().iterator(); Map modelTrain = (Map) trainInfo.get("model_train"); Map modelEvaluate = (Map) trainInfo.get("model_evaluate"); Map modelExport = (Map) trainInfo.get("model_export"); + Map param_output = (Map) output.get("param_output"); + while (dependendcyIterator.hasNext()) { ModelsVo modelMetaVo = new ModelsVo(); ModelDependency1 modelDependency = new ModelDependency1(); @@ -516,7 +518,7 @@ public class ExperimentServiceImpl implements ExperimentService { Map imagesMap = (Map) modelTrainMap.get("image"); modelMetaVo.setImage(imagesMap.get("name")); //处理训练参数 todo - HashMap trainParam = (HashMap) modelTrainMap.get("params"); +// HashMap trainParam = (HashMap) modelTrainMap.get("params"); //处理source数据 List> modelsList = (List>) modelTrainMap.get("models"); @@ -541,7 +543,7 @@ public class ExperimentServiceImpl implements ExperimentService { List trainDatasets = new ArrayList<>(); for (Map dataset : trainDatasetList) { NewDatasetVo newDatasetVo = new NewDatasetVo(); - newDatasetVo.setId((Integer) dataset.get("dataset_id")); + newDatasetVo.setId(Integer.valueOf((String) dataset.get("dataset_id"))); newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); @@ -566,7 +568,7 @@ public class ExperimentServiceImpl implements ExperimentService { List testDatasets = new ArrayList<>(); for (Map dataset : testDatasetList) { NewDatasetVo newDatasetVo = new NewDatasetVo(); - newDatasetVo.setId((Integer) dataset.get("dataset_id")); + newDatasetVo.setId(Integer.valueOf((String) dataset.get("dataset_id"))); newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); @@ -579,6 +581,7 @@ public class ExperimentServiceImpl implements ExperimentService { //处理target数据 LoginUser loginUser = SecurityUtils.getLoginUser(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); +// String gitLinkUsername = "fanshuai"; modelMetaVo.setOwner(gitLinkUsername); if (target != null) { for (int i = 0; i < target.size(); i++) { @@ -586,16 +589,32 @@ public class ExperimentServiceImpl implements ExperimentService { String targetTaskId = (String) targetMap.get("task_id"); Map exportMap = (Map) modelExport.get(targetTaskId); List> modelTargetList = (List>) exportMap.get("models"); + List> outputList = (List>) param_output.get(targetTaskId); + for (int j = 0; j < modelTargetList.size(); j++) { Map targetModel = modelTargetList.get(i); - modelMetaVo.setId((Integer) targetModel.get("model_id")); + modelMetaVo.setId(Integer.valueOf((String) targetModel.get("model_id"))); modelMetaVo.setIdentifier((String) targetModel.get("model_identifier")); modelMetaVo.setName((String) targetModel.get("model_name")); modelMetaVo.setVersionDesc((String) targetModel.get("model_version")); modelMetaVo.setOwner(gitLinkUsername); - modelsService.newCreateVersion(modelMetaVo); + List versionVos = new ArrayList<>(); + for (Map outputFile : outputList) { + String path = (String) outputFile.get("path"); + List> files = FileUtil.getFiles(path); + for (Map fileDetail : files) { + VersionVo versionVo = new VersionVo(); + versionVo.setUrl((String) fileDetail.get("filePath")); + versionVo.setFileName((String) fileDetail.get("fileName")); + long size = (long) fileDetail.get("size"); + versionVo.setFileSize(FileUtil.formatFileSize(size)); + versionVos.add(versionVo); + } + } + modelMetaVo.setModelVersionVos(versionVos); } + modelsService.newCreateVersion(modelMetaVo); } } else { String meta = JSON.toJSONString(modelMetaVo); @@ -605,8 +624,8 @@ public class ExperimentServiceImpl implements ExperimentService { } } - } + } /** * 被废弃的旧JSON diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 772063d7..795a2b0a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -574,40 +574,17 @@ public class DVCUtils { * @return 包含文件路径、名称和大小的List> */ public List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) { - List> fileInfoList = new ArrayList<>(); - try { - //刷新 refreshRemoteBranches(localPath+"/"+repoFolder, username, password,branch); // 读取data文件夹中的文件列表 String path = localPath + "/" + repoFolder + "/" + filePath; - Path dataPath = Paths.get(path); - File[] files = dataPath.toFile().listFiles(); - - System.out.println("!!!!!!!!!!!!!!!!!dataPath: "+path); - System.out.println("!!!!!!!!!!!!!!!!!files: "+files); - if (files != null) { - for (File file : files) { - if (file.isFile()) { - long size = Files.size(file.toPath()); - String absoluteFilePath = file.getAbsolutePath(); - String fileName = file.getName(); - - Map fileDetails = new HashMap<>(); - fileDetails.put("size", size); - fileDetails.put("filePath", absoluteFilePath); - fileDetails.put("fileName", fileName); - - fileInfoList.add(fileDetails); - } - } - } + + return FileUtil.getFiles(path); } catch (Exception e) { log.error("Error occurred while getting file details after git pull", e); } - - return fileInfoList; + return null; } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index 58e7d84b..f67cbf0d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -1,9 +1,21 @@ package com.ruoyi.platform.utils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class FileUtil { + private static final Logger log = LoggerFactory.getLogger(DVCUtils.class); + // 格式化文件大小为可读的字符串表示 public static String formatFileSize(long sizeInBytes) { // 检查文件大小是否为负数 @@ -61,4 +73,32 @@ public class FileUtil { } return size; } + + public static List> getFiles(String path) { + List> fileInfoList = new ArrayList<>(); + + Path dataPath = Paths.get(path); + File[] files = dataPath.toFile().listFiles(); + try { + if (files != null) { + for (File file : files) { + if (file.isFile()) { + long size = Files.size(file.toPath()); + String absoluteFilePath = file.getAbsolutePath(); + String fileName = file.getName(); + + Map fileDetails = new HashMap<>(); + fileDetails.put("size", size); + fileDetails.put("filePath", absoluteFilePath); + fileDetails.put("fileName", fileName); + + fileInfoList.add(fileDetails); + } + } + } + } catch (Exception e) { + log.error("Error occurred while getting file details after git pull", e); + } + return fileInfoList; + } } From e4858cc9767be236e3c04a8ea10aeddeeb19766a Mon Sep 17 00:00:00 2001 From: somunslotus Date: Fri, 20 Sep 2024 11:57:07 +0800 Subject: [PATCH 138/381] x --- k8s/template-yaml/deploy/k8s-7management.yaml | 12 +++++++++++- k8s/template-yaml/k8s-7management.yaml | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml index 9c00a04b..b6d87d08 100644 --- a/k8s/template-yaml/deploy/k8s-7management.yaml +++ b/k8s/template-yaml/deploy/k8s-7management.yaml @@ -15,9 +15,19 @@ spec: spec: containers: - name: ci4s-management-platform - image: 172.20.32.187/ci4s/ci4s-managent:202409181517 + image: 172.20.32.187/ci4s/ci4s-managent:202409201116 + env: + - name: TZ + value: Asia/Shanghai ports: - containerPort: 9213 + volumeMounts: + - name: resource-volume + mountPath: /home/resource/ + volumes: + - name: resource-volume + persistentVolumeClaim: + claimName: platform-data-pvc-nfs --- apiVersion: v1 kind: Service diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index d4c17efc..15d0bc5e 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -19,6 +19,8 @@ spec: env: - name: TZ value: Asia/Shanghai + - name: JAVA_TOOL_OPTIONS + value: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005 ports: - containerPort: 9213 volumeMounts: From aa37cfaede3e3d722b5ef4fc4dcb984124e615f9 Mon Sep 17 00:00:00 2001 From: somunslotus Date: Fri, 20 Sep 2024 13:44:39 +0800 Subject: [PATCH 139/381] x --- k8s/template-yaml/k8s-7management.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index 15d0bc5e..a868f8a0 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -42,6 +42,11 @@ spec: - port: 9213 nodePort: 31208 protocol: TCP + - name: debug + nodePort: 34567 + port: 5005 + porttocol: TCP + targetPort: 5005 selector: app: ci4s-management-platform From 64f949ec5ecbef5220009a1b844ab5a80754342e Mon Sep 17 00:00:00 2001 From: somunslotus Date: Fri, 20 Sep 2024 13:49:15 +0800 Subject: [PATCH 140/381] x --- k8s/dockerfiles/conf/nginx.conf.bak | 60 +++++++++++++++++++ k8s/template-yaml/deploy/k8s-7management.yaml | 9 ++- k8s/template-yaml/k8s-7management.yaml | 4 +- 3 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 k8s/dockerfiles/conf/nginx.conf.bak diff --git a/k8s/dockerfiles/conf/nginx.conf.bak b/k8s/dockerfiles/conf/nginx.conf.bak new file mode 100644 index 00000000..281ad4f4 --- /dev/null +++ b/k8s/dockerfiles/conf/nginx.conf.bak @@ -0,0 +1,60 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + sendfile on; + keepalive_timeout 65; + + server { + listen 8000; + server_name localhost; + + location /api/{ + rewrite ^/prod-api/(.*)$ /$1 break; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://ci4s-gateway-service.argo.svc:8082/; + } + + location /label-studio { + rewrite ^/prod-api/(.*)$ /$1 break; + proxy_pass http://label-studio-ls-app.label-data.svc:80/; + proxy_hide_header X-Frame-Options; + add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/"; + } + + location /api/v1/model/ { + proxy_pass http://pipeline-convert-service.argo.svc:80; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location / { + rewrite ^/prod-api/(.*)$ /$1 break; + root /home/ruoyi/projects/ruoyi-ui; + try_files $uri $uri/ /index.html; + index index.html index.htm; + } + + location @router { + rewrite ^.*$ /index.html last; + } + + # 避免actuator暴露 + if ($request_uri ~ "/actuator") { + return 403; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } +} diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml index b6d87d08..07f9525a 100644 --- a/k8s/template-yaml/deploy/k8s-7management.yaml +++ b/k8s/template-yaml/deploy/k8s-7management.yaml @@ -15,10 +15,12 @@ spec: spec: containers: - name: ci4s-management-platform - image: 172.20.32.187/ci4s/ci4s-managent:202409201116 + image: 172.20.32.187/ci4s/ci4s-managent:202409201345 env: - name: TZ value: Asia/Shanghai + - name: JAVA_TOOL_OPTIONS + value: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005 ports: - containerPort: 9213 volumeMounts: @@ -40,6 +42,11 @@ spec: - port: 9213 nodePort: 31208 protocol: TCP + - name: debug + nodePort: 34567 + port: 5005 + porttocol: TCP + targetPort: 5005 selector: app: ci4s-management-platform diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index a868f8a0..7cbfab68 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -20,7 +20,7 @@ spec: - name: TZ value: Asia/Shanghai - name: JAVA_TOOL_OPTIONS - value: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005 + value: "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005" ports: - containerPort: 9213 volumeMounts: @@ -45,7 +45,7 @@ spec: - name: debug nodePort: 34567 port: 5005 - porttocol: TCP + portocol: TCP targetPort: 5005 selector: app: ci4s-management-platform From 53e725e82187b612b404f11b67aa6e7cf7a7786d Mon Sep 17 00:00:00 2001 From: somunslotus Date: Fri, 20 Sep 2024 13:51:44 +0800 Subject: [PATCH 141/381] x --- k8s/template-yaml/deploy/k8s-7management.yaml | 6 +++--- k8s/template-yaml/k8s-7management.yaml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml index 07f9525a..6f433e63 100644 --- a/k8s/template-yaml/deploy/k8s-7management.yaml +++ b/k8s/template-yaml/deploy/k8s-7management.yaml @@ -15,12 +15,12 @@ spec: spec: containers: - name: ci4s-management-platform - image: 172.20.32.187/ci4s/ci4s-managent:202409201345 + image: 172.20.32.187/ci4s/ci4s-managent:202409201350 env: - name: TZ value: Asia/Shanghai - name: JAVA_TOOL_OPTIONS - value: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005 + value: "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005" ports: - containerPort: 9213 volumeMounts: @@ -45,7 +45,7 @@ spec: - name: debug nodePort: 34567 port: 5005 - porttocol: TCP + portocol: TCP targetPort: 5005 selector: app: ci4s-management-platform diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index 7cbfab68..2a237227 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -45,7 +45,7 @@ spec: - name: debug nodePort: 34567 port: 5005 - portocol: TCP + protocol: TCP targetPort: 5005 selector: app: ci4s-management-platform From 911dd2bb727ac7608dc3d790b2f048239c03b864 Mon Sep 17 00:00:00 2001 From: somunslotus Date: Fri, 20 Sep 2024 13:54:08 +0800 Subject: [PATCH 142/381] x --- k8s/template-yaml/deploy/k8s-7management.yaml | 4 ++-- k8s/template-yaml/k8s-7management.yaml | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml index 6f433e63..859e9199 100644 --- a/k8s/template-yaml/deploy/k8s-7management.yaml +++ b/k8s/template-yaml/deploy/k8s-7management.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: ci4s-management-platform - image: 172.20.32.187/ci4s/ci4s-managent:202409201350 + image: 172.20.32.187/ci4s/ci4s-managent:202409201352 env: - name: TZ value: Asia/Shanghai @@ -45,7 +45,7 @@ spec: - name: debug nodePort: 34567 port: 5005 - portocol: TCP + protocol: TCP targetPort: 5005 selector: app: ci4s-management-platform diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index 2a237227..b506d6b5 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -39,7 +39,8 @@ metadata: spec: type: NodePort ports: - - port: 9213 + - name: http + port: 9213 nodePort: 31208 protocol: TCP - name: debug From 1d117b0ca59d442dad53bdf87995e1805b53d77a Mon Sep 17 00:00:00 2001 From: somunslotus Date: Fri, 20 Sep 2024 13:56:50 +0800 Subject: [PATCH 143/381] x --- k8s/template-yaml/deploy/k8s-7management.yaml | 5 +++-- k8s/template-yaml/k8s-7management.yaml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/k8s/template-yaml/deploy/k8s-7management.yaml b/k8s/template-yaml/deploy/k8s-7management.yaml index 859e9199..75f1b522 100644 --- a/k8s/template-yaml/deploy/k8s-7management.yaml +++ b/k8s/template-yaml/deploy/k8s-7management.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: ci4s-management-platform - image: 172.20.32.187/ci4s/ci4s-managent:202409201352 + image: 172.20.32.187/ci4s/ci4s-managent:202409201355 env: - name: TZ value: Asia/Shanghai @@ -39,7 +39,8 @@ metadata: spec: type: NodePort ports: - - port: 9213 + - name: http + port: 9213 nodePort: 31208 protocol: TCP - name: debug diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index b506d6b5..4fcddb15 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -44,7 +44,7 @@ spec: nodePort: 31208 protocol: TCP - name: debug - nodePort: 34567 + nodePort: 31219 port: 5005 protocol: TCP targetPort: 5005 From 67e4c9d6ae3abc01fff031b8231f155a3a6c9efa Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 14:43:19 +0800 Subject: [PATCH 144/381] =?UTF-8?q?=E5=8A=A0=E4=B8=8Advc=20pull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 5 +++++ .../service/impl/NewDatasetServiceImpl.java | 7 +++++-- .../com/ruoyi/platform/utils/DVCUtils.java | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 697ec04f..ec1342ab 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -599,6 +599,8 @@ public class ModelsServiceImpl implements ModelsService { String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName+ "/model"; dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); + //干掉目标文件夹 + dvcUtils.deleteDirectory(modelPath); dvcUtils.moveFiles(sourcePath, modelPath); //拼接生产的元数据后写入yaml文件 @@ -701,7 +703,10 @@ public class ModelsServiceImpl implements ModelsService { // 创建本地分支 dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); //dvc checkout + dvcUtils.dvcPull(rootPath); dvcUtils.dvcCheckout(rootPath); + //干掉目标文件夹 + dvcUtils.deleteDirectory(modelPath); dvcUtils.moveFiles(sourcePath, modelPath); //拼接生产的元数据后写入yaml文件 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 48b0033d..4357f395 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -117,7 +117,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 命令行操作 git clone 项目地址 dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; - + //干掉目标文件夹 + dvcUtils.deleteDirectory(datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath); // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); @@ -188,11 +189,13 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName); //dvc checkout + dvcUtils.dvcPull(localPath); dvcUtils.dvcCheckout(localPath); // 准备数据 String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; - + //干掉目标文件夹 + dvcUtils.deleteDirectory(datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath); // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 795a2b0a..52cfa450 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -78,6 +78,26 @@ public class DVCUtils { Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); } + public void deleteDirectory(String dirPath) throws IOException { + Path directory = Paths.get(dirPath); + + // 检查是否目录存在 + if (Files.exists(directory)) { + // 使用Files.walk来删除目录及其内容 + Files.walk(directory) + .sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹 + .forEach(this::deletePath); + } + } + + private void deletePath(Path path) { + try { + Files.delete(path); + } catch (IOException e) { + log.error("Unable to delete: " + path + " " + e.getMessage()); + } + } + public void gitClone(String localPath, String repoUrl, String branch, String username, String password) throws GitAPIException { CloneCommand cloneCommand = Git.cloneRepository() .setURI(repoUrl) @@ -419,6 +439,7 @@ public class DVCUtils { // 切换分支 gitCheckoutBranch(localPath, branch); + dvcPull(localPath); dvcCheckout(localPath); } From aab43e7bf650aa77f6992e584966d962b00f868b Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 14:52:48 +0800 Subject: [PATCH 145/381] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=B9=B2=E6=8E=89?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 2 ++ .../service/impl/NewDatasetServiceImpl.java | 3 ++- .../com/ruoyi/platform/utils/DVCUtils.java | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index ec1342ab..07880e77 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -700,6 +700,8 @@ public class ModelsServiceImpl implements ModelsService { Map stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml"); ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + //检查是否存在本地重名分支,有的话干掉 + dvcUtils.deleteLocalBranch(rootPath, branchName); // 创建本地分支 dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); //dvc checkout diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 4357f395..cd2f20ef 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -184,7 +184,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); - + //检查是否存在本地重名分支,有的话干掉 + dvcUtils.deleteLocalBranch(localPath, branchName); // 创建本地分支 dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 52cfa450..9f3aef36 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -258,6 +258,33 @@ public class DVCUtils { log.error("Error occurred while creating local branch", e); } } + /** + * 删除本地分支 + * + * @param localPath 本地仓库路径 + * @param branchName 要删除的分支名称 + */ + public void deleteLocalBranch(String localPath, String branchName) throws IOException, GitAPIException { + FileRepositoryBuilder builder = new FileRepositoryBuilder(); + Repository repository = builder.setGitDir(new File(localPath + "/.git")) + .readEnvironment() + .findGitDir() + .build(); + + try (Git git = new Git(repository)) { + // 获取所有本地分支 + for (Ref ref : git.branchList().call()) { + String refName = ref.getName(); + if (refName.endsWith("/" + branchName)) { + // 删除本地分支 + git.branchDelete().setBranchNames(refName).setForce(true).call(); + log.info("Deleted branch: " + branchName); + return; + } + } + log.info("Branch not found: " + branchName); + } + } /** * 基于 master 创建本地分支 From c02df8437eb42ff2846969d2af890fbcdc4615af Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 15:12:49 +0800 Subject: [PATCH 146/381] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=B9=B2=E6=8E=89?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 9f3aef36..e948666e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -601,7 +601,7 @@ public class DVCUtils { // 更新的 dvcPull 方法 public void dvcPull(String localPath) throws Exception { - String command = "dvc pull"; + String command = "dvc pull -v"; runCommand(command, localPath); } From 0450c74392c3adce708502cd54fa3436c4a79707 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 15:18:38 +0800 Subject: [PATCH 147/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 15 ++++++++---- .../com/ruoyi/platform/utils/DVCUtils.java | 4 +++- .../com/ruoyi/platform/utils/FileUtil.java | 24 +++++++++++++++++++ 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 697ec04f..888c84de 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -596,7 +596,7 @@ public class ModelsServiceImpl implements ModelsService { String rootPath = localPath + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; - String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName+ "/model"; + String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/model"; dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); dvcUtils.moveFiles(sourcePath, modelPath); @@ -673,6 +673,10 @@ public class ModelsServiceImpl implements ModelsService { String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); +// String ci4sUsername = "admin"; +// String gitLinkUsername = "fanshuai"; +// String gitLinkPassword = "h1n2x3j4y5@"; + Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); String repositoryName = modelsVo.getIdentifier() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getIdentifier(); @@ -688,7 +692,6 @@ public class ModelsServiceImpl implements ModelsService { String owner = (String) userInfo.get("login"); String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; - String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); String rootPath = localPath + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; @@ -702,7 +705,11 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); //dvc checkout dvcUtils.dvcCheckout(rootPath); - dvcUtils.moveFiles(sourcePath, modelPath); + + if (modelsVo.getModelVersionVos().size() != 0) { + String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); + dvcUtils.moveFiles(sourcePath, modelPath); + } //拼接生产的元数据后写入yaml文件 ModelMetaVo modelMetaVo = new ModelMetaVo(); @@ -772,7 +779,7 @@ public class ModelsServiceImpl implements ModelsService { // 构建objectName String username = SecurityUtils.getLoginUser().getUsername(); String fileName = file.getOriginalFilename(); - String path = localPath + "/temp/" + username + "/models/" + uuid; + String path = localPath + "temp/" + username + "/models/" + uuid; long sizeInBytes = file.getSize(); String formattedSize = FileUtil.formatFileSize(sizeInBytes); File targetFile = new File(path, file.getOriginalFilename()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 795a2b0a..93d2a9db 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -73,6 +73,8 @@ public class DVCUtils { if (!Files.exists(targetDir)) { Files.createDirectories(targetDir); + } else { + FileUtil.deleteDir(targetPath); } Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); @@ -585,6 +587,6 @@ public class DVCUtils { } catch (Exception e) { log.error("Error occurred while getting file details after git pull", e); } - return null; + return new ArrayList<>(); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index f67cbf0d..d1894e8b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -101,4 +101,28 @@ public class FileUtil { } return fileInfoList; } + + + public static boolean deleteDir(String path){ + File file = new File(path); + if(!file.exists()){//判断是否待删除目录是否存在 + System.err.println("文件夹不存在"); + return false; + } + + String[] content = file.list();//取得当前目录下所有文件和文件夹 + for(String name : content){ + File temp = new File(path, name); + if(temp.isDirectory()){//判断是否是目录 + deleteDir(temp.getAbsolutePath());//递归调用,删除目录里的内容 + temp.delete();//删除空目录 + }else{ + if(!temp.delete()){//直接删除文件 + System.err.println(name+":删除失败!"); + } + } + } + return true; + } + } From cee77d3b9383eabc77767fee64f6523508eea729 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 15:22:45 +0800 Subject: [PATCH 148/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 40aa8810..18f91f0f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -712,7 +712,10 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.dvcCheckout(rootPath); //干掉目标文件夹 dvcUtils.deleteDirectory(modelPath); - dvcUtils.moveFiles(sourcePath, modelPath); + if (modelsVo.getModelVersionVos().size() != 0) { + String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); + dvcUtils.moveFiles(sourcePath, modelPath); + } if (modelsVo.getModelVersionVos().size() != 0) { String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); From 0472fff7c033259a139ed2c3ea24ad7e3aa9ec8f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 15:24:08 +0800 Subject: [PATCH 149/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/DVCUtils.java | 2 -- .../com/ruoyi/platform/utils/FileUtil.java | 23 ------------------- 2 files changed, 25 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index e9445a24..3e45fc32 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -73,8 +73,6 @@ public class DVCUtils { if (!Files.exists(targetDir)) { Files.createDirectories(targetDir); - } else { - FileUtil.deleteDir(targetPath); } Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index d1894e8b..12ff7de3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -102,27 +102,4 @@ public class FileUtil { return fileInfoList; } - - public static boolean deleteDir(String path){ - File file = new File(path); - if(!file.exists()){//判断是否待删除目录是否存在 - System.err.println("文件夹不存在"); - return false; - } - - String[] content = file.list();//取得当前目录下所有文件和文件夹 - for(String name : content){ - File temp = new File(path, name); - if(temp.isDirectory()){//判断是否是目录 - deleteDir(temp.getAbsolutePath());//递归调用,删除目录里的内容 - temp.delete();//删除空目录 - }else{ - if(!temp.delete()){//直接删除文件 - System.err.println(name+":删除失败!"); - } - } - } - return true; - } - } From c54a81d60e80252abd3afa019a6dbde4399ebac6 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 15:32:17 +0800 Subject: [PATCH 150/381] =?UTF-8?q?=E6=94=B9=E6=88=90=E5=BC=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index e948666e..edebbfad 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -537,6 +537,8 @@ public class DVCUtils { fetchCommand.setCredentialsProvider(credentialsProvider).call(); } } + + //强制切换分支 public void gitCheckoutBranch(String localPath, String branchName) throws IOException, GitAPIException { FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(localPath, ".git")) @@ -546,7 +548,7 @@ public class DVCUtils { try (Git git = new Git(repository)) { CheckoutCommand checkoutCommand = git.checkout(); - checkoutCommand.setName(branchName).call(); + checkoutCommand.setName(branchName).setForce(true).call(); } } @@ -599,9 +601,9 @@ public class DVCUtils { runCommand(command, localPath); } - // 更新的 dvcPull 方法 + // 强制刷新 dvcPull 方法 public void dvcPull(String localPath) throws Exception { - String command = "dvc pull -v"; + String command = "dvc pull --force"; runCommand(command, localPath); } From dc370d892301f32c249c71b9d407b2b0d8ffb233 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 15:42:02 +0800 Subject: [PATCH 151/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 18f91f0f..d9763af2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -717,11 +717,6 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.moveFiles(sourcePath, modelPath); } - if (modelsVo.getModelVersionVos().size() != 0) { - String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); - dvcUtils.moveFiles(sourcePath, modelPath); - } - //拼接生产的元数据后写入yaml文件 ModelMetaVo modelMetaVo = new ModelMetaVo(); BeanUtils.copyProperties(modelsVo, modelMetaVo); From afb2928ac7d59b81c01a6abb86a1abbef2d935b9 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 16:42:30 +0800 Subject: [PATCH 152/381] =?UTF-8?q?=E6=94=B9=E6=88=90=E5=BC=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 20350123..c46ef958 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -603,14 +603,14 @@ public class DVCUtils { // 强制刷新 dvcPull 方法 public void dvcPull(String localPath) throws Exception { - String command = "dvc pull --force"; + String command = "dvc pull -v --force"; runCommand(command, localPath); } // 方法 public void dvcCheckout(String localPath) throws Exception { - String command = "dvc checkout"; + String command = "dvc checkout -v --force"; runCommand(command, localPath); } From 6b1c8bb1e79c0cebaddf789ee302782d1c3d8769 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 16:53:38 +0800 Subject: [PATCH 153/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ExperimentServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index fdd0ed95..5e171f51 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -572,6 +572,7 @@ public class ExperimentServiceImpl implements ExperimentService { newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); + //todo newDatasetVo.setowner testDatasets.add(newDatasetVo); } modelMetaVo.setTestDatasets(testDatasets); @@ -596,7 +597,7 @@ public class ExperimentServiceImpl implements ExperimentService { modelMetaVo.setId(Integer.valueOf((String) targetModel.get("model_id"))); modelMetaVo.setIdentifier((String) targetModel.get("model_identifier")); modelMetaVo.setName((String) targetModel.get("model_name")); - modelMetaVo.setVersionDesc((String) targetModel.get("model_version")); + modelMetaVo.setVersion((String) targetModel.get("model_version")); modelMetaVo.setOwner(gitLinkUsername); List versionVos = new ArrayList<>(); From 24745e0e64cebf85f1ec13ed78a70d72cce0c61e Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 20 Sep 2024 18:51:04 +0800 Subject: [PATCH 154/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/constant/Constant.java | 4 ++ .../service/impl/ModelsServiceImpl.java | 11 +++- .../service/impl/NewDatasetServiceImpl.java | 13 ++++- .../com/ruoyi/platform/utils/ConvertUtil.java | 10 ++-- .../com/ruoyi/platform/utils/MinioUtil.java | 56 +++++++++++++++---- 5 files changed, 74 insertions(+), 20 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index caaa5abe..8ac1173d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -20,4 +20,8 @@ public class Constant { public final static String Computing_Resource_GPU = "GPU"; // 计算资源_GPU public final static int Git_Category_Id = 39; + + public final static String Source_Export = "export"; + + public final static String Source_Add = "add"; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index d9763af2..913b02ec 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -712,9 +712,16 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.dvcCheckout(rootPath); //干掉目标文件夹 dvcUtils.deleteDirectory(modelPath); - if (modelsVo.getModelVersionVos().size() != 0) { + if (modelsVo.getModelVersionVos()!= null && modelsVo.getModelVersionVos().size() != 0) { String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); - dvcUtils.moveFiles(sourcePath, modelPath); + + if (Constant.Source_Export.equals(modelsVo.getModelSource())) { + String bucketName = sourcePath.split("/")[0]; + String root_path = sourcePath.split("/")[1]; + minioUtil.downloadFiles(bucketName, root_path, modelPath); + } else { + dvcUtils.moveFiles(sourcePath, modelPath); + } } //拼接生产的元数据后写入yaml文件 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index cd2f20ef..534ff9c0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -71,6 +71,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Resource private DVCUtils dvcUtils; + @Resource + private MinioUtil minioUtil; + @Override public String newCreateDataset(NewDatasetVo datasetVo) throws Exception { String token = gitService.checkoutToken(); @@ -197,7 +200,15 @@ public class NewDatasetServiceImpl implements NewDatasetService { String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); - dvcUtils.moveFiles(sourcePath, datasetPath); + + if (Constant.Source_Export.equals(datasetVo.getDatasetSource())) { + String bucketName = sourcePath.split("/")[0]; + String root_path = sourcePath.split("/")[1]; + minioUtil.downloadFiles(bucketName, root_path, datasetPath); + } else { + dvcUtils.moveFiles(sourcePath, datasetPath); + } + // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index e1b9f62f..14b859e5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -8,10 +8,7 @@ import org.springframework.beans.BeanUtils; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; /** @@ -26,6 +23,7 @@ public class ConvertUtil { /** * 将实体对象转换为VO对象 + * * @param source 源实体对象 * @param target 目标VO对象的类 * @return 转换后的VO对象 @@ -87,7 +85,9 @@ public class ConvertUtil { Object value = entry.getValue(); String camelCaseKey = toCamelCase(key); if (hasProperty(targetClass, camelCaseKey)) { - PropertyUtils.setProperty(targetObject, camelCaseKey, value); + if (!(value instanceof LinkedHashMap)) { + PropertyUtils.setProperty(targetObject, camelCaseKey, value); + } } } return targetObject; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java index bc5b234b..834984df 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java @@ -1,31 +1,38 @@ package com.ruoyi.platform.utils; +import com.ruoyi.common.security.utils.SecurityUtils; import io.minio.*; import io.minio.errors.MinioException; import io.minio.messages.DeleteObject; import io.minio.messages.Item; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.io.*; +import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; + @Slf4j @Component public class MinioUtil { private static MinioClient minioClient; + @Value("${git.localPath}") + String localPath; + @Autowired - public MinioUtil(@Value("${minio.endpoint}")String minioEndpoint,@Value("${minio.accessKey}")String minioAccessKey,@Value("${minio.secretKey}") String minioSecretKey) { + public MinioUtil(@Value("${minio.endpoint}") String minioEndpoint, @Value("${minio.accessKey}") String minioAccessKey, @Value("${minio.secretKey}") String minioSecretKey) { this.minioClient = MinioClient.builder() .endpoint(minioEndpoint) .credentials(minioAccessKey, minioSecretKey) @@ -192,7 +199,7 @@ public class MinioUtil { * @param srcObjectName 目标文件名称 */ public ObjectWriteResponse copyObject(String bucketName, String objectName, - String srcBucketName, String srcObjectName) throws Exception { + String srcBucketName, String srcObjectName) throws Exception { return minioClient.copyObject( CopyObjectArgs.builder() .source(CopySource.builder().bucket(bucketName).object(objectName).build()) @@ -202,14 +209,13 @@ public class MinioUtil { } - /** * 递归拷贝 * - * @param sourceBucketName 源bucket名称 - * @param sourceKeyPrefix 源目录路径 + * @param sourceBucketName 源bucket名称 + * @param sourceKeyPrefix 源目录路径 * @param targetBucketName 目标bucket名称 - * @param targetKeyPrefix 目标目录名称 + * @param targetKeyPrefix 目标目录名称 */ public void copyDirectory(String sourceBucketName, String sourceKeyPrefix, String targetBucketName, String targetKeyPrefix) throws Exception { @@ -238,9 +244,6 @@ public class MinioUtil { } - - - /** * 获取文件流 * @@ -267,6 +270,36 @@ public class MinioUtil { } + public void downloadFiles(String bucketName, String root_path, String targetPath) throws Exception { + ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().bucket(bucketName).prefix(root_path).build(); + findAndSaveFile(listObjectsArgs, bucketName, targetPath); + } + + private void findAndSaveFile(ListObjectsArgs listObjectsArgs, String bucketName, String targetPath) throws Exception { + // List all objects in the bucket + Iterable> results = minioClient.listObjects(listObjectsArgs); + for (Result result : results) { + Item item = result.get(); + if (item.isDir()) { + System.out.println("文件夹:" + URLDecoder.decode(item.objectName(), "UTF-8"));//输出日志 + ListObjectsArgs args = ListObjectsArgs.builder().bucket(bucketName).prefix(item.objectName()).build(); + findAndSaveFile(args, bucketName, targetPath); + } else { + GetObjectArgs getObjectArgs = GetObjectArgs.builder().bucket(bucketName).object(URLDecoder.decode(item.objectName())).build(); + String objectName = URLDecoder.decode(item.objectName(), "UTF-8"); + // Create a local file with the same name as the object + File file = new File(targetPath); + // Create parent directories if needed + file.getParentFile().mkdirs(); + // Get the object as an input stream + try (InputStream stream = minioClient.getObject(getObjectArgs)) { + // Copy the input stream to the file + FileUtils.copyInputStreamToFile(stream, file); + } + System.out.printf("文件:%s 下载成功!\n", URLDecoder.decode(item.objectName()));//输出日志 + } + } + } public List listFilesInDirectory(String bucketName, String prefix) throws Exception { List fileInfoList = new ArrayList<>(); @@ -322,8 +355,6 @@ public class MinioUtil { } - - public String readObjectAsString(String bucketName, String objectName) throws Exception { try (InputStream inputStream = minioClient.getObject( GetObjectArgs.builder() @@ -341,6 +372,7 @@ public class MinioUtil { return content.toString(); } } + /** * Downloads files and folders from the specified bucket and path, and creates a zip archive. * @@ -350,7 +382,7 @@ public class MinioUtil { * @throws MinioException If an error occurs while communicating with Minio. * @throws IOException If an I/O error occurs during zip creation. */ - public InputStream downloadAndZip(String bucketName, String path) throws Exception{ + public InputStream downloadAndZip(String bucketName, String path) throws Exception { try (ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(zipOutputStream)) { From dbf3839b084706f79623b38461a54c391ed635ff Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 09:50:26 +0800 Subject: [PATCH 155/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3bug=E5=B0=9D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/DVCUtils.java | 7 +++--- .../com/ruoyi/platform/utils/FileUtil.java | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index c46ef958..187fd9f1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -83,10 +83,11 @@ public class DVCUtils { // 检查是否目录存在 if (Files.exists(directory)) { + FileUtil.deleteDir(dirPath); // 使用Files.walk来删除目录及其内容 - Files.walk(directory) - .sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹 - .forEach(this::deletePath); +// Files.walk(directory) +// .sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹 +// .forEach(this::deletePath); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index 12ff7de3..d1894e8b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -102,4 +102,27 @@ public class FileUtil { return fileInfoList; } + + public static boolean deleteDir(String path){ + File file = new File(path); + if(!file.exists()){//判断是否待删除目录是否存在 + System.err.println("文件夹不存在"); + return false; + } + + String[] content = file.list();//取得当前目录下所有文件和文件夹 + for(String name : content){ + File temp = new File(path, name); + if(temp.isDirectory()){//判断是否是目录 + deleteDir(temp.getAbsolutePath());//递归调用,删除目录里的内容 + temp.delete();//删除空目录 + }else{ + if(!temp.delete()){//直接删除文件 + System.err.println(name+":删除失败!"); + } + } + } + return true; + } + } From 8a422dba149d7f65af135ab6fd557a55b27d0f59 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 09:58:36 +0800 Subject: [PATCH 156/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3bug=E5=B0=9D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 187fd9f1..a0e87ea5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -71,9 +71,9 @@ public class DVCUtils { Path sourceDir = Paths.get(sourcePath); Path targetDir = Paths.get(targetPath); - if (!Files.exists(targetDir)) { - Files.createDirectories(targetDir); - } +// if (!Files.exists(targetDir)) { +// Files.createDirectories(targetDir); +// } Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); } @@ -88,6 +88,8 @@ public class DVCUtils { // Files.walk(directory) // .sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹 // .forEach(this::deletePath); + } else { + Files.createDirectories(directory); } } From 621e7efa273d5fe6e41a2a10c815bb469913e669 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 10:17:28 +0800 Subject: [PATCH 157/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AFbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/platform/utils/DVCUtils.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index a0e87ea5..7f264f51 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -83,11 +83,12 @@ public class DVCUtils { // 检查是否目录存在 if (Files.exists(directory)) { - FileUtil.deleteDir(dirPath); +// FileUtil.deleteDir(dirPath); // 使用Files.walk来删除目录及其内容 -// Files.walk(directory) -// .sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹 -// .forEach(this::deletePath); + Files.walk(directory) + .filter(path -> !path.equals(directory)) + .sorted(Comparator.reverseOrder()) // 先删除子文件夹,再删除父文件夹 + .forEach(this::deletePath); } else { Files.createDirectories(directory); } @@ -95,7 +96,7 @@ public class DVCUtils { private void deletePath(Path path) { try { - Files.delete(path); + Files.deleteIfExists(path); } catch (IOException e) { log.error("Unable to delete: " + path + " " + e.getMessage()); } From a53cefdaba519967ff962b2ca9bddd73bcdc6748 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 10:23:49 +0800 Subject: [PATCH 158/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=88=86=E6=94=AFbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/DVCUtils.java | 1 - .../com/ruoyi/platform/utils/FileUtil.java | 23 ------------------- 2 files changed, 24 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 7f264f51..730b5f5a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -83,7 +83,6 @@ public class DVCUtils { // 检查是否目录存在 if (Files.exists(directory)) { -// FileUtil.deleteDir(dirPath); // 使用Files.walk来删除目录及其内容 Files.walk(directory) .filter(path -> !path.equals(directory)) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index d1894e8b..12ff7de3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -102,27 +102,4 @@ public class FileUtil { return fileInfoList; } - - public static boolean deleteDir(String path){ - File file = new File(path); - if(!file.exists()){//判断是否待删除目录是否存在 - System.err.println("文件夹不存在"); - return false; - } - - String[] content = file.list();//取得当前目录下所有文件和文件夹 - for(String name : content){ - File temp = new File(path, name); - if(temp.isDirectory()){//判断是否是目录 - deleteDir(temp.getAbsolutePath());//递归调用,删除目录里的内容 - temp.delete();//删除空目录 - }else{ - if(!temp.delete()){//直接删除文件 - System.err.println(name+":删除失败!"); - } - } - } - return true; - } - } From 09302706d5eb3db27a59ea61df2fea4d163dcfaf Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 11:38:21 +0800 Subject: [PATCH 159/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=AF=BC=E5=87=BAbug=E5=B0=9D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/MinioUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java index 834984df..7bd5951b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java @@ -288,7 +288,9 @@ public class MinioUtil { GetObjectArgs getObjectArgs = GetObjectArgs.builder().bucket(bucketName).object(URLDecoder.decode(item.objectName())).build(); String objectName = URLDecoder.decode(item.objectName(), "UTF-8"); // Create a local file with the same name as the object - File file = new File(targetPath); + Path fileName = Paths.get(objectName).getFileName(); + String targetFile = targetPath + "/" + fileName.toString(); + File file = new File(targetFile); // Create parent directories if needed file.getParentFile().mkdirs(); // Get the object as an input stream From 8a29722c2cd8faa37380d74975831d4b38a2ad8f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 15:28:03 +0800 Subject: [PATCH 160/381] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=97=B6=E4=BF=9D=E5=AD=98=E5=8F=82=E6=95=B0=E5=92=8C=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E4=B8=BAyaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ModelsServiceImpl.java | 13 ++++++++----- .../java/com/ruoyi/platform/utils/YamlUtils.java | 8 ++++++-- .../java/com/ruoyi/platform/vo/ModelMetaVo.java | 4 ++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 913b02ec..7f94f7ca 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -675,10 +675,6 @@ public class ModelsServiceImpl implements ModelsService { String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); -// String ci4sUsername = "admin"; -// String gitLinkUsername = "fanshuai"; -// String gitLinkPassword = "h1n2x3j4y5@"; - Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); String repositoryName = modelsVo.getIdentifier() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getIdentifier(); @@ -712,7 +708,7 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.dvcCheckout(rootPath); //干掉目标文件夹 dvcUtils.deleteDirectory(modelPath); - if (modelsVo.getModelVersionVos()!= null && modelsVo.getModelVersionVos().size() != 0) { + if (modelsVo.getModelVersionVos() != null && modelsVo.getModelVersionVos().size() != 0) { String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); if (Constant.Source_Export.equals(modelsVo.getModelSource())) { @@ -750,6 +746,13 @@ public class ModelsServiceImpl implements ModelsService { YamlUtils.generateYamlFile(metaMap, metaPath, "metadata"); String meta = JSON.toJSONString(modelMetaVo); + //保存指标 + Map metrics = modelMetaVo.getMetrics(); + YamlUtils.generateYamlFile(metrics, rootPath, "metrics"); + //保存参数 + Map params = modelMetaVo.getParams(); + YamlUtils.generateYamlFile(params, rootPath, "params"); + //保存模型依赖 modelDependency.setRepoId(modelsVo.getId()); modelDependency.setIdentifier(repositoryName); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index f54238de..06973e15 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -1,8 +1,10 @@ package com.ruoyi.platform.utils; +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import java.io.*; +import java.util.Iterator; import java.util.Map; public class YamlUtils { @@ -15,8 +17,10 @@ public class YamlUtils { * @param fileName 文件名 */ public static void generateYamlFile(Map data, String path, String fileName) { - Yaml yaml = new Yaml(); - + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setPrettyFlow(true); + Yaml yaml = new Yaml(options); File directory = new File(path); if (!directory.exists()) { boolean isCreated = directory.mkdirs(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java index 589255f7..cbfdf760 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -54,10 +54,10 @@ public class ModelMetaVo implements Serializable { private List testDatasets; @ApiModelProperty(value = "参数") - private HashMap params; + private HashMap params; @ApiModelProperty(value = "指标") - private HashMap metrics; + private HashMap metrics; @ApiModelProperty(value = "训练任务") private TrainTaskDepency trainTask; From 529e77243684cb4b9e0813f42f50d5b059981f91 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 16:28:23 +0800 Subject: [PATCH 161/381] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E6=97=B6=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E5=B1=9E=E4=BA=8E?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=B8=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/mapper/ModelDependency1Dao.java | 4 +++ .../service/impl/ExperimentServiceImpl.java | 11 +++++--- .../service/impl/ModelsServiceImpl.java | 25 +++++++++++-------- .../ModelDependency1DaoMapper.xml | 18 +++++++++++++ 4 files changed, 45 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java index 22c4559e..c7367379 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java @@ -9,8 +9,12 @@ public interface ModelDependency1Dao { int insert(ModelDependency1 modelDependency1); + int updateState(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("version") String version, @Param("state") Integer state); + List queryModelDependency(@Param("modelName") String modelName, @Param("repoId") Integer repoId, @Param("owner") String owner); + ModelDependency1 getBuildingModel(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("version") String version); + ModelDependency1 queryByRepoAndVersion(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("version") String version); List queryByParentModel(@Param("parentModel") String parentModel); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 5e171f51..293a4e10 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.service.impl; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.annotations.CheckDuplicate; +import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.*; import com.ruoyi.platform.domain.dependencydomain.ProjectDepency; import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; @@ -599,6 +600,7 @@ public class ExperimentServiceImpl implements ExperimentService { modelMetaVo.setName((String) targetModel.get("model_name")); modelMetaVo.setVersion((String) targetModel.get("model_version")); modelMetaVo.setOwner(gitLinkUsername); + modelDependency.setModelName((String) targetModel.get("model_name")); List versionVos = new ArrayList<>(); for (Map outputFile : outputList) { @@ -615,17 +617,20 @@ public class ExperimentServiceImpl implements ExperimentService { } modelMetaVo.setModelVersionVos(versionVos); } - modelsService.newCreateVersion(modelMetaVo); + String meta = JSON.toJSONString(modelMetaVo); + modelDependency.setMeta(meta); + modelDependency.setOwner(gitLinkUsername); + modelDependency.setState(Constant.State_building); + modelDependency1Dao.insert(modelDependency); } } else { String meta = JSON.toJSONString(modelMetaVo); modelDependency.setMeta(meta); modelDependency.setOwner(gitLinkUsername); + modelDependency.setState(Constant.State_building); modelDependency1Dao.insert(modelDependency); } - } - } /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 7f94f7ca..95dc35c2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -684,7 +684,6 @@ public class ModelsServiceImpl implements ModelsService { if (oldModelDependencys.stream().anyMatch(oldModelDependency -> oldModelDependency.getVersion().equals(modelsVo.getVersion()))) { throw new RuntimeException("模型版本已存在,请勿重复创建"); } - //新建版本 String branchName = modelsVo.getVersion(); String owner = (String) userInfo.get("login"); @@ -753,15 +752,21 @@ public class ModelsServiceImpl implements ModelsService { Map params = modelMetaVo.getParams(); YamlUtils.generateYamlFile(params, rootPath, "params"); - //保存模型依赖 - modelDependency.setRepoId(modelsVo.getId()); - modelDependency.setIdentifier(repositoryName); - modelDependency.setModelName(modelsVo.getName()); - modelDependency.setVersion(modelsVo.getVersion()); - modelDependency.setParentModel(modelsVo.getParentModel()); - modelDependency.setOwner(gitLinkUsername); - modelDependency.setMeta(meta); - modelDependency1Dao.insert(modelDependency); + ModelDependency1 buildingModel = modelDependency1Dao.getBuildingModel(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion()); + if (buildingModel != null) { + //更新模型依赖 + modelDependency1Dao.updateState(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion(), Constant.State_valid); + } else { + //保存模型依赖 + modelDependency.setRepoId(modelsVo.getId()); + modelDependency.setIdentifier(repositoryName); + modelDependency.setModelName(modelsVo.getName()); + modelDependency.setVersion(modelsVo.getVersion()); + modelDependency.setParentModel(modelsVo.getParentModel()); + modelDependency.setOwner(gitLinkUsername); + modelDependency.setMeta(meta); + modelDependency1Dao.insert(modelDependency); + } // 配置远程S3地址 String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 8c68ca2d..031a2d73 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -40,6 +40,15 @@ and state = 1 + + update model_dependency1 set state = 0 @@ -54,4 +63,13 @@ set parent_model = null where JSON_CONTAINS(parent_model, #{parentModel}) + + + update model_dependency1 + set state = 1 + where repo_id = #{repoId} + and identifier = #{identifier} + and version = #{version} + and state = 2 + \ No newline at end of file From 08c51b4f3eb44fd613b080ac00b3c60336a68447 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 16:33:46 +0800 Subject: [PATCH 162/381] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E6=97=B6=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E5=B1=9E=E4=BA=8E?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=B8=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/constant/Constant.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index 8ac1173d..202854e8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -11,6 +11,8 @@ public class Constant { public final static int State_valid = 1; // 有效 public final static int State_invalid = 0; // 无效 + public final static int State_building = 2; //创建中 + public final static int Used_State_used = 1; // 已占用 public final static int Used_State_unused = 0; // 未占用 From 81cec5ea5aba2d1515ab4dae144c3a50d05d5b80 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 23 Sep 2024 16:48:08 +0800 Subject: [PATCH 163/381] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E6=97=B6=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E5=B1=9E=E4=BA=8E?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=B8=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 4 ++++ .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 6 +++++- .../mapper/managementPlatform/ModelDependency1DaoMapper.xml | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 293a4e10..27d34ae0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -600,6 +600,10 @@ public class ExperimentServiceImpl implements ExperimentService { modelMetaVo.setName((String) targetModel.get("model_name")); modelMetaVo.setVersion((String) targetModel.get("model_version")); modelMetaVo.setOwner(gitLinkUsername); + + modelDependency.setRepoId(Integer.valueOf((String) targetModel.get("model_id"))); + modelDependency.setIdentifier((String) targetModel.get("model_identifier")); + modelDependency.setVersion((String) targetModel.get("model_version")); modelDependency.setModelName((String) targetModel.get("model_name")); List versionVos = new ArrayList<>(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 95dc35c2..07d1d97a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -636,6 +636,7 @@ public class ModelsServiceImpl implements ModelsService { modelDependency.setParentModel(modelsVo.getParentModel()); modelDependency.setOwner(gitLinkUsername); modelDependency.setMeta(meta); + modelDependency.setState(Constant.State_valid); modelDependency1Dao.insert(modelDependency); CompletableFuture.supplyAsync(() -> { @@ -719,6 +720,9 @@ public class ModelsServiceImpl implements ModelsService { } } + ModelDependency1 buildingModel = modelDependency1Dao.getBuildingModel(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion()); + ModelMetaVo modelMetaVo1 = JSON.parseObject(buildingModel.getMeta(), ModelMetaVo.class); + //拼接生产的元数据后写入yaml文件 ModelMetaVo modelMetaVo = new ModelMetaVo(); BeanUtils.copyProperties(modelsVo, modelMetaVo); @@ -752,7 +756,6 @@ public class ModelsServiceImpl implements ModelsService { Map params = modelMetaVo.getParams(); YamlUtils.generateYamlFile(params, rootPath, "params"); - ModelDependency1 buildingModel = modelDependency1Dao.getBuildingModel(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion()); if (buildingModel != null) { //更新模型依赖 modelDependency1Dao.updateState(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion(), Constant.State_valid); @@ -765,6 +768,7 @@ public class ModelsServiceImpl implements ModelsService { modelDependency.setParentModel(modelsVo.getParentModel()); modelDependency.setOwner(gitLinkUsername); modelDependency.setMeta(meta); + modelDependency.setState(Constant.State_valid); modelDependency1Dao.insert(modelDependency); } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 031a2d73..69b6e8b8 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -4,8 +4,8 @@ - insert into model_dependency1(parent_model, model_name, version, repo_id, identifier, owner, meta) - values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{identifier}, #{owner}, #{meta}) + insert into model_dependency1(parent_model, model_name, version, repo_id, identifier, owner, meta, state) + values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{identifier}, #{owner}, #{meta}, #{state}) + + update model_dependency1 set state = 0 From 83c289713f13fcb9e05d6b1e9e88ef4eca953d69 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 25 Sep 2024 09:25:47 +0800 Subject: [PATCH 178/381] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E8=BF=94=E5=9B=9E=E5=AE=9E=E9=AA=8C=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/domain/ExperimentIns.java | 28 +++++++++++++++---- .../ExperimentInsDaoMapper.xml | 27 ++++++++++++++++-- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java index dd3dc2bf..31246fd9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; @@ -74,10 +75,11 @@ public class ExperimentIns implements Serializable { private Integer state; - @ApiModelProperty(value = "实验实例对应的流水线ID") private Long workflowId; + @TableField(exist = false) + private String experimentName; public ExperimentIns() { } @@ -160,13 +162,17 @@ public class ExperimentIns implements Serializable { this.startTime = startTime; } - public Date getStartTime() {return startTime;} + public Date getStartTime() { + return startTime; + } public void setFinishTime(Date finishTime) { this.finishTime = finishTime; } - public Date getFinishTime() {return finishTime;} + public Date getFinishTime() { + return finishTime; + } public String getCreateBy() { @@ -209,9 +215,13 @@ public class ExperimentIns implements Serializable { this.state = state; } - public Long getWorkflowId() {return workflowId;} + public Long getWorkflowId() { + return workflowId; + } - public void setWorkflowId(Long workflowId) {this.workflowId = workflowId;} + public void setWorkflowId(Long workflowId) { + this.workflowId = workflowId; + } public String getMetricRecord() { return metricRecord; @@ -220,5 +230,13 @@ public class ExperimentIns implements Serializable { public void setMetricRecord(String metricRecord) { this.metricRecord = metricRecord; } + + public String getExperimentName() { + return experimentName; + } + + public void setExperimentName(String experimentName) { + this.experimentName = experimentName; + } } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index d33201f6..39d12aaa 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -20,6 +20,7 @@ + @@ -32,9 +33,29 @@ From 3f52c62de7fdbfb32f4be9e3b22641b9ceb57804 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 25 Sep 2024 10:19:33 +0800 Subject: [PATCH 179/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 34300b5d..aeb921db 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -727,7 +727,8 @@ public class ModelsServiceImpl implements ModelsService { String root_path = sourcePath.split("/")[1]; minioUtil.downloadFiles(bucketName, root_path, modelPath); - buildingModel = modelDependency1Dao.queryByTrainTask(JSON.toJSONString(modelsVo.getTrainTask())); + BeansUtils.copyPropertiesIgnoreNull(modelsVo, modelMetaVo); + buildingModel = modelDependency1Dao.queryByTrainTask(JSON.toJSONString(modelMetaVo)); } else { dvcUtils.moveFiles(sourcePath, modelPath); From 751b85b3ee61231c6f1170a3e93a9491520ff380 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 25 Sep 2024 10:27:33 +0800 Subject: [PATCH 180/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index aeb921db..193651e7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -11,6 +11,7 @@ import com.ruoyi.platform.domain.AssetIcon; import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.mapper.ModelsDao; import com.ruoyi.platform.mapper.ModelsVersionDao; @@ -727,8 +728,10 @@ public class ModelsServiceImpl implements ModelsService { String root_path = sourcePath.split("/")[1]; minioUtil.downloadFiles(bucketName, root_path, modelPath); - BeansUtils.copyPropertiesIgnoreNull(modelsVo, modelMetaVo); - buildingModel = modelDependency1Dao.queryByTrainTask(JSON.toJSONString(modelMetaVo)); + HashMap map = new HashMap<>(); + map.put("trainTask", modelsVo.getTrainTask()); + String t1 = JSON.toJSONString(map); + buildingModel = modelDependency1Dao.queryByTrainTask(t1); } else { dvcUtils.moveFiles(sourcePath, modelPath); From 317f9ad3d2a37efb0dc3ab8b8229f6426c33cc43 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 25 Sep 2024 10:42:55 +0800 Subject: [PATCH 181/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 193651e7..f3d631aa 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -730,8 +730,7 @@ public class ModelsServiceImpl implements ModelsService { HashMap map = new HashMap<>(); map.put("trainTask", modelsVo.getTrainTask()); - String t1 = JSON.toJSONString(map); - buildingModel = modelDependency1Dao.queryByTrainTask(t1); + buildingModel = modelDependency1Dao.queryByTrainTask(JSON.toJSONString(map)); } else { dvcUtils.moveFiles(sourcePath, modelPath); @@ -778,8 +777,20 @@ public class ModelsServiceImpl implements ModelsService { YamlUtils.generateYamlFile(params, rootPath, "params"); if (buildingModel != null) { - //更新模型依赖 - modelDependency1Dao.updateState(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion(), Constant.State_valid); + if (Constant.Source_Hand_Export.equals(modelsVo.getModelSource())) { + //保存模型依赖 + BeansUtils.copyPropertiesIgnoreNull(buildingModel, modelDependency); + modelDependency.setState(Constant.State_valid); + modelDependency.setModelName(modelsVo.getName()); + modelDependency.setVersion(modelsVo.getVersion()); + modelDependency.setRepoId(modelsVo.getId()); + modelDependency.setIdentifier(repositoryName); + modelDependency.setMeta(meta); + modelDependency1Dao.insert(modelDependency); + } else { + //更新模型依赖 + modelDependency1Dao.updateState(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion(), Constant.State_valid); + } } else { //保存模型依赖 modelDependency.setRepoId(modelsVo.getId()); From 63b01b0ef7ed94728ec9cc809a75afd484985775 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 25 Sep 2024 11:05:41 +0800 Subject: [PATCH 182/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index f3d631aa..7b51ee35 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -725,7 +725,7 @@ public class ModelsServiceImpl implements ModelsService { if (Constant.Source_Hand_Export.equals(modelsVo.getModelSource())) { String bucketName = sourcePath.split("/")[0]; - String root_path = sourcePath.split("/")[1]; + String root_path = sourcePath.substring(bucketName.length() + 1); minioUtil.downloadFiles(bucketName, root_path, modelPath); HashMap map = new HashMap<>(); From 8392a62979fe549f56f6402cbb7ed817091c6057 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 08:34:33 +0800 Subject: [PATCH 183/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/service/ServiceController.java | 87 ++++++++++++ .../com/ruoyi/platform/domain/Service.java | 36 +++++ .../ruoyi/platform/domain/ServiceVersion.java | 48 +++++++ .../com/ruoyi/platform/mapper/ServiceDao.java | 32 +++++ .../platform/service/ServiceService.java | 30 ++++ .../service/impl/ServiceServiceImpl.java | 117 +++++++++++++++ .../ruoyi/platform/utils/K8sClientUtil.java | 113 ++++++++++++--- .../managementPlatform/ServiceDaoMapper.xml | 134 ++++++++++++++++++ 8 files changed, 579 insertions(+), 18 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java create mode 100644 ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java new file mode 100644 index 00000000..c5df3ec9 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -0,0 +1,87 @@ +package com.ruoyi.platform.controller.service; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; +import com.ruoyi.platform.domain.Service; +import com.ruoyi.platform.domain.ServiceVersion; +import com.ruoyi.platform.service.ServiceService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.IOException; + +@RestController +@RequestMapping("service") +@Api("服务") +public class ServiceController extends BaseController { + @Resource + private ServiceService serviceService; + + + @GetMapping + @ApiOperation("分页查询服务列表") + public GenericsAjaxResult> queryByPageService(Service service, int page, int size) throws IOException { + PageRequest pageRequest = PageRequest.of(page, size); + return genericsSuccess(serviceService.queryByPageService(service, pageRequest)); + } + + @GetMapping("/serviceVersion") + @ApiOperation("分页查询服务版本列表") + public GenericsAjaxResult> queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) throws IOException { + PageRequest pageRequest = PageRequest.of(page, size); + return genericsSuccess(serviceService.queryByPageServiceVersion(serviceVersion, pageRequest)); + } + + @PostMapping + @ApiOperation("新增服务") + public GenericsAjaxResult addService(@RequestBody Service service) { + return genericsSuccess(serviceService.addService(service)); + } + + @PostMapping("/serviceVersion") + @ApiOperation("新增服务版本") + public GenericsAjaxResult addServiceVersion(@RequestBody ServiceVersion serviceVersion) { + return genericsSuccess(serviceService.addServiceVersion(serviceVersion)); + } + + @PutMapping + @ApiOperation("编辑服务") + public GenericsAjaxResult editService(@RequestBody Service service) { + return genericsSuccess(serviceService.editService(service)); + } + + @PutMapping("/serviceVersion") + @ApiOperation("编辑服务版本") + public GenericsAjaxResult editServiceVersion(@RequestBody ServiceVersion serviceVersion) { + return genericsSuccess(serviceService.editServiceVersion(serviceVersion)); + } + + @GetMapping("/serviceVersionDetail/{id}") + @ApiOperation("查询服务版本详细信息") + public GenericsAjaxResult getServiceVersion(@PathVariable("id") Long id) { + return genericsSuccess(serviceService.getServiceVersion(id)); + } + + @DeleteMapping("{id}") + @ApiOperation("删除服务") + public GenericsAjaxResult deleteService(@PathVariable("id") Long id){ + return genericsSuccess(serviceService.deleteService(id)); + } + + @DeleteMapping("/serviceVersion/{id}") + @ApiOperation("删除服务版本") + public GenericsAjaxResult deleteServiceVersion(@PathVariable("id") Long id){ + return genericsSuccess(serviceService.deleteServiceVersion(id)); + } + + @GetMapping("/runServiceVersion/{id}") + @ApiOperation("启动服务版本") + public GenericsAjaxResult runServiceVersion(@PathVariable("id") Long id){ + serviceService.runServiceVersion(id); + return genericsSuccess(""); + } +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java new file mode 100644 index 00000000..6c7168ce --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java @@ -0,0 +1,36 @@ +package com.ruoyi.platform.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("服务") +@Data +public class Service implements Serializable { + private Long id; + + private String serviceName; + + private Integer serviceType; + + private String description; + + private String createBy; + + private String updateBy; + + private Date createTime; + + private Date updateTime; + + private Integer state; + + @TableField(exist = false) + private Integer versionCount; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java new file mode 100644 index 00000000..ed998779 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java @@ -0,0 +1,48 @@ +package com.ruoyi.platform.domain; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("服务") +@Data +public class ServiceVersion implements Serializable { + private Long id; + + private Long serviceId; + + private String version; + + private String model; + + private String image; + + private String resource; + + private Integer replicas; + + private String mountPath; + + private String envVariables; + + private String codeConfig; + + private String command; + + private String url; + + private String createBy; + + private String updateBy; + + private Date createTime; + + private Date updateTime; + + private Integer state; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java new file mode 100644 index 00000000..dfaa4e37 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java @@ -0,0 +1,32 @@ +package com.ruoyi.platform.mapper; + +import com.ruoyi.platform.domain.Service; +import com.ruoyi.platform.domain.ServiceVersion; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public interface ServiceDao { + + long countService(@Param("service") com.ruoyi.platform.domain.Service service); + + long countServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion); + + List queryByPageService(@Param("service") com.ruoyi.platform.domain.Service service, @Param("pageable") Pageable pageable); + + List queryByPageServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion, @Param("pageable") Pageable pageable); + + int insertService(@Param("service") com.ruoyi.platform.domain.Service service); + + int insertServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion); + + int updateService(@Param("service") Service service); + + int updateServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion); + + Service getServiceById(Long id); + + ServiceVersion getServiceVersionById(Long id); + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java new file mode 100644 index 00000000..1129e698 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -0,0 +1,30 @@ +package com.ruoyi.platform.service; + +import com.ruoyi.platform.domain.Service; +import com.ruoyi.platform.domain.ServiceVersion; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; + +import java.io.IOException; + +public interface ServiceService { + Page queryByPageService(Service service, PageRequest pageRequest) throws IOException; + + Page queryByPageServiceVersion(ServiceVersion serviceVersion, PageRequest pageRequest) throws IOException; + + Service addService(Service service); + + ServiceVersion addServiceVersion(ServiceVersion serviceVersion); + + Service editService(Service service); + + ServiceVersion editServiceVersion(ServiceVersion serviceVersion); + + ServiceVersion getServiceVersion(Long id); + + String deleteService(Long id); + + String deleteServiceVersion(Long id); + + void runServiceVersion(Long id); +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java new file mode 100644 index 00000000..21b7d9aa --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -0,0 +1,117 @@ +package com.ruoyi.platform.service.impl; + +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.constant.Constant; +import com.ruoyi.platform.domain.ServiceVersion; +import com.ruoyi.platform.mapper.ServiceDao; +import com.ruoyi.platform.service.ServiceService; +import com.ruoyi.system.api.model.LoginUser; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +@Service("serviceService") +public class ServiceServiceImpl implements ServiceService { + + @Resource + private ServiceDao serviceDao; + + @Override + public Page queryByPageService(com.ruoyi.platform.domain.Service service, PageRequest pageRequest) throws IOException { + long total = serviceDao.countService(service); + List services = serviceDao.queryByPageService(service, pageRequest); + return new PageImpl<>(services, pageRequest, total); + } + + @Override + public Page queryByPageServiceVersion(ServiceVersion serviceVersion, PageRequest pageRequest) throws IOException { + long total = serviceDao.countServiceVersion(serviceVersion); + List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); + return new PageImpl<>(serviceVersions, pageRequest, total); + } + + @Override + public com.ruoyi.platform.domain.Service addService(com.ruoyi.platform.domain.Service service) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + service.setCreateBy(loginUser.getUsername()); + service.setUpdateBy(loginUser.getUsername()); + serviceDao.insertService(service); + return service; + } + + @Override + public ServiceVersion addServiceVersion(ServiceVersion serviceVersion) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + serviceVersion.setCreateBy(loginUser.getUsername()); + serviceVersion.setUpdateBy(loginUser.getUsername()); + serviceDao.insertServiceVersion(serviceVersion); + return serviceVersion; + } + + @Override + public com.ruoyi.platform.domain.Service editService(com.ruoyi.platform.domain.Service service) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + service.setUpdateBy(loginUser.getUsername()); + serviceDao.updateService(service); + return serviceDao.getServiceById(service.getId()); + } + + @Override + public ServiceVersion editServiceVersion(ServiceVersion serviceVersion) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + serviceVersion.setUpdateBy(loginUser.getUsername()); + serviceDao.updateServiceVersion(serviceVersion); + return serviceDao.getServiceVersionById(serviceVersion.getId()); + } + + @Override + public ServiceVersion getServiceVersion(Long id) { + return serviceDao.getServiceVersionById(id); + } + + @Override + public String deleteService(Long id) { + com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(id); + if (service == null) { + return "服务不存在"; + } + + LoginUser loginUser = SecurityUtils.getLoginUser(); + String username = loginUser.getUsername(); + String createBy = service.getCreateBy(); + if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createBy))) { + return "无权限删除该服务"; + } + + ServiceVersion serviceVersion = new ServiceVersion(); + serviceVersion.setServiceId(id); + long versionCount = serviceDao.countServiceVersion(serviceVersion); + if (versionCount != 0) { + return "该服务下还有版本,不能删除"; + } + + service.setState(Constant.State_invalid); + return serviceDao.updateService(service) > 0 ? "删除成功" : "删除失败"; + } + + @Override + public String deleteServiceVersion(Long id) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + serviceVersion.setState(Constant.State_invalid); + return serviceDao.updateServiceVersion(serviceVersion) > 0 ? "删除成功" : "删除失败"; + } + + @Override + public void runServiceVersion(Long id) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + + + + } +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 49d56853..6b2f06b9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.utils; +import com.alibaba.fastjson2.JSON; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.DevEnvironment; import com.ruoyi.platform.mapper.ComputingResourceDao; @@ -8,6 +9,7 @@ import io.kubernetes.client.custom.IntOrString; import io.kubernetes.client.custom.Quantity; import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.ApiException; +import io.kubernetes.client.openapi.apis.AppsV1Api; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.*; import io.kubernetes.client.util.ClientBuilder; @@ -471,24 +473,7 @@ public class K8sClientUtil { //配置资源 - JSONObject standardJson = new JSONObject(devEnvironment.getStandard()); - JSONObject valueJson = (JSONObject) standardJson.get("value"); - int cpu = (int) valueJson.get("cpu"); - String memory = (String) valueJson.get("memory"); - memory = memory.substring(0, memory.length() - 1).concat("i"); - int gpu = (int) valueJson.get("gpu"); - - HashMap limitMap = new HashMap<>(); - if (Constant.Computing_Resource_GPU.equals(devEnvironment.getComputingResource())) { - limitMap.put("nvidia.com/gpu", new Quantity(String.valueOf(gpu))); - } - limitMap.put("cpu", new Quantity(String.valueOf(cpu))); - limitMap.put("memory", new Quantity(memory)); - limitMap.put("ephemeral-storage", new Quantity("100Gi")); - - V1ResourceRequirements v1ResourceRequirements = new V1ResourceRequirements(); - v1ResourceRequirements.setRequests(limitMap); - v1ResourceRequirements.setLimits(limitMap); + V1ResourceRequirements v1ResourceRequirements = setPodResource(devEnvironment.getStandard()); V1Pod pod = new V1PodBuilder() .withNewMetadata() @@ -674,6 +659,98 @@ public class K8sClientUtil { return pod; } + + public Integer createDeployment(String dpName, String namespace, Integer replicas, String model, String image, Integer port, String resource, String mountPath + , String envVariables, String codeConfig) { + AppsV1Api api = new AppsV1Api(apiClient); + + //配置标签选择 + HashMap selector = new HashMap<>(); + selector.put("app", dpName); + + //配置资源 + V1ResourceRequirements v1ResourceRequirements = setPodResource(resource); + + //配置环境变量 + List env = new ArrayList<>(); + if (StringUtils.isNotEmpty(envVariables)) { + HashMap envMap = JSON.parseObject(envVariables, HashMap.class); + for (String key : envMap.keySet()) { + V1EnvVar envVar = new V1EnvVar().name(key).value(envMap.get(key)); + env.add(envVar); + } + } + + // 配置卷和卷挂载 +// List volumeMounts = new ArrayList<>(); +// volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); +// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/code").subPath(codeConfig).readOnly(true)); +// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(model).readOnly(true)); +// +// List volumes = new ArrayList<>(); +// volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); +// volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); + + + //创建deployment + V1Deployment deployment = new V1DeploymentBuilder().withNewMetadata() + .withName(dpName) + .endMetadata() + .withNewSpec() + .withReplicas(replicas) + .withSelector(new V1LabelSelector().matchLabels(selector)) + .withNewTemplate() + .withNewMetadata() + .addToLabels("app", dpName) + .endMetadata() + .withNewSpec() + .addNewContainer() + .withName(dpName) + .withImage(image) + .withEnv(env) + .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) + .withResources(v1ResourceRequirements) + .endContainer() + .endSpec() + .endTemplate() + .endSpec() + .build(); + + try { + api.createNamespacedDeployment(namespace, deployment, null, null, null); + } catch (ApiException e) { + throw new RuntimeException("创建deployment异常:" + e.getResponseBody()); + } + + V1Service service = createService(namespace, dpName + "-svc", port, selector); + return service.getSpec().getPorts().get(0).getNodePort(); + } + + + V1ResourceRequirements setPodResource(String resource) { + //配置pod资源 + JSONObject standardJson = new JSONObject(resource); + JSONObject valueJson = (JSONObject) standardJson.get("value"); + int cpu = (int) valueJson.get("cpu"); + String memory = (String) valueJson.get("memory"); + memory = memory.substring(0, memory.length() - 1).concat("i"); + Integer gpu = (Integer) valueJson.get("gpu"); + + HashMap limitMap = new HashMap<>(); + if (gpu != null && gpu != 0) { + limitMap.put("nvidia.com/gpu", new Quantity(String.valueOf(gpu))); + } + limitMap.put("cpu", new Quantity(String.valueOf(cpu))); + limitMap.put("memory", new Quantity(memory)); + limitMap.put("ephemeral-storage", new Quantity("100Gi")); + + V1ResourceRequirements v1ResourceRequirements = new V1ResourceRequirements(); + v1ResourceRequirements.setRequests(limitMap); + v1ResourceRequirements.setLimits(limitMap); + + return v1ResourceRequirements; + } + /** * 删除 Pod * diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml new file mode 100644 index 00000000..656b3384 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + select * from service_version + + state = 1 + + and version like concat('%', #{serviceVersion.version}, '%') + + + and service_id = #{serviceVersion.serviceId} + + + order by update_time DESC + + + + + + + + insert into service(service_name, service_type, description, create_by, update_by) + values (#{serviceName}, #{serviceType}, #{description}, #{createBy}, #{updateBy}) + + + + insert into service_version(service_id, version, model, image, resouce, replicas, mount_path, env_variables, + code_config, command, create_by, update_by) + values (#{serviceId}, #{version}, #{model}, #{image}, #{replicas}, #{mountPath}, #{envVariables}, + #{codeConfig}, #{command}, #{createBy}, #{updateBy}) + + + + update service + + + service_name = #{service.serviceName} + + + service_type = #{service.serviceType} + + + description = #{service.description} + + + state = #{service.state} + + + where id = #{service.id} + + + + update service_version + + + model = #{serviceVersion.model}, + + + image = #{serviceVersion.image}, + + + resouce = #{serviceVersion.resouce}, + + + replicas = #{serviceVersion.replicas}, + + + mount_path = #{serviceVersion.mountPath}, + + + env_variables = #{serviceVersion.envVariables}, + + + code_config = #{serviceVersion.codeConfig}, + + + command = #{serviceVersion.command}, + + + url = #{serviceVersion.url}, + + + where id = #{serviceVersion.id} + + \ No newline at end of file From ef92f42831c296c6093a45ba15347449ea0c7aa7 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 09:11:28 +0800 Subject: [PATCH 184/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 14 -------------- .../java/com/ruoyi/platform/utils/YamlUtils.java | 1 + 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 06efa978..426c3de4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -26,9 +26,6 @@ public class NewModelFromGitController { @Resource private ModelsService modelsService; - @Resource - private DVCUtils dvcUtils; - @PostMapping("/addModel") @ApiOperation("添加模型") public AjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) throws Exception { @@ -119,15 +116,4 @@ public class NewModelFromGitController { return AjaxResult.success(); } -// @GetMapping("/test") -// public AjaxResult test() { -// try { -// dvcUtils.gitPush("E:\\test\\admin\\model\\1451938\\object-model", "fanshuai", "h1n2x3j4y5@"); -// } catch (IOException e) { -// throw new RuntimeException(e); -// } catch (GitAPIException e) { -// throw new RuntimeException(e); -// } -// return AjaxResult.success(); -// } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 06973e15..00f407a7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -19,6 +19,7 @@ public class YamlUtils { public static void generateYamlFile(Map data, String path, String fileName) { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); options.setPrettyFlow(true); Yaml yaml = new Yaml(options); File directory = new File(path); From 772e73963b3b15e3d1bb83e7c186719d59de1ecc Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 09:38:29 +0800 Subject: [PATCH 185/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/YamlUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 00f407a7..b29585db 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -20,7 +20,7 @@ public class YamlUtils { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - options.setPrettyFlow(true); +// options.setPrettyFlow(true); Yaml yaml = new Yaml(options); File directory = new File(path); if (!directory.exists()) { From ff4475c25e24c94b5ff38cf6a1ae7b852e3aea58 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 10:09:39 +0800 Subject: [PATCH 186/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/YamlUtils.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index b29585db..e41ea782 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -2,11 +2,14 @@ package com.ruoyi.platform.utils; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.nodes.Node; +import org.yaml.snakeyaml.representer.Represent; +import org.yaml.snakeyaml.representer.Representer; import java.io.*; import java.util.Iterator; import java.util.Map; - +import org.yaml.snakeyaml.nodes.Tag; public class YamlUtils { /** @@ -20,8 +23,27 @@ public class YamlUtils { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); -// options.setPrettyFlow(true); - Yaml yaml = new Yaml(options); + options.setPrettyFlow(false); + + Representer representer = new Representer() { + { + // 重写字符串表示方法 + representers.put(String.class, new Represent() { + public Node representData(Object data) { + return representScalar(Tag.STR, (String) data, null); + } + }); + } + }; + + // 去掉引号时使用PLAIN样式 + representer.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); + + // 创建Yaml实例 + Yaml yaml = new Yaml(representer, options); + +// Yaml yaml = new Yaml(options); + File directory = new File(path); if (!directory.exists()) { boolean isCreated = directory.mkdirs(); From a9dc76c22b8e20c8d133e28f6064cf721ab972ab Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 10:10:59 +0800 Subject: [PATCH 187/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/YamlUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index e41ea782..e11e53d8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -42,6 +42,8 @@ public class YamlUtils { // 创建Yaml实例 Yaml yaml = new Yaml(representer, options); + String dump = yaml.dump(data); + // Yaml yaml = new Yaml(options); File directory = new File(path); From 57f30f5e056290721c378f56240d73770be1d7e8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 10:30:40 +0800 Subject: [PATCH 188/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 2 +- .../com/ruoyi/platform/utils/YamlUtils.java | 21 +------------------ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index c2b4e8bc..7710a17c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -534,7 +534,7 @@ public class ExperimentServiceImpl implements ExperimentService { for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String paramName = jsonObject.getString("param_name"); - String paramValue = jsonObject.getString("param_value"); + Object paramValue = jsonObject.get("param_value"); trainParam.put(paramName, paramValue); } modelMetaVo.setParams(trainParam); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index e11e53d8..3f235af1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -23,28 +23,9 @@ public class YamlUtils { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - options.setPrettyFlow(false); - - Representer representer = new Representer() { - { - // 重写字符串表示方法 - representers.put(String.class, new Represent() { - public Node representData(Object data) { - return representScalar(Tag.STR, (String) data, null); - } - }); - } - }; - - // 去掉引号时使用PLAIN样式 - representer.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); // 创建Yaml实例 - Yaml yaml = new Yaml(representer, options); - - String dump = yaml.dump(data); - -// Yaml yaml = new Yaml(options); + Yaml yaml = new Yaml(options); File directory = new File(path); if (!directory.exists()) { From d4f3dcdf660b6607883244edf5fca2b01d8da11f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 10:49:09 +0800 Subject: [PATCH 189/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ExperimentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 7710a17c..c64aa471 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -534,7 +534,7 @@ public class ExperimentServiceImpl implements ExperimentService { for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String paramName = jsonObject.getString("param_name"); - Object paramValue = jsonObject.get("param_value"); + Double paramValue = jsonObject.getDouble("param_value"); trainParam.put(paramName, paramValue); } modelMetaVo.setParams(trainParam); From 288a4e7ec7e3fe43194e7e14b7b9ad60cc49888f Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Thu, 26 Sep 2024 10:56:58 +0800 Subject: [PATCH 190/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAgeneral-data?= =?UTF-8?q?-process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ExperimentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index c64aa471..6738a01c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -461,7 +461,7 @@ public class ExperimentServiceImpl implements ExperimentService { Iterator> dependendcyIterator = datasetDependendcy.entrySet().iterator(); Map datasetExport = (Map) trainInfo.get("dataset_export"); - Map datasetPreprocess = (Map) trainInfo.get("dataset_preprocess"); + Map datasetPreprocess = (Map) trainInfo.get("general-data-process"); while (dependendcyIterator.hasNext()) { Map.Entry entry = dependendcyIterator.next(); Map modelDel = (Map) entry.getValue(); From c03fbd1b4299df8a242c2109fe819517dec83257 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 11:42:43 +0800 Subject: [PATCH 191/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E4=B8=8D=E4=B8=8Ak8sbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/dockerfiles/managent-dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile index b36b9eb1..c008d9b6 100644 --- a/k8s/dockerfiles/managent-dockerfile +++ b/k8s/dockerfiles/managent-dockerfile @@ -13,4 +13,4 @@ WORKDIR /home/ruoyi # 复制jar文件到路径 COPY ./jar/management-platform.jar /home/ruoyi/management-platform.jar # 启动系统服务 -ENTRYPOINT ["java","-jar","management-platform.jar"] +ENTRYPOINT ["java -Djdk.tls.client.protocols=TLSv1.2","-jar","management-platform.jar"] From c9714368804235d4d492de4b143937efe0ca4b45 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 11:46:43 +0800 Subject: [PATCH 192/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E4=B8=8D=E4=B8=8Ak8sbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/dockerfiles/managent-dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile index c008d9b6..e4ccb3c7 100644 --- a/k8s/dockerfiles/managent-dockerfile +++ b/k8s/dockerfiles/managent-dockerfile @@ -13,4 +13,4 @@ WORKDIR /home/ruoyi # 复制jar文件到路径 COPY ./jar/management-platform.jar /home/ruoyi/management-platform.jar # 启动系统服务 -ENTRYPOINT ["java -Djdk.tls.client.protocols=TLSv1.2","-jar","management-platform.jar"] +ENTRYPOINT ["java"," -Djdk.tls.client.protocols=TLSv1.2","-jar","management-platform.jar"] From b09d151c2eb9aadd60a2771942f11ff63e892d11 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 11:54:07 +0800 Subject: [PATCH 193/381] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E4=B8=8D=E4=B8=8Ak8sbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/dockerfiles/managent-dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/dockerfiles/managent-dockerfile b/k8s/dockerfiles/managent-dockerfile index e4ccb3c7..138dc8b5 100644 --- a/k8s/dockerfiles/managent-dockerfile +++ b/k8s/dockerfiles/managent-dockerfile @@ -13,4 +13,4 @@ WORKDIR /home/ruoyi # 复制jar文件到路径 COPY ./jar/management-platform.jar /home/ruoyi/management-platform.jar # 启动系统服务 -ENTRYPOINT ["java"," -Djdk.tls.client.protocols=TLSv1.2","-jar","management-platform.jar"] +ENTRYPOINT ["java","-jar","-Djdk.tls.client.protocols=TLSv1.2","management-platform.jar"] From 30a88bd164fc627d208b3de221cae41c64643be8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 14:16:54 +0800 Subject: [PATCH 194/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=8C=82=E8=BD=BD=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/JupyterServiceImpl.java | 10 +++++----- .../java/com/ruoyi/platform/utils/K8sClientUtil.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index 3f2f7c9f..1c861949 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -43,7 +43,7 @@ public class JupyterServiceImpl implements JupyterService { private String masterIp; @Value("${k8s.storageClassName}") private String storageClassName; - @Value("${minio.pvcName}") + @Value("${minio.platformPvcName}") private String minioPvcName; private final MinioUtil minioUtil; @@ -90,12 +90,12 @@ public class JupyterServiceImpl implements JupyterService { // 提取数据集,模型信息,得到数据集模型的path Map dataset = JacksonUtil.parseJSONStr2Map(devEnvironment.getDataset()); - String datasetPath = "argo-workflow" + "/" + dataset.get("path"); -// String datasetPath = (String) dataset.get("path"); +// String datasetPath = "argo-workflow" + "/" + dataset.get("path"); + String datasetPath = (String) dataset.get("path"); Map model = JacksonUtil.parseJSONStr2Map(devEnvironment.getModel()); - String modelPath = "argo-workflow" + "/" + model.get("path"); -// String modelPath = (String) model.get("path"); +// String modelPath = "argo-workflow" + "/" + model.get("path"); + String modelPath = (String) model.get("path"); LoginUser loginUser = SecurityUtils.getLoginUser(); //构造pod名称 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 49d56853..ed2d1bfc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -439,7 +439,7 @@ public class K8sClientUtil { } if (v1PodList != null) { for (V1Pod pod1 : v1PodList.getItems()) { - // PVC 已存在 + // Pod 已存在 if (StringUtils.equals(pod1.getMetadata().getName(), podName)) { V1Service service = createService(namespace, podName + "-svc", port, selector); if (service != null) { From 7041eb34da6728238bac33bb8bfcb07c8f08bf12 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 26 Sep 2024 17:35:40 +0800 Subject: [PATCH 195/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/constant/Constant.java | 7 ++- .../controller/service/ServiceController.java | 15 ++++-- .../ruoyi/platform/domain/ServiceVersion.java | 10 +++- .../com/ruoyi/platform/mapper/ServiceDao.java | 4 +- .../platform/service/ServiceService.java | 4 +- .../service/impl/ServiceServiceImpl.java | 52 +++++++++++++++++-- .../managementPlatform/ServiceDaoMapper.xml | 34 ++++++++---- 7 files changed, 101 insertions(+), 25 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index 17166640..f38c6517 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -10,22 +10,21 @@ public class Constant { public final static int State_valid = 1; // 有效 public final static int State_invalid = 0; // 无效 - public final static int State_building = 2; //创建中 + public final static int State_failed = 3; //运行失败 public final static int Used_State_used = 1; // 已占用 public final static int Used_State_unused = 0; // 未占用 public final static String Computing_Resource_CPU = "CPU"; // 计算资源_CPU - public final static String Computing_Resource_GPU = "GPU"; // 计算资源_GPU public final static int Git_Category_Id = 39; public final static String Source_Auto_Export = "auto_export"; - public final static String Source_Hand_Export = "hand_export"; - public final static String Source_Add = "add"; + + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index c5df3ec9..f5499bcc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -68,20 +68,25 @@ public class ServiceController extends BaseController { @DeleteMapping("{id}") @ApiOperation("删除服务") - public GenericsAjaxResult deleteService(@PathVariable("id") Long id){ + public GenericsAjaxResult deleteService(@PathVariable("id") Long id) { return genericsSuccess(serviceService.deleteService(id)); } @DeleteMapping("/serviceVersion/{id}") @ApiOperation("删除服务版本") - public GenericsAjaxResult deleteServiceVersion(@PathVariable("id") Long id){ + public GenericsAjaxResult deleteServiceVersion(@PathVariable("id") Long id) { return genericsSuccess(serviceService.deleteServiceVersion(id)); } @GetMapping("/runServiceVersion/{id}") @ApiOperation("启动服务版本") - public GenericsAjaxResult runServiceVersion(@PathVariable("id") Long id){ - serviceService.runServiceVersion(id); - return genericsSuccess(""); + public GenericsAjaxResult runServiceVersion(@PathVariable("id") Long id) { + return genericsSuccess(serviceService.runServiceVersion(id)); + } + + @GetMapping("/stopServiceVersion/{id}") + @ApiOperation("停止服务版本") + public GenericsAjaxResult stopServiceVersion(@PathVariable("id") Long id) { + return genericsSuccess(serviceService.stopServiceVersion(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java index ed998779..da3fbd42 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java @@ -9,7 +9,7 @@ import java.io.Serializable; import java.util.Date; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) -@ApiModel("服务") +@ApiModel("服务版本") @Data public class ServiceVersion implements Serializable { private Long id; @@ -18,6 +18,8 @@ public class ServiceVersion implements Serializable { private String version; + private String description; + private String model; private String image; @@ -45,4 +47,10 @@ public class ServiceVersion implements Serializable { private Date updateTime; private Integer state; + + private Integer runState; + + private String deploymentName; + + private String svcName; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java index dfaa4e37..d489f475 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java @@ -25,8 +25,8 @@ public interface ServiceDao { int updateServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion); - Service getServiceById(Long id); + Service getServiceById(@Param("id") Long id); - ServiceVersion getServiceVersionById(Long id); + ServiceVersion getServiceVersionById(@Param("id") Long id); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index 1129e698..e7f9df29 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -26,5 +26,7 @@ public interface ServiceService { String deleteServiceVersion(Long id); - void runServiceVersion(Long id); + String runServiceVersion(Long id); + + String stopServiceVersion(Long id); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 21b7d9aa..5c6bedf7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -1,12 +1,17 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.ServiceVersion; import com.ruoyi.platform.mapper.ServiceDao; import com.ruoyi.platform.service.ServiceService; +import com.ruoyi.platform.utils.HttpUtils; +import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; @@ -14,11 +19,16 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service("serviceService") public class ServiceServiceImpl implements ServiceService { + @Value("${argo.url}") + private String argoUrl; + @Resource private ServiceDao serviceDao; @@ -108,10 +118,46 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public void runServiceVersion(Long id) { + public String runServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); + HashMap paramMap = new HashMap<>(); + paramMap.put("code_config", serviceVersion.getCodeConfig()); + paramMap.put("description", serviceVersion.getDescription()); + paramMap.put("env", JSONObject.parseObject(serviceVersion.getEnvVariables())); + paramMap.put("image", serviceVersion.getImage()); + paramMap.put("model", JSONObject.parseObject(serviceVersion.getModel())); + paramMap.put("mount_path", serviceVersion.getMountPath()); + paramMap.put("replicas", serviceVersion.getReplicas()); + paramMap.put("resource", serviceVersion.getResource()); + paramMap.put("service_name", service.getServiceName()); + paramMap.put("service_type", service.getServiceType()); + String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + serviceVersion.setUrl((String) reqMap.get("url")); + serviceVersion.setDeploymentName((String) reqMap.get("deployment_name")); + serviceVersion.setSvcName((String) reqMap.get("svc_name")); + serviceVersion.setRunState(Constant.State_building); + serviceDao.updateServiceVersion(serviceVersion); + return "启动成功"; + } else { + throw new RuntimeException("创建失败"); + } + } - - + @Override + public String stopServiceVersion(Long id) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + serviceVersion.setRunState(Constant.State_invalid); + serviceDao.updateServiceVersion(serviceVersion); + return "停止成功"; + }else { + throw new RuntimeException("停止失败"); + } } } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml index 656b3384..b8e00112 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml @@ -23,7 +23,7 @@ and a.service_name like concat('%', #{service.serviceName}, '%') - and a. = #{service.serviceType} + and a.service_type = #{service.serviceType} group by a.id @@ -69,30 +69,31 @@ insert into service(service_name, service_type, description, create_by, update_by) - values (#{serviceName}, #{serviceType}, #{description}, #{createBy}, #{updateBy}) + values (#{service.serviceName}, #{service.serviceType}, #{service.description}, #{service.createBy}, #{service.updateBy}) - insert into service_version(service_id, version, model, image, resouce, replicas, mount_path, env_variables, + insert into service_version(service_id, version, model, description, image, resouce, replicas, mount_path, env_variables, code_config, command, create_by, update_by) - values (#{serviceId}, #{version}, #{model}, #{image}, #{replicas}, #{mountPath}, #{envVariables}, - #{codeConfig}, #{command}, #{createBy}, #{updateBy}) + values (#{serviceVersion.serviceId}, #{serviceVersion.version}, #{serviceVersion.model}, #{serviceVersion.description}, #{serviceVersion.image}, + #{serviceVersion.replicas}, #{serviceVersion.mountPath}, #{serviceVersion.envVariables}, + #{serviceVersion.codeConfig}, #{serviceVersion.command}, #{serviceVersion.createBy}, #{serviceVersion.updateBy}) update service - service_name = #{service.serviceName} + service_name = #{service.serviceName}, - service_type = #{service.serviceType} + service_type = #{service.serviceType}, - description = #{service.description} + description = #{service.description}, - state = #{service.state} + state = #{service.state}, where id = #{service.id} @@ -101,6 +102,9 @@ update service_version + + description = #{serviceVersion.description}, + model = #{serviceVersion.model}, @@ -128,6 +132,18 @@ url = #{serviceVersion.url}, + + state = #{serviceVersion.state}, + + + run_state = #{serviceVersion.runState}, + + + deployment_name = #{serviceVersion.deploymentName}, + + + svc_name = #{serviceVersion.svcName}, + where id = #{serviceVersion.id} From 41633ece4633563d03998fee4e0e475f52be8638 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 08:58:11 +0800 Subject: [PATCH 196/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/service/ServiceController.java | 9 +++-- .../platform/service/ServiceService.java | 5 ++- .../service/impl/ServiceServiceImpl.java | 33 +++++++++++++++---- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index f5499bcc..133301fc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -32,8 +32,7 @@ public class ServiceController extends BaseController { @GetMapping("/serviceVersion") @ApiOperation("分页查询服务版本列表") public GenericsAjaxResult> queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) throws IOException { - PageRequest pageRequest = PageRequest.of(page, size); - return genericsSuccess(serviceService.queryByPageServiceVersion(serviceVersion, pageRequest)); + return genericsSuccess(serviceService.queryByPageServiceVersion(serviceVersion, page, size)); } @PostMapping @@ -89,4 +88,10 @@ public class ServiceController extends BaseController { public GenericsAjaxResult stopServiceVersion(@PathVariable("id") Long id) { return genericsSuccess(serviceService.stopServiceVersion(id)); } + + @PutMapping("/updateServiceVersion") + @ApiOperation("更新服务版本") + public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { + return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index e7f9df29..f3350409 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service; +import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.platform.domain.Service; import com.ruoyi.platform.domain.ServiceVersion; import org.springframework.data.domain.Page; @@ -10,7 +11,7 @@ import java.io.IOException; public interface ServiceService { Page queryByPageService(Service service, PageRequest pageRequest) throws IOException; - Page queryByPageServiceVersion(ServiceVersion serviceVersion, PageRequest pageRequest) throws IOException; + Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) throws IOException; Service addService(Service service); @@ -29,4 +30,6 @@ public interface ServiceService { String runServiceVersion(Long id); String stopServiceVersion(Long id); + + ServiceVersion updateServiceVersion(ServiceVersion serviceVersion); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 5c6bedf7..f19ccef9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -18,7 +18,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -33,14 +32,19 @@ public class ServiceServiceImpl implements ServiceService { private ServiceDao serviceDao; @Override - public Page queryByPageService(com.ruoyi.platform.domain.Service service, PageRequest pageRequest) throws IOException { + public Page queryByPageService(com.ruoyi.platform.domain.Service service, PageRequest pageRequest) { long total = serviceDao.countService(service); List services = serviceDao.queryByPageService(service, pageRequest); return new PageImpl<>(services, pageRequest, total); } @Override - public Page queryByPageServiceVersion(ServiceVersion serviceVersion, PageRequest pageRequest) throws IOException { + public Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) { + if (serviceVersion.getRunState() != null) { + + } + + PageRequest pageRequest = PageRequest.of(page, size); long total = serviceDao.countServiceVersion(serviceVersion); List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); return new PageImpl<>(serviceVersions, pageRequest, total); @@ -139,7 +143,7 @@ public class ServiceServiceImpl implements ServiceService { serviceVersion.setDeploymentName((String) reqMap.get("deployment_name")); serviceVersion.setSvcName((String) reqMap.get("svc_name")); serviceVersion.setRunState(Constant.State_building); - serviceDao.updateServiceVersion(serviceVersion); + editServiceVersion(serviceVersion); return "启动成功"; } else { throw new RuntimeException("创建失败"); @@ -154,10 +158,27 @@ public class ServiceServiceImpl implements ServiceService { String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { serviceVersion.setRunState(Constant.State_invalid); - serviceDao.updateServiceVersion(serviceVersion); + editServiceVersion(serviceVersion); return "停止成功"; - }else { + } else { throw new RuntimeException("停止失败"); } } + + @Override + public ServiceVersion updateServiceVersion(ServiceVersion serviceVersion) { + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + HashMap updateMap = new HashMap<>(); + updateMap.put("replicas", serviceVersion.getReplicas()); + updateMap.put("resource", serviceVersion.getResource()); + paramMap.put("update_model", JSON.toJSONString(updateMap)); + String req = HttpUtils.sendPost(argoUrl + "/model/service/update", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + return editServiceVersion(serviceVersion); + } else { + throw new RuntimeException("更新失败"); + } + } + } From 949083aac09d4e29ca6c9122f711611a549337f5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 09:01:38 +0800 Subject: [PATCH 197/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ExperimentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 6738a01c..15ee1978 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -534,7 +534,7 @@ public class ExperimentServiceImpl implements ExperimentService { for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String paramName = jsonObject.getString("param_name"); - Double paramValue = jsonObject.getDouble("param_value"); + Object paramValue = jsonObject.get("param_value"); trainParam.put(paramName, paramValue); } modelMetaVo.setParams(trainParam); From 78368771dee14495c6660dd5e306a3978cb0bf27 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 27 Sep 2024 09:40:21 +0800 Subject: [PATCH 198/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAgeneral-data?= =?UTF-8?q?-process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 15ee1978..92637711 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -472,20 +472,26 @@ public class ExperimentServiceImpl implements ExperimentService { String sourceTaskId = (String) source.get("task_id"); Map datasetPreprocessMap = (Map) datasetPreprocess.get(sourceTaskId); //处理project数据 - Map projectMap = (Map) datasetPreprocessMap.get("project"); - Map datasets = (Map) datasetPreprocessMap.get("datasets"); - datasetTempStorage.setName((String) datasets.get("dataset_identifier")); - datasetTempStorage.setVersion((String) datasets.get("dataset_version")); // 拼接需要的参数 + Map projectMap = (Map) datasetPreprocessMap.get("project"); Map sourceParams = new HashMap<>(); sourceParams.put("experiment_name", experimentName); sourceParams.put("experiment_ins_id", experimentInsId); sourceParams.put("experiment_id", experimentId); sourceParams.put("train_name", sourceTaskId); sourceParams.put("preprocess_code", projectMap); - datasetTempStorage.setSource(JacksonUtil.toJSONString(sourceParams)); - datasetTempStorage.setState(1); - datasetTempStorageService.insert(datasetTempStorage); + List datasets = (List) datasetPreprocessMap.get("datasets");. + if (datasets != null) { + for (Map dataset : datasets) { + datasetTempStorage.setName((String) dataset.get("dataset_identifier")); + datasetTempStorage.setVersion((String) dataset.get("dataset_version")); + datasetTempStorage.setSource(JacksonUtil.toJSONString(sourceParams)); + datasetTempStorage.setState(1); + datasetTempStorageService.insert(datasetTempStorage); + } + } + + } } From 4561db1f4d4bbbe97d7cc2c8d6d53c578eff2274 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 27 Sep 2024 09:41:32 +0800 Subject: [PATCH 199/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAgeneral-data?= =?UTF-8?q?-process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ExperimentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 92637711..b86865f2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -480,7 +480,7 @@ public class ExperimentServiceImpl implements ExperimentService { sourceParams.put("experiment_id", experimentId); sourceParams.put("train_name", sourceTaskId); sourceParams.put("preprocess_code", projectMap); - List datasets = (List) datasetPreprocessMap.get("datasets");. + List datasets = (List) datasetPreprocessMap.get("datasets"); if (datasets != null) { for (Map dataset : datasets) { datasetTempStorage.setName((String) dataset.get("dataset_identifier")); From f7b89ded5a8e056910e2868fcffd05621045e6d8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 09:43:27 +0800 Subject: [PATCH 200/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 8 +-- .../com/ruoyi/platform/utils/YamlUtils.java | 61 ++++++++++++------- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 15ee1978..077e6c12 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -13,13 +13,11 @@ import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.service.*; -import com.ruoyi.platform.utils.FileUtil; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; -import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -534,8 +532,10 @@ public class ExperimentServiceImpl implements ExperimentService { for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String paramName = jsonObject.getString("param_name"); - Object paramValue = jsonObject.get("param_value"); - trainParam.put(paramName, paramValue); + if (!"model_version".equals(paramName)) { + Object paramValue = jsonObject.get("param_value"); + trainParam.put(paramName, paramValue); + } } modelMetaVo.setParams(trainParam); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 3f235af1..265ee8eb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -1,32 +1,49 @@ package com.ruoyi.platform.utils; import org.yaml.snakeyaml.DumperOptions; -import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.nodes.Node; -import org.yaml.snakeyaml.representer.Represent; -import org.yaml.snakeyaml.representer.Representer; +//import org.yaml.snakeyaml.Yaml; import java.io.*; -import java.util.Iterator; import java.util.Map; -import org.yaml.snakeyaml.nodes.Tag; + + +import org.ho.yaml.Yaml; + public class YamlUtils { /** * 将Map对象转换为YAML格式并写入指定路径的文件中 * - * @param data Map对象 - * @param path 文件路径 - * @param fileName 文件名 + * @param data Map对象 + * @param path 文件路径 + * @param fileName 文件名 */ +// public static void generateYamlFile(Map data, String path, String fileName) { +// DumperOptions options = new DumperOptions(); +// options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); +// options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); +// +// +// // 创建Yaml实例 +// Yaml yaml = new Yaml(options); +// +// File directory = new File(path); +// if (!directory.exists()) { +// boolean isCreated = directory.mkdirs(); +// if (!isCreated) { +// throw new RuntimeException("创建路径失败: " + path); +// } +// } +// +// String fullPath = path + "/" + fileName + ".yaml"; +// +// try (FileWriter writer = new FileWriter(fullPath)) { +// yaml.dump(data, writer); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } public static void generateYamlFile(Map data, String path, String fileName) { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - - // 创建Yaml实例 - Yaml yaml = new Yaml(options); - File directory = new File(path); if (!directory.exists()) { boolean isCreated = directory.mkdirs(); @@ -36,11 +53,12 @@ public class YamlUtils { } String fullPath = path + "/" + fileName + ".yaml"; - - try (FileWriter writer = new FileWriter(fullPath)) { - yaml.dump(data, writer); - } catch (IOException e) { + File dumpFile = new File(fullPath); + try { + Yaml.dump(data, dumpFile); + } catch (FileNotFoundException e) { e.printStackTrace(); + } } @@ -53,7 +71,8 @@ public class YamlUtils { public static Map loadYamlFile(String filePath) { Yaml yaml = new Yaml(); try (InputStream inputStream = new FileInputStream(new File(filePath))) { - return yaml.load(inputStream); + Map load = (Map) yaml.load(inputStream); + return load; } catch (IOException e) { e.printStackTrace(); return null; From 67f93bcc99e09e9541cd1c09075de6e6ee7962f6 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 10:05:53 +0800 Subject: [PATCH 201/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/k8s/build.sh b/k8s/build.sh index ed30e9f1..424a9a8c 100755 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -91,7 +91,6 @@ compile_java() { param=$1 # 编译java docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ - -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh $param if [ $? -ne 0 ]; then echo "编译失败,请检查代码!" From 583918f8ac0f67dd4ea3eaeb93bb82bae7763441 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 27 Sep 2024 10:15:46 +0800 Subject: [PATCH 202/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAgeneral-data?= =?UTF-8?q?-process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 29 +++++++++++-------- .../src/main/resources/bootstrap.yml | 2 +- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index b86865f2..8e0eefcf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -457,8 +457,6 @@ public class ExperimentServiceImpl implements ExperimentService { * 存储数据集元数据到临时表 */ private void insertDatasetTempStorage(Map datasetDependendcy, Map trainInfo, Integer experimentId, Integer experimentInsId, String experimentName) { - DatasetTempStorage datasetTempStorage = new DatasetTempStorage(); - Iterator> dependendcyIterator = datasetDependendcy.entrySet().iterator(); Map datasetExport = (Map) trainInfo.get("dataset_export"); Map datasetPreprocess = (Map) trainInfo.get("general-data-process"); @@ -480,18 +478,25 @@ public class ExperimentServiceImpl implements ExperimentService { sourceParams.put("experiment_id", experimentId); sourceParams.put("train_name", sourceTaskId); sourceParams.put("preprocess_code", projectMap); - List datasets = (List) datasetPreprocessMap.get("datasets"); - if (datasets != null) { - for (Map dataset : datasets) { - datasetTempStorage.setName((String) dataset.get("dataset_identifier")); - datasetTempStorage.setVersion((String) dataset.get("dataset_version")); - datasetTempStorage.setSource(JacksonUtil.toJSONString(sourceParams)); - datasetTempStorage.setState(1); - datasetTempStorageService.insert(datasetTempStorage); - } - } + if (target != null && target.size() > 0){ + for (Map targetMap : target){ + String targetTaskId = (String)targetMap.get("task_id"); + Map datasetExportMap = (Map)datasetExport.get(targetTaskId); + List datasets = (List) datasetExportMap.get("datasets"); + if (datasets != null) { + for (Map dataset : datasets) { + DatasetTempStorage datasetTempStorage = new DatasetTempStorage(); + datasetTempStorage.setName((String) dataset.get("dataset_identifier")); + datasetTempStorage.setVersion((String) dataset.get("dataset_version")); + datasetTempStorage.setSource(JacksonUtil.toJSONString(sourceParams)); + datasetTempStorage.setState(1); + datasetTempStorageService.insert(datasetTempStorage); + } + } + } + } } } diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 25460d4c..1815cde0 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -9,7 +9,7 @@ spring: name: management-platform profiles: # 环境配置 - active: dev + active: dev1 cloud: nacos: discovery: From 87bc7ee23c1db609f688df6d8533296240c286ca Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 10:16:25 +0800 Subject: [PATCH 203/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/k8s/build.sh b/k8s/build.sh index 424a9a8c..ed30e9f1 100755 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -91,6 +91,7 @@ compile_java() { param=$1 # 编译java docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh $param if [ $? -ne 0 ]; then echo "编译失败,请检查代码!" From cca7bb028a283ed9b4e59713dc7e59790b945047 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 10:20:10 +0800 Subject: [PATCH 204/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/management-platform/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index e7c559fd..116809d2 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -243,6 +243,11 @@ 3.6.0 + + org.jyaml + jyaml + 1.3 + From bd409e85b05cf61b0ae977315cb2148f5eed35fc Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 10:47:10 +0800 Subject: [PATCH 205/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=85=83=E6=95=B0=E6=8D=AE=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/aim/AimController.java | 8 +- .../ruoyi/platform/service/AimService.java | 6 +- .../platform/service/impl/AimServiceImpl.java | 111 ++++++++++++++++-- .../service/impl/ModelsServiceImpl.java | 4 +- 4 files changed, 110 insertions(+), 19 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java index bc800545..c61fb789 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java @@ -24,15 +24,15 @@ public class AimController extends BaseController { @GetMapping("/getExpTrainInfos/{experiment_id}") @ApiOperation("获取当前实验的模型训练指标信息") @ApiResponse - public GenericsAjaxResult> getExpTrainInfos(@PathVariable("experiment_id") Integer experimentId, @RequestParam("run_id") String runId) throws Exception { - return genericsSuccess(aimService.getExpTrainInfos(experimentId, runId)); + public GenericsAjaxResult> getExpTrainInfos(@PathVariable("experiment_id") Integer experimentId) throws Exception { + return genericsSuccess(aimService.getExpTrainInfos(experimentId)); } @GetMapping("/getExpEvaluateInfos/{experiment_id}") @ApiOperation("获取当前实验的模型推理指标信息") @ApiResponse - public GenericsAjaxResult> getExpEvaluateInfos(@PathVariable("experiment_id") Integer experimentId, @RequestParam("run_id") String runId) throws Exception { - return genericsSuccess(aimService.getExpEvaluateInfos(experimentId, runId)); + public GenericsAjaxResult> getExpEvaluateInfos(@PathVariable("experiment_id") Integer experimentId) throws Exception { + return genericsSuccess(aimService.getExpEvaluateInfos(experimentId)); } @PostMapping("/getExpMetrics") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java index c7f91d8f..9f3868f5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java @@ -6,9 +6,11 @@ import java.util.List; public interface AimService { - List getExpTrainInfos(Integer experimentId, String runId) throws Exception; + List getExpTrainInfos(Integer experimentId) throws Exception; - List getExpEvaluateInfos(Integer experimentId, String runId) throws Exception; + List getExpTrainInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception; + + List getExpEvaluateInfos(Integer experimentId) throws Exception; String getExpMetrics(List runIds) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 3db73a01..1b754404 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -30,13 +30,13 @@ public class AimServiceImpl implements AimService { private NewHttpUtils httpUtils; @Override - public List getExpTrainInfos(Integer experimentId, String runId) throws Exception { - return getAimRunInfos(true, experimentId, runId); + public List getExpTrainInfos(Integer experimentId) throws Exception { + return getAimRunInfos(true, experimentId); } @Override - public List getExpEvaluateInfos(Integer experimentId, String runId) throws Exception { - return getAimRunInfos(false, experimentId, runId); + public List getExpEvaluateInfos(Integer experimentId) throws Exception { + return getAimRunInfos(false, experimentId); } @Override @@ -45,13 +45,12 @@ public class AimServiceImpl implements AimService { return aimUrl + "/metrics?select=" + decode; } - private List getAimRunInfos(boolean isTrain, Integer experimentId, String runId) throws Exception { -// String experimentName = "experiment-" + experimentId + "-train"; -// if (!isTrain) { -// experimentName = "experiment-" + experimentId + "-evaluate"; -// } -// String encodedUrlString = URLEncoder.encode("run.experiment==\"" + experimentName + "\"", "UTF-8"); - String encodedUrlString = URLEncoder.encode("run.id==\"" + runId + "\"", "UTF-8"); + private List getAimRunInfos(boolean isTrain, Integer experimentId) throws Exception { + String experimentName = "experiment-" + experimentId + "-train"; + if (!isTrain) { + experimentName = "experiment-" + experimentId + "-evaluate"; + } + String encodedUrlString = URLEncoder.encode("run.experiment==\"" + experimentName + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; String s = httpUtils.sendGet(url, null); List> response = JacksonUtil.parseJSONStr2MapList(s); @@ -139,6 +138,96 @@ public class AimServiceImpl implements AimService { } + @Override + public List getExpTrainInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception { + String encodedUrlString = URLEncoder.encode("run.id==\"" + runId + "\"", "UTF-8"); + String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; + String s = httpUtils.sendGet(url, null); + List> response = JacksonUtil.parseJSONStr2MapList(s); + System.out.println("response: " + JacksonUtil.toJSONString(response)); + if (response == null || response.size() == 0) { + return new ArrayList<>(); + } + //查询实例数据 + List byExperimentId = experimentInsService.queryByExperimentId(experimentId); + + if (byExperimentId == null || byExperimentId.size() == 0) { + return new ArrayList<>(); + } + List aimRunInfoList = new ArrayList<>(); + for (Map run : response) { + InsMetricInfoVo aimRunInfo = new InsMetricInfoVo(); + String runHash = (String) run.get("run_hash"); + + aimRunInfo.setRunId(runHash); + + Map params = (Map) run.get("params"); + Map paramMap = JsonUtils.flattenJson("", params); + aimRunInfo.setParams(paramMap); + String aimrunId = (String) paramMap.get("id"); + Map tracesMap = (Map) run.get("traces"); + List> metricList = (List>) tracesMap.get("metric"); + //过滤name为__system__开头的对象 + aimRunInfo.setMetrics(new HashMap<>()); + if (metricList != null && metricList.size() > 0) { + List> metricRelList = metricList.stream() + .filter(map -> !StringUtils.startsWith((String) map.get("name"), "__system__")) + .collect(Collectors.toList()); + if (metricRelList != null && metricRelList.size() > 0) { + Map relMetricMap = new HashMap<>(); + for (Map metricMap : metricRelList) { + relMetricMap.put((String) metricMap.get("name"), metricMap.get("last_value")); + } + aimRunInfo.setMetrics(relMetricMap); + } + } + //找到ins + for (ExperimentIns ins : byExperimentId) { + String metricRecordString = ins.getMetricRecord(); + if (StringUtils.isEmpty(metricRecordString)) { + continue; + } + if (metricRecordString.contains(aimrunId)) { + aimRunInfo.setExperimentInsId(ins.getId()); + aimRunInfo.setStatus(ins.getStatus()); + aimRunInfo.setStartTime(ins.getCreateTime()); + Map metricRecordMap = JacksonUtil.parseJSONStr2Map(metricRecordString); + if (isTrain) { + List> records = (List>) metricRecordMap.get("train"); + List datasetList = getTrainDateSet(records, aimrunId); + aimRunInfo.setDataset(datasetList); + } else { + List> records = (List>) metricRecordMap.get("evaluate"); + List datasetList = getTrainDateSet(records, aimrunId); + aimRunInfo.setDataset(datasetList); + } + aimRunInfoList.add(aimRunInfo); + } + } + } + + //判断哪个最长 + + // 获取所有 metrics 的 key 的并集 + Set metricsKeys = (Set) aimRunInfoList.stream() + .map(InsMetricInfoVo::getMetrics) + .flatMap(metrics -> metrics.keySet().stream()) + .collect(Collectors.toSet()); + // 将并集赋值给每个 InsMetricInfoVo 的 metricsNames 属性 + aimRunInfoList.forEach(vo -> vo.setMetricsNames(new ArrayList<>(metricsKeys))); + + // 获取所有 params 的 key 的并集 + Set paramKeys = (Set) aimRunInfoList.stream() + .map(InsMetricInfoVo::getParams) + .flatMap(params -> params.keySet().stream()) + .collect(Collectors.toSet()); + // 将并集赋值给每个 InsMetricInfoVo 的 paramsNames 属性 + aimRunInfoList.forEach(vo -> vo.setParamsNames(new ArrayList<>(paramKeys))); + + return aimRunInfoList; + } + + private List getTrainDateSet(List> records, String aimrunId) { List datasetList = new ArrayList<>(); for (Map record : records) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 7b51ee35..7230b362 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1165,7 +1165,7 @@ public class ModelsServiceImpl implements ModelsService { for (int i = 0; i < trainMetrics.size(); i++) { JSONObject jsonObject = trainMetrics.getJSONObject(i); String runId = jsonObject.getString("run_id"); - List expTrainInfos = aimsService.getExpTrainInfos(modelMetaVo.getTrainTask().getExperimentId(), runId); + List expTrainInfos = aimsService.getExpTrainInfos1(true, modelMetaVo.getTrainTask().getExperimentId(), runId); for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics1 = expTrainInfo.getMetrics(); train.putAll(metrics1); @@ -1177,7 +1177,7 @@ public class ModelsServiceImpl implements ModelsService { for (int i = 0; i < testMetrics.size(); i++) { JSONObject jsonObject = testMetrics.getJSONObject(i); String runId = jsonObject.getString("run_id"); - List expTestInfos = aimsService.getExpEvaluateInfos(modelMetaVo.getTrainTask().getExperimentId(), runId); + List expTestInfos = aimsService.getExpTrainInfos1(false, modelMetaVo.getTrainTask().getExperimentId(), runId); for (InsMetricInfoVo expTestInfo : expTestInfos) { Map metrics1 = expTestInfo.getMetrics(); evaluate.putAll(metrics1); From 7121e17087172d1676414a9796330615362cadde Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 11:01:57 +0800 Subject: [PATCH 206/381] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 7230b362..8ce5073f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -985,8 +985,8 @@ public class ModelsServiceImpl implements ModelsService { String jsonString = JSON.toJSONString(stringObjectMap); ModelsVo modelsVo = JSON.parseObject(jsonString, ModelsVo.class); - List versionVos = new ArrayList<>(); if (!fileDetailsAfterGitPull.isEmpty()) { + List versionVos = new ArrayList<>(); for (Map fileDetail : fileDetailsAfterGitPull) { VersionVo versionVo = new VersionVo(); versionVo.setUrl((String) fileDetail.get("filePath")); @@ -995,8 +995,8 @@ public class ModelsServiceImpl implements ModelsService { versionVo.setFileSize(FileUtil.formatFileSize(size)); versionVos.add(versionVo); } + modelsVo.setModelVersionVos(versionVos); } - modelsVo.setModelVersionVos(versionVos); return modelsVo; } From 48aedaf30c9c74729d00b525698a5f3a3148dfae Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 11:13:25 +0800 Subject: [PATCH 207/381] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management-platform/src/main/resources/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 1815cde0..25460d4c 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -9,7 +9,7 @@ spring: name: management-platform profiles: # 环境配置 - active: dev1 + active: dev cloud: nacos: discovery: From 9e04af0cedab3eb51d8df45765d49de1b7c38173 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 11:26:21 +0800 Subject: [PATCH 208/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/YamlUtils.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 265ee8eb..78d26e2c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -4,6 +4,7 @@ import org.yaml.snakeyaml.DumperOptions; //import org.yaml.snakeyaml.Yaml; import java.io.*; +import java.util.HashMap; import java.util.Map; @@ -71,8 +72,9 @@ public class YamlUtils { public static Map loadYamlFile(String filePath) { Yaml yaml = new Yaml(); try (InputStream inputStream = new FileInputStream(new File(filePath))) { - Map load = (Map) yaml.load(inputStream); - return load; + Object load1 = yaml.load(inputStream); +// Map load = (Map) yaml.load(inputStream); + return new HashMap(); } catch (IOException e) { e.printStackTrace(); return null; From 65d62db93d28b76651189dd065a129f6d8afa0fe Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 11:32:03 +0800 Subject: [PATCH 209/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/YamlUtils.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 78d26e2c..cdf022c8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -72,9 +72,8 @@ public class YamlUtils { public static Map loadYamlFile(String filePath) { Yaml yaml = new Yaml(); try (InputStream inputStream = new FileInputStream(new File(filePath))) { - Object load1 = yaml.load(inputStream); -// Map load = (Map) yaml.load(inputStream); - return new HashMap(); + HashMap load = (HashMap) yaml.load(inputStream); + return load; } catch (IOException e) { e.printStackTrace(); return null; From d55800f6cb0ea41f4bdc4d883713f0f213c0692e Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 27 Sep 2024 14:46:32 +0800 Subject: [PATCH 210/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAgeneral-data?= =?UTF-8?q?-process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ExperimentInsServiceImpl.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index e9457bcb..07dbadee 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -372,6 +372,25 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { if (errCode != null && errCode == 0) { //更新experimentIns,确保状态更新被保存到数据库 ExperimentIns ins = queryStatusFromArgo(experimentIns); + String nodesStatus = ins.getNodesStatus(); + Map nodeMap = JsonUtils.jsonToMap(nodesStatus); + + // 遍历 map + for (Map.Entry entry : nodeMap.entrySet()) { + // 获取每个 Map 中的值并强制转换为 Map + Map innerMap = (Map) entry.getValue(); + + // 检查 phase 的值 + if (innerMap.containsKey("phase")) { + String phaseValue = (String) innerMap.get("phase"); + + // 如果值不等于 Succeeded,则赋值为 Failed + if (!"Succeeded".equals(phaseValue)) { + innerMap.put("phase", "Failed"); + } + } + } + ins.setNodesStatus(JsonUtils.mapToJson(nodeMap)); ins.setStatus("Terminated"); ins.setFinishTime(new Date()); this.experimentInsDao.update(ins); From 7db808aeca6c1fe358beba321830435db99bf9ba Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 27 Sep 2024 14:48:10 +0800 Subject: [PATCH 211/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAgeneral-data?= =?UTF-8?q?-process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 07dbadee..7b9c57f7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -385,7 +385,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { String phaseValue = (String) innerMap.get("phase"); // 如果值不等于 Succeeded,则赋值为 Failed - if (!"Succeeded".equals(phaseValue)) { + if (!StringUtils.equals("Succeeded", phaseValue)) { innerMap.put("phase", "Failed"); } } From cebc92ea837c5cf8a3e3e9683a2448db10e7927b Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 14:57:18 +0800 Subject: [PATCH 212/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/management-platform/pom.xml | 6 - .../service/impl/ExperimentServiceImpl.java | 17 ++- .../com/ruoyi/platform/utils/YamlUtils.java | 108 ++++++++++++------ 3 files changed, 84 insertions(+), 47 deletions(-) diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index 116809d2..ba689d0e 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -242,12 +242,6 @@ jedis 3.6.0 - - - org.jyaml - jyaml - 1.3 - diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 52ac55da..f91e1a2f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -16,6 +16,7 @@ import com.ruoyi.platform.service.*; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; +import com.ruoyi.platform.utils.YamlUtils; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.system.api.model.LoginUser; @@ -32,6 +33,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; import java.lang.reflect.Field; +import java.math.BigDecimal; import java.util.*; /** @@ -477,10 +479,10 @@ public class ExperimentServiceImpl implements ExperimentService { sourceParams.put("train_name", sourceTaskId); sourceParams.put("preprocess_code", projectMap); - if (target != null && target.size() > 0){ - for (Map targetMap : target){ - String targetTaskId = (String)targetMap.get("task_id"); - Map datasetExportMap = (Map)datasetExport.get(targetTaskId); + if (target != null && target.size() > 0) { + for (Map targetMap : target) { + String targetTaskId = (String) targetMap.get("task_id"); + Map datasetExportMap = (Map) datasetExport.get(targetTaskId); List datasets = (List) datasetExportMap.get("datasets"); if (datasets != null) { for (Map dataset : datasets) { @@ -543,8 +545,11 @@ public class ExperimentServiceImpl implements ExperimentService { for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String paramName = jsonObject.getString("param_name"); - if (!"model_version".equals(paramName)) { - Object paramValue = jsonObject.get("param_value"); + String paramValue = jsonObject.getString("param_value"); + if (YamlUtils.isNumeric(paramValue)) { + BigDecimal bigDecimal = new BigDecimal(paramValue); + trainParam.put(paramName, bigDecimal); + } else { trainParam.put(paramName, paramValue); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index cdf022c8..47341e79 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -1,15 +1,22 @@ package com.ruoyi.platform.utils; +import com.alibaba.fastjson2.JSON; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import org.springframework.stereotype.Component; import org.yaml.snakeyaml.DumperOptions; -//import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.Yaml; import java.io.*; -import java.util.HashMap; import java.util.Map; -import org.ho.yaml.Yaml; +//import org.ho.yaml.Yaml; +@Component public class YamlUtils { /** @@ -19,32 +26,15 @@ public class YamlUtils { * @param path 文件路径 * @param fileName 文件名 */ -// public static void generateYamlFile(Map data, String path, String fileName) { -// DumperOptions options = new DumperOptions(); -// options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); -// options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); -// -// -// // 创建Yaml实例 -// Yaml yaml = new Yaml(options); -// -// File directory = new File(path); -// if (!directory.exists()) { -// boolean isCreated = directory.mkdirs(); -// if (!isCreated) { -// throw new RuntimeException("创建路径失败: " + path); -// } -// } -// -// String fullPath = path + "/" + fileName + ".yaml"; -// -// try (FileWriter writer = new FileWriter(fullPath)) { -// yaml.dump(data, writer); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } public static void generateYamlFile(Map data, String path, String fileName) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); + + + // 创建Yaml实例 + Yaml yaml = new Yaml(options); + File directory = new File(path); if (!directory.exists()) { boolean isCreated = directory.mkdirs(); @@ -54,15 +44,60 @@ public class YamlUtils { } String fullPath = path + "/" + fileName + ".yaml"; - File dumpFile = new File(fullPath); - try { - Yaml.dump(data, dumpFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); + try (FileWriter writer = new FileWriter(fullPath)) { + String dump = yaml.dump(data); + + yaml.dump(data, writer); + } catch (IOException e) { + e.printStackTrace(); } } + +// public static void generateYamlFile1(Object data, String path, String fileName) { +// try { +// YAMLFactory yamlFactory = new YAMLFactory(); +// yamlFactory.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES); +// yamlFactory.disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER); +//// +// ObjectMapper objectMapper = new ObjectMapper(yamlFactory); +//// ObjectMapper objectMapper = new ObjectMapper(); +// objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); +// String s = objectMapper.writeValueAsString(data); +// +// File directory = new File(path); +// if (!directory.exists()) { +// boolean isCreated = directory.mkdirs(); +// if (!isCreated) { +// throw new RuntimeException("创建路径失败: " + path); +// } +// } +// +// try { +// DumperOptions options = new DumperOptions(); +// options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); +// // 创建Yaml实例 +// Yaml yaml = new Yaml(options); +// +// String fullPath = path + "/" + fileName + ".yaml"; +// FileWriter writer = new FileWriter(fullPath); +// +// yaml.dump(s, writer); +// } catch (FileNotFoundException e) { +// e.printStackTrace(); +// +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// +// +// } catch (JsonProcessingException e) { +// throw new RuntimeException(e); +// } +// } + + /** * 读取YAML文件并将其内容转换为Map * @@ -72,11 +107,14 @@ public class YamlUtils { public static Map loadYamlFile(String filePath) { Yaml yaml = new Yaml(); try (InputStream inputStream = new FileInputStream(new File(filePath))) { - HashMap load = (HashMap) yaml.load(inputStream); - return load; + return yaml.load(inputStream); } catch (IOException e) { e.printStackTrace(); return null; } } + + public static boolean isNumeric(String str) { + return str.matches("-?\\\\d+(\\\\.\\\\d+)?"); // 匹配整数或小数,包括负数 + } } From 2c73249a7712b936b680f59493f823521bbfd26b Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 15:05:28 +0800 Subject: [PATCH 213/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/YamlUtils.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java index 47341e79..142406cf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/YamlUtils.java @@ -115,6 +115,11 @@ public class YamlUtils { } public static boolean isNumeric(String str) { - return str.matches("-?\\\\d+(\\\\.\\\\d+)?"); // 匹配整数或小数,包括负数 + try { + double num = Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } } } From cb605798ed7ab85285006c4133ba4820a37a539b Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 15:50:22 +0800 Subject: [PATCH 214/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index f91e1a2f..16af4e8c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -557,6 +557,13 @@ public class ExperimentServiceImpl implements ExperimentService { //处理指标 HashMap metricMap = JSON.parseObject(metricRecord, HashMap.class); + for (Map.Entry metric : metricMap.entrySet()) { + if (YamlUtils.isNumeric(String.valueOf(metric.getValue()))) { + BigDecimal bigDecimal = new BigDecimal(String.valueOf(metric.getValue())); + metric.setValue(bigDecimal); + } + } + modelMetaVo.setMetrics(metricMap); //训练数据集 From 61eb75a3f7a4690d036cbfc15041a443828dcf12 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 15:59:45 +0800 Subject: [PATCH 215/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ExperimentServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 16af4e8c..1e804faf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -557,7 +557,15 @@ public class ExperimentServiceImpl implements ExperimentService { //处理指标 HashMap metricMap = JSON.parseObject(metricRecord, HashMap.class); - for (Map.Entry metric : metricMap.entrySet()) { + HashMap trainMetric = (HashMap)metricMap.get("train"); + HashMap evalMetric = (HashMap)metricMap.get("evaluate"); + for (Map.Entry metric : trainMetric.entrySet()) { + if (YamlUtils.isNumeric(String.valueOf(metric.getValue()))) { + BigDecimal bigDecimal = new BigDecimal(String.valueOf(metric.getValue())); + metric.setValue(bigDecimal); + } + } + for (Map.Entry metric : evalMetric.entrySet()) { if (YamlUtils.isNumeric(String.valueOf(metric.getValue()))) { BigDecimal bigDecimal = new BigDecimal(String.valueOf(metric.getValue())); metric.setValue(bigDecimal); From a6cbdc54e7c61a2c9d781702eba7aa13ddd0cf3f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 16:09:12 +0800 Subject: [PATCH 216/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/managementPlatform/ModelDependency1DaoMapper.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index c92d842c..596c931a 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -47,6 +47,7 @@ and identifier = #{identifier} and version = #{version} and state = 2 + order by create_time desc limit 1 From e0e391dbaa0376aaf401d13f95b4c88d75048513 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 16:17:49 +0800 Subject: [PATCH 217/381] =?UTF-8?q?=E4=BC=98=E5=8C=96yaml=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 1e804faf..f91e1a2f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -557,21 +557,6 @@ public class ExperimentServiceImpl implements ExperimentService { //处理指标 HashMap metricMap = JSON.parseObject(metricRecord, HashMap.class); - HashMap trainMetric = (HashMap)metricMap.get("train"); - HashMap evalMetric = (HashMap)metricMap.get("evaluate"); - for (Map.Entry metric : trainMetric.entrySet()) { - if (YamlUtils.isNumeric(String.valueOf(metric.getValue()))) { - BigDecimal bigDecimal = new BigDecimal(String.valueOf(metric.getValue())); - metric.setValue(bigDecimal); - } - } - for (Map.Entry metric : evalMetric.entrySet()) { - if (YamlUtils.isNumeric(String.valueOf(metric.getValue()))) { - BigDecimal bigDecimal = new BigDecimal(String.valueOf(metric.getValue())); - metric.setValue(bigDecimal); - } - } - modelMetaVo.setMetrics(metricMap); //训练数据集 From 49d2acb392eac432ef400c38daf2423cdfb57ad1 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 27 Sep 2024 16:45:58 +0800 Subject: [PATCH 218/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 8ce5073f..514a0d36 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1162,28 +1162,32 @@ public class ModelsServiceImpl implements ModelsService { HashMap metrics = modelMetaVo.getMetrics(); JSONArray trainMetrics = (JSONArray) metrics.get("train"); - for (int i = 0; i < trainMetrics.size(); i++) { - JSONObject jsonObject = trainMetrics.getJSONObject(i); - String runId = jsonObject.getString("run_id"); - List expTrainInfos = aimsService.getExpTrainInfos1(true, modelMetaVo.getTrainTask().getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics1 = expTrainInfo.getMetrics(); - train.putAll(metrics1); + if (trainMetrics != null) { + for (int i = 0; i < trainMetrics.size(); i++) { + JSONObject jsonObject = trainMetrics.getJSONObject(i); + String runId = jsonObject.getString("run_id"); + List expTrainInfos = aimsService.getExpTrainInfos1(true, modelMetaVo.getTrainTask().getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics1 = expTrainInfo.getMetrics(); + train.putAll(metrics1); + } } + result.put("train", train); } - result.put("train", train); JSONArray testMetrics = (JSONArray) metrics.get("evaluate"); - for (int i = 0; i < testMetrics.size(); i++) { - JSONObject jsonObject = testMetrics.getJSONObject(i); - String runId = jsonObject.getString("run_id"); - List expTestInfos = aimsService.getExpTrainInfos1(false, modelMetaVo.getTrainTask().getExperimentId(), runId); - for (InsMetricInfoVo expTestInfo : expTestInfos) { - Map metrics1 = expTestInfo.getMetrics(); - evaluate.putAll(metrics1); + if (testMetrics != null) { + for (int i = 0; i < testMetrics.size(); i++) { + JSONObject jsonObject = testMetrics.getJSONObject(i); + String runId = jsonObject.getString("run_id"); + List expTestInfos = aimsService.getExpTrainInfos1(false, modelMetaVo.getTrainTask().getExperimentId(), runId); + for (InsMetricInfoVo expTestInfo : expTestInfos) { + Map metrics1 = expTestInfo.getMetrics(); + evaluate.putAll(metrics1); + } } + result.put("evaluate", evaluate); } - result.put("evaluate", evaluate); modelMetaVo.setMetrics(result); } } From 1e4b51d4652ec2e442c2dea64eac5c196ad3781e Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 08:45:44 +0800 Subject: [PATCH 219/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/NewDatasetServiceImpl.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 9b55422f..52e141e3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -200,8 +200,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); - - if (Constant.Source_Hand_Export.equals(datasetVo.getDatasetSource())) { + Constant.Source_Hand_Export.equals(datasetVo.getDatasetSource()) + if () { String bucketName = sourcePath.split("/")[0]; String root_path = sourcePath.split("/")[1]; minioUtil.downloadFiles(bucketName, root_path, datasetPath); @@ -220,9 +220,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { "
"); datasetVo.setIdentifier(repositoryName); datasetVo.setOwner((String) userInfo.get("login")); - if (StringUtils.isEmpty(datasetVo.getDatasetSource())) { - datasetVo.setDatasetSource("用户上传"); - } + datasetVo.setDescription(newDatasetVo.getDescription()); datasetVo.setDataTag(newDatasetVo.getDataTag()); datasetVo.setDataType(newDatasetVo.getDataType()); From c0de89eb18c0bf29c1f29c8f2f0b05f02827645a Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 08:47:27 +0800 Subject: [PATCH 220/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 52e141e3..4769e905 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -200,8 +200,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); - Constant.Source_Hand_Export.equals(datasetVo.getDatasetSource()) - if () { + + if (Constant.Source_Hand_Export.equals(datasetVo.getDatasetSource())) { String bucketName = sourcePath.split("/")[0]; String root_path = sourcePath.split("/")[1]; minioUtil.downloadFiles(bucketName, root_path, datasetPath); From f7249ca1279203b2a8f2bb2d7358de5e043c14ad Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 09:48:51 +0800 Subject: [PATCH 221/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentServiceImpl.java | 6 +++--- .../service/impl/NewDatasetServiceImpl.java | 16 ++++++++++++++++ .../java/com/ruoyi/platform/vo/NewDatasetVo.java | 2 ++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index f91e1a2f..f69d9586 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -302,7 +302,7 @@ public class ExperimentServiceImpl implements ExperimentService { Map datasetDependendcy = (Map) converMap2.get("dataset_dependency"); //暂存数据集元数据{} if (datasetDependendcy != null && trainInfo != null) { - insertDatasetTempStorage(datasetDependendcy, trainInfo, experiment.getId(), insert.getId(), experiment.getName()); + insertDatasetTempStorage(datasetDependendcy, trainInfo, experiment.getId(), insert.getId(), experiment.getName(), experiment.getWorkflowId()); } @@ -456,7 +456,7 @@ public class ExperimentServiceImpl implements ExperimentService { /** * 存储数据集元数据到临时表 */ - private void insertDatasetTempStorage(Map datasetDependendcy, Map trainInfo, Integer experimentId, Integer experimentInsId, String experimentName) { + private void insertDatasetTempStorage(Map datasetDependendcy, Map trainInfo, Integer experimentId, Integer experimentInsId, String experimentName, Long workflowId) { Iterator> dependendcyIterator = datasetDependendcy.entrySet().iterator(); Map datasetExport = (Map) trainInfo.get("dataset_export"); Map datasetPreprocess = (Map) trainInfo.get("general-data-process"); @@ -478,7 +478,7 @@ public class ExperimentServiceImpl implements ExperimentService { sourceParams.put("experiment_id", experimentId); sourceParams.put("train_name", sourceTaskId); sourceParams.put("preprocess_code", projectMap); - + sourceParams.put("workflow_id", workflowId); if (target != null && target.size() > 0) { for (Map targetMap : target) { String targetTaskId = (String) targetMap.get("task_id"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 4769e905..a9424cf2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -209,6 +209,22 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.moveFiles(sourcePath, datasetPath); } + if (!StringUtils.equals(datasetVo.getDatasetSource(), Constant.Source_Add)){ + // 准备数据 + DatasetTempStorage queryDatasetTempStorage = new DatasetTempStorage(); + queryDatasetTempStorage.setName(repositoryName); + queryDatasetTempStorage.setVersion(branchName); + DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); + if (datasetTempStorage != null){ + String source = datasetTempStorage.getSource(); + Map sourceMap = JacksonUtil.parseJSONStr2Map(source); + String preprocessCode = (String) sourceMap.get("preprocess_code"); + datasetVo.setProcessingCode(preprocessCode); + sourceMap.remove("preprocess_code"); + datasetVo.setTrainTask(JacksonUtil.toJSONString(sourceMap)); + } + } + // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setUpdateTime(DateUtils.getTime()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 0382a8bc..49e5a5ec 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -56,6 +56,8 @@ public class NewDatasetVo implements Serializable { private String updateTime; @ApiModelProperty(name = "processing_code",value = "处理代码") private String processingCode; + @ApiModelProperty(name = "train_task",value = "训练任务") + private String trainTask; @ApiModelProperty(name = "owner",value = "项目所有者") private String owner; @ApiModelProperty(name = "dataset_source",value = "数据集来源") From 0619625d0dc191c4b2537d10b8534df5bcd0cb0f Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 09:59:55 +0800 Subject: [PATCH 222/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index a9424cf2..77087726 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -218,8 +218,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { if (datasetTempStorage != null){ String source = datasetTempStorage.getSource(); Map sourceMap = JacksonUtil.parseJSONStr2Map(source); - String preprocessCode = (String) sourceMap.get("preprocess_code"); - datasetVo.setProcessingCode(preprocessCode); + Map preprocessCode = (Map) sourceMap.get("preprocess_code"); + datasetVo.setProcessingCode(JacksonUtil.toJSONString(preprocessCode)); sourceMap.remove("preprocess_code"); datasetVo.setTrainTask(JacksonUtil.toJSONString(sourceMap)); } From db5d4e125ea3a57884e4cb70696f240b5f8ae389 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 10:35:05 +0800 Subject: [PATCH 223/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/NewDatasetServiceImpl.java | 25 ++++--------------- .../com/ruoyi/platform/vo/NewDatasetVo.java | 5 ++-- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 77087726..e67e16a3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -209,21 +209,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.moveFiles(sourcePath, datasetPath); } - if (!StringUtils.equals(datasetVo.getDatasetSource(), Constant.Source_Add)){ - // 准备数据 - DatasetTempStorage queryDatasetTempStorage = new DatasetTempStorage(); - queryDatasetTempStorage.setName(repositoryName); - queryDatasetTempStorage.setVersion(branchName); - DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); - if (datasetTempStorage != null){ - String source = datasetTempStorage.getSource(); - Map sourceMap = JacksonUtil.parseJSONStr2Map(source); - Map preprocessCode = (Map) sourceMap.get("preprocess_code"); - datasetVo.setProcessingCode(JacksonUtil.toJSONString(preprocessCode)); - sourceMap.remove("preprocess_code"); - datasetVo.setTrainTask(JacksonUtil.toJSONString(sourceMap)); - } - } // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); @@ -520,12 +505,12 @@ public class NewDatasetServiceImpl implements NewDatasetService { queryDatasetTempStorage.setVersion(datasetVo.getVersion()); DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); if (datasetTempStorage != null) { - String datasetSourceString = datasetTempStorage.getSource(); - Map datasetSourceMap = JacksonUtil.parseJSONStr2Map(datasetSourceString); - String preprocessCode = (String) datasetSourceMap.get("preprocess_code"); - datasetSourceMap.remove("preprocess_code"); + String source = datasetTempStorage.getSource(); + Map sourceMap = JacksonUtil.parseJSONStr2Map(source); + Map preprocessCode = (Map) sourceMap.get("preprocess_code"); datasetVo.setProcessingCode(preprocessCode); - datasetVo.setDatasetSource(JacksonUtil.toJSONString(datasetSourceMap)); + sourceMap.remove("preprocess_code"); + datasetVo.setTrainTask(sourceMap); datasetTempStorage.setState(0); datasetTempStorageService.update(datasetTempStorage); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 49e5a5ec..60cfff21 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -8,6 +8,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; import java.util.List; +import java.util.Map; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data @@ -55,9 +56,9 @@ public class NewDatasetVo implements Serializable { @ApiModelProperty(name = "update_time",value = "更新时间") private String updateTime; @ApiModelProperty(name = "processing_code",value = "处理代码") - private String processingCode; + private Map processingCode; @ApiModelProperty(name = "train_task",value = "训练任务") - private String trainTask; + private Map trainTask; @ApiModelProperty(name = "owner",value = "项目所有者") private String owner; @ApiModelProperty(name = "dataset_source",value = "数据集来源") From 0b89766bacc99d8042263ec2ff7a0f6d43e548b3 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 10:37:16 +0800 Subject: [PATCH 224/381] clear test --- .../controller/jupyter/JupyterController.java | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java index 514ee3f8..6234820b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/jupyter/JupyterController.java @@ -86,23 +86,4 @@ public class JupyterController extends BaseController { return AjaxResult.success(); } - @GetMapping(value = "/testdvc") - public AjaxResult testdvc() throws Exception { - NewDatasetVo datasetVo = new NewDatasetVo(); - datasetVo.setName("testdvc1992"); - datasetVo.setDescription("sss"); - datasetVo.setIsPublic(false); - datasetVo.setDataTag("计算机视觉"); - datasetVo.setDataType("机器翻译"); - datasetVo.setVersion("dev"); - List datasetVersionVos = new ArrayList<>(); - VersionVo versionVo = new VersionVo(); - versionVo.setUrl("E:/test/data/模型任务1季度.zip"); - datasetVo.setDescription("this is a test"); - datasetVo.setProcessingCode("python code"); - datasetVo.setVersionDesc("this is a test"); - datasetVersionVos.add(versionVo); - datasetVo.setDatasetVersionVos(datasetVersionVos); - return AjaxResult.success(newDatasetService.newCreateDataset(datasetVo)); - } } From 37fb23a22a11704b095345234eef3706b0f729f2 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 11:11:29 +0800 Subject: [PATCH 225/381] clear test --- .../service/impl/NewDatasetServiceImpl.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index e67e16a3..e1bde15a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -227,7 +227,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setDataType(newDatasetVo.getDataType()); datasetVo.setRelativePaths(relatePath + "/dataset"); - addDatasetSourceToDataVo(datasetVo); + datasetVo = addDatasetSourceToDataVo(datasetVo); + System.out.println(datasetVo); YamlUtils.generateYamlFile(JsonUtils.objectToMap(datasetVo), localPath, "dataset"); //dvc数据跟踪 @@ -499,7 +500,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { return new ArrayList<>(); } - private void addDatasetSourceToDataVo(NewDatasetVo datasetVo) { + private NewDatasetVo addDatasetSourceToDataVo(NewDatasetVo datasetVo) { DatasetTempStorage queryDatasetTempStorage = new DatasetTempStorage(); queryDatasetTempStorage.setName(datasetVo.getName()); queryDatasetTempStorage.setVersion(datasetVo.getVersion()); @@ -508,12 +509,20 @@ public class NewDatasetServiceImpl implements NewDatasetService { String source = datasetTempStorage.getSource(); Map sourceMap = JacksonUtil.parseJSONStr2Map(source); Map preprocessCode = (Map) sourceMap.get("preprocess_code"); + System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!preprocessCode"); + System.out.println(preprocessCode); + System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!preprocessCode"); + datasetVo.setProcessingCode(preprocessCode); sourceMap.remove("preprocess_code"); + System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!sourceMap"); + System.out.println(sourceMap); + System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!sourceMap"); datasetVo.setTrainTask(sourceMap); datasetTempStorage.setState(0); datasetTempStorageService.update(datasetTempStorage); } + return datasetVo; } } From d0f872d525c4a73edc878b4c47e8c892a92cb6aa Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 11:35:35 +0800 Subject: [PATCH 226/381] clear test --- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index e1bde15a..8845a2bf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -505,6 +505,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { queryDatasetTempStorage.setName(datasetVo.getName()); queryDatasetTempStorage.setVersion(datasetVo.getVersion()); DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); + System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!datasetTempStorage"); if (datasetTempStorage != null) { String source = datasetTempStorage.getSource(); Map sourceMap = JacksonUtil.parseJSONStr2Map(source); From 42ba3d039983f95dcfc8ed5da190d6fdd207eb66 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sun, 29 Sep 2024 11:40:30 +0800 Subject: [PATCH 227/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/constant/Constant.java | 6 +- .../controller/service/ServiceController.java | 14 ++ .../com/ruoyi/platform/domain/Service.java | 2 +- .../ruoyi/platform/domain/ServiceVersion.java | 2 +- .../com/ruoyi/platform/mapper/ServiceDao.java | 2 + .../platform/service/ServiceService.java | 6 +- .../service/impl/ServiceServiceImpl.java | 121 +++++++++++++++--- .../managementPlatform/ServiceDaoMapper.xml | 16 ++- 8 files changed, 139 insertions(+), 30 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index f38c6517..12300bb1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -26,5 +26,9 @@ public class Constant { public final static String Source_Hand_Export = "hand_export"; public final static String Source_Add = "add"; - + public final static String Running = "Running"; + public final static String Failed = "Failed"; + public final static String Pending = "Pending"; + public final static String Init = "Init"; + public final static String Stopped = "Stopped"; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index 133301fc..a77ad8f1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.Map; @RestController @RequestMapping("service") @@ -94,4 +95,17 @@ public class ServiceController extends BaseController { public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); } + + @GetMapping("/getServiceVersionLog/{id}") + @ApiOperation("获取服务版本日志") + public GenericsAjaxResult getServiceVersionLog(@PathVariable("id") Long id, + @RequestParam String startTime, @RequestParam String endTime){ + return genericsSuccess(serviceService.getServiceVersionLog(id,startTime,endTime)); + } + + @GetMapping("/getServiceVersionDocs/{id}") + @ApiOperation("获取服务版本文档") + public GenericsAjaxResult> getServiceVersionDocs(@PathVariable("id") Long id){ + return genericsSuccess(serviceService.getServiceVersionDocs(id)); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java index 6c7168ce..151f0cde 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java @@ -17,7 +17,7 @@ public class Service implements Serializable { private String serviceName; - private Integer serviceType; + private String serviceType; private String description; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java index da3fbd42..f190a99a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ServiceVersion.java @@ -48,7 +48,7 @@ public class ServiceVersion implements Serializable { private Integer state; - private Integer runState; + private String runState; private String deploymentName; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java index d489f475..d114e0cd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java @@ -25,6 +25,8 @@ public interface ServiceDao { int updateServiceVersion(@Param("serviceVersion") ServiceVersion serviceVersion); + int updateRunState(@Param("deploymentName") String deploymentName, @Param("runState") String runState); + Service getServiceById(@Param("id") Long id); ServiceVersion getServiceVersionById(@Param("id") Long id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index f3350409..1f98ce1e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -1,12 +1,12 @@ package com.ruoyi.platform.service; -import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.platform.domain.Service; import com.ruoyi.platform.domain.ServiceVersion; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import java.io.IOException; +import java.util.Map; public interface ServiceService { Page queryByPageService(Service service, PageRequest pageRequest) throws IOException; @@ -32,4 +32,8 @@ public interface ServiceService { String stopServiceVersion(Long id); ServiceVersion updateServiceVersion(ServiceVersion serviceVersion); + + String getServiceVersionLog(Long id, String startTime, String endTime); + + Map getServiceVersionDocs(Long id); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index f19ccef9..7075c051 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -21,6 +21,7 @@ import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service("serviceService") public class ServiceServiceImpl implements ServiceService { @@ -28,6 +29,9 @@ public class ServiceServiceImpl implements ServiceService { @Value("${argo.url}") private String argoUrl; + @Value("${argo.modelService}") + private String modelService; + @Resource private ServiceDao serviceDao; @@ -40,14 +44,52 @@ public class ServiceServiceImpl implements ServiceService { @Override public Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) { - if (serviceVersion.getRunState() != null) { + PageRequest pageRequest; + if (StringUtils.isNotEmpty(serviceVersion.getRunState())) { + pageRequest = PageRequest.of(page, Integer.MAX_VALUE); + List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); + + List deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList()); + Map runStates = getRunState(deploymentNames); + updateRunState(runStates); + + List result = serviceVersions.stream().filter(serviceVersion1 -> { + String runState = runStates.get(serviceVersion1.getDeploymentName()); + return serviceVersion1.getRunState().equals(runState); + }).collect(Collectors.toList()); + + PageRequest.of(page, size); + return new PageImpl<>(result, pageRequest, result.size()); + } else { + pageRequest = PageRequest.of(page, size); + long total = serviceDao.countServiceVersion(serviceVersion); + List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); + + List deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList()); + Map runStates = getRunState(deploymentNames); + updateRunState(runStates); + return new PageImpl<>(serviceVersions, pageRequest, total); + } + } + + Map getRunState(List deploymentNames) { + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_names", deploymentNames); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getStatus", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + Map> data = (Map>) reqMap.get("data"); + return data.get("status"); + } else { + return null; } + } - PageRequest pageRequest = PageRequest.of(page, size); - long total = serviceDao.countServiceVersion(serviceVersion); - List serviceVersions = serviceDao.queryByPageServiceVersion(serviceVersion, pageRequest); - return new PageImpl<>(serviceVersions, pageRequest, total); + void updateRunState(Map runStates) { + for (Map.Entry entry : runStates.entrySet()) { + serviceDao.updateRunState(entry.getKey(), entry.getValue()); + } } @Override @@ -126,27 +168,32 @@ public class ServiceServiceImpl implements ServiceService { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); HashMap paramMap = new HashMap<>(); - paramMap.put("code_config", serviceVersion.getCodeConfig()); + paramMap.put("service_name", service.getServiceName()); paramMap.put("description", serviceVersion.getDescription()); + paramMap.put("resource", serviceVersion.getResource()); + paramMap.put("mount_path", serviceVersion.getMountPath()); + paramMap.put("replicas", serviceVersion.getReplicas()); paramMap.put("env", JSONObject.parseObject(serviceVersion.getEnvVariables())); + paramMap.put("code_config", JSONObject.parseObject(serviceVersion.getCodeConfig())); paramMap.put("image", serviceVersion.getImage()); paramMap.put("model", JSONObject.parseObject(serviceVersion.getModel())); - paramMap.put("mount_path", serviceVersion.getMountPath()); - paramMap.put("replicas", serviceVersion.getReplicas()); - paramMap.put("resource", serviceVersion.getResource()); - paramMap.put("service_name", service.getServiceName()); paramMap.put("service_type", service.getServiceType()); - String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/create", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { Map reqMap = JacksonUtil.parseJSONStr2Map(req); - serviceVersion.setUrl((String) reqMap.get("url")); - serviceVersion.setDeploymentName((String) reqMap.get("deployment_name")); - serviceVersion.setSvcName((String) reqMap.get("svc_name")); - serviceVersion.setRunState(Constant.State_building); - editServiceVersion(serviceVersion); - return "启动成功"; + if ((Integer) reqMap.get("code") == 200) { + Map data = (Map) reqMap.get("data"); + serviceVersion.setUrl(data.get("url")); + serviceVersion.setDeploymentName(data.get("deployment_name")); + serviceVersion.setSvcName(data.get("svc_name")); + serviceVersion.setRunState(Constant.Init); + editServiceVersion(serviceVersion); + return "启动成功"; + } else { + throw new RuntimeException("启动失败"); + } } else { - throw new RuntimeException("创建失败"); + throw new RuntimeException("启动失败"); } } @@ -155,9 +202,9 @@ public class ServiceServiceImpl implements ServiceService { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); HashMap paramMap = new HashMap<>(); paramMap.put("deployment_name", serviceVersion.getDeploymentName()); - String req = HttpUtils.sendPost(argoUrl + "/model/service/create", JSON.toJSONString(paramMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/stop", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { - serviceVersion.setRunState(Constant.State_invalid); + serviceVersion.setRunState(Constant.Stopped); editServiceVersion(serviceVersion); return "停止成功"; } else { @@ -173,7 +220,7 @@ public class ServiceServiceImpl implements ServiceService { updateMap.put("replicas", serviceVersion.getReplicas()); updateMap.put("resource", serviceVersion.getResource()); paramMap.put("update_model", JSON.toJSONString(updateMap)); - String req = HttpUtils.sendPost(argoUrl + "/model/service/update", JSON.toJSONString(paramMap)); + String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { return editServiceVersion(serviceVersion); } else { @@ -181,4 +228,36 @@ public class ServiceServiceImpl implements ServiceService { } } + @Override + public String getServiceVersionLog(Long id, String startTime, String endTime) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + paramMap.put("start_time", startTime); + paramMap.put("end_time", endTime); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getLog", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + HashMap data = (HashMap) reqMap.get("data"); + return data.get("log_content"); + } else { + throw new RuntimeException("获取日志失败"); + } + } + + @Override + public Map getServiceVersionDocs(Long id) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getDocs", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + Map data = (Map) reqMap.get("data"); + return data; + } else { + throw new RuntimeException("获取日志失败"); + } + } + } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml index b8e00112..c7427eb4 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml @@ -73,7 +73,7 @@ - insert into service_version(service_id, version, model, description, image, resouce, replicas, mount_path, env_variables, + insert into service_version(service_id, version, model, description, image, resource, replicas, mount_path, env_variables, code_config, command, create_by, update_by) values (#{serviceVersion.serviceId}, #{serviceVersion.version}, #{serviceVersion.model}, #{serviceVersion.description}, #{serviceVersion.image}, #{serviceVersion.replicas}, #{serviceVersion.mountPath}, #{serviceVersion.envVariables}, @@ -86,7 +86,7 @@ service_name = #{service.serviceName}, - + service_type = #{service.serviceType}, @@ -111,8 +111,8 @@ image = #{serviceVersion.image}, - - resouce = #{serviceVersion.resouce}, + + resource = #{serviceVersion.resource}, replicas = #{serviceVersion.replicas}, @@ -135,7 +135,7 @@ state = #{serviceVersion.state}, - + run_state = #{serviceVersion.runState}, @@ -147,4 +147,10 @@ where id = #{serviceVersion.id} + + + update service_version + set run_state = #{runState} + where deployment_name = #{deploymentName} + \ No newline at end of file From 39beaed35d9658a28974ddb3e3faa222e67d65b4 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 11:54:24 +0800 Subject: [PATCH 228/381] clear test --- .../platform/service/impl/NewDatasetServiceImpl.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 8845a2bf..67891f13 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -502,23 +502,14 @@ public class NewDatasetServiceImpl implements NewDatasetService { private NewDatasetVo addDatasetSourceToDataVo(NewDatasetVo datasetVo) { DatasetTempStorage queryDatasetTempStorage = new DatasetTempStorage(); - queryDatasetTempStorage.setName(datasetVo.getName()); + queryDatasetTempStorage.setName(datasetVo.getIdentifier()); queryDatasetTempStorage.setVersion(datasetVo.getVersion()); DatasetTempStorage datasetTempStorage = datasetTempStorageService.queryByDatasetTempStorage(queryDatasetTempStorage); - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!datasetTempStorage"); if (datasetTempStorage != null) { String source = datasetTempStorage.getSource(); Map sourceMap = JacksonUtil.parseJSONStr2Map(source); Map preprocessCode = (Map) sourceMap.get("preprocess_code"); - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!preprocessCode"); - System.out.println(preprocessCode); - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!preprocessCode"); - - datasetVo.setProcessingCode(preprocessCode); sourceMap.remove("preprocess_code"); - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!sourceMap"); - System.out.println(sourceMap); - System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!sourceMap"); datasetVo.setTrainTask(sourceMap); datasetTempStorage.setState(0); datasetTempStorageService.update(datasetTempStorage); From 87b73333faa62f3a110d8a0e69051f85f9446b6c Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 13:49:46 +0800 Subject: [PATCH 229/381] clear test --- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 4 ++-- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index f69d9586..d6232933 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -473,8 +473,8 @@ public class ExperimentServiceImpl implements ExperimentService { // 拼接需要的参数 Map projectMap = (Map) datasetPreprocessMap.get("project"); Map sourceParams = new HashMap<>(); - sourceParams.put("experiment_name", experimentName); - sourceParams.put("experiment_ins_id", experimentInsId); + sourceParams.put("name", experimentName); + sourceParams.put("ins_id", experimentInsId); sourceParams.put("experiment_id", experimentId); sourceParams.put("train_name", sourceTaskId); sourceParams.put("preprocess_code", projectMap); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 67891f13..5df6e006 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -511,6 +511,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { Map preprocessCode = (Map) sourceMap.get("preprocess_code"); sourceMap.remove("preprocess_code"); datasetVo.setTrainTask(sourceMap); + datasetVo.setProcessingCode(preprocessCode); datasetTempStorage.setState(0); datasetTempStorageService.update(datasetTempStorage); } From 84dc7413f8eb4fad1af531a9496b1bc1c4d4badd Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 13:58:27 +0800 Subject: [PATCH 230/381] clear test --- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 4 ++-- .../src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 5df6e006..bf976088 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -510,8 +510,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { Map sourceMap = JacksonUtil.parseJSONStr2Map(source); Map preprocessCode = (Map) sourceMap.get("preprocess_code"); sourceMap.remove("preprocess_code"); - datasetVo.setTrainTask(sourceMap); - datasetVo.setProcessingCode(preprocessCode); + datasetVo.setTrainTask((HashMap) sourceMap); + datasetVo.setProcessingCode((HashMap) preprocessCode); datasetTempStorage.setState(0); datasetTempStorageService.update(datasetTempStorage); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 60cfff21..245341ef 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -7,6 +7,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -56,9 +57,9 @@ public class NewDatasetVo implements Serializable { @ApiModelProperty(name = "update_time",value = "更新时间") private String updateTime; @ApiModelProperty(name = "processing_code",value = "处理代码") - private Map processingCode; + private HashMap processingCode; @ApiModelProperty(name = "train_task",value = "训练任务") - private Map trainTask; + private HashMap trainTask; @ApiModelProperty(name = "owner",value = "项目所有者") private String owner; @ApiModelProperty(name = "dataset_source",value = "数据集来源") From 329cf46fefc9d4269b09e528d9221aa26fe2a100 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 14:05:54 +0800 Subject: [PATCH 231/381] clear test --- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index bf976088..4505f146 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; @@ -11,6 +12,7 @@ import com.ruoyi.platform.service.GitService; import com.ruoyi.platform.service.NewDatasetService; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.GitProjectVo; +import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; @@ -324,7 +326,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); - NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); + String jsonString = JSON.toJSONString(stringObjectMap); + NewDatasetVo newDatasetVo = JSON.parseObject(jsonString, NewDatasetVo.class); List versionVos = new ArrayList(); if (fileDetailsAfterGitPull != null && fileDetailsAfterGitPull.size() > 0) { for (Map fileDetail : fileDetailsAfterGitPull) { From d38638359d3603f8fb515a7e18ca3943e4a2a852 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 14:12:11 +0800 Subject: [PATCH 232/381] clear test --- .../service/impl/NewDatasetServiceImpl.java | 7 ++--- .../com/ruoyi/platform/utils/ConvertUtil.java | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 4505f146..3e930b87 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -1,6 +1,5 @@ package com.ruoyi.platform.service.impl; -import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; @@ -12,7 +11,6 @@ import com.ruoyi.platform.service.GitService; import com.ruoyi.platform.service.NewDatasetService; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.GitProjectVo; -import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; @@ -188,7 +186,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); - NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); + NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject2(stringObjectMap, NewDatasetVo.class); //检查是否存在本地重名分支,有的话干掉 dvcUtils.deleteLocalBranch(localPath, branchName); // 创建本地分支 @@ -326,8 +324,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); - String jsonString = JSON.toJSONString(stringObjectMap); - NewDatasetVo newDatasetVo = JSON.parseObject(jsonString, NewDatasetVo.class); + NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject2(stringObjectMap, NewDatasetVo.class); List versionVos = new ArrayList(); if (fileDetailsAfterGitPull != null && fileDetailsAfterGitPull.size() > 0) { for (Map fileDetail : fileDetailsAfterGitPull) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index 14b859e5..0a4936bb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -98,6 +98,36 @@ public class ConvertUtil { return null; } + public static T convertMapToObject2(Map map, Class targetClass) { + try { + T targetObject = targetClass.newInstance(); + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + String camelCaseKey = toCamelCase(key); + + if (hasProperty(targetClass, camelCaseKey)) { + // 获取目标属性的类型 + Class propertyType = PropertyUtils.getPropertyType(targetObject, camelCaseKey); + + if (propertyType.isAssignableFrom(LinkedHashMap.class)) { + // 如果属性类型是 HashMap,则递归转换 + Map mapValue = (Map) value; + Object convertedValue = convertMapToObject(mapValue, propertyType); + PropertyUtils.setProperty(targetObject, camelCaseKey, convertedValue); + } else if (!(value instanceof LinkedHashMap)) { + PropertyUtils.setProperty(targetObject, camelCaseKey, value); + } + } + } + return targetObject; + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + e.printStackTrace(); + } + return null; + } + + private static boolean hasProperty(Class clazz, String propertyName) { try { Field field = clazz.getDeclaredField(propertyName); From 9a20ec2c2b0796e222ad896616d6873a0b64c3ac Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 14:43:23 +0800 Subject: [PATCH 233/381] clear test --- .../service/impl/NewDatasetServiceImpl.java | 5 ++++- .../com/ruoyi/platform/vo/NewDatasetVo.java | 2 +- .../src/main/resources/bootstrap.yml | 17 +++-------------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 3e930b87..dc07f176 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; @@ -11,6 +12,7 @@ import com.ruoyi.platform.service.GitService; import com.ruoyi.platform.service.NewDatasetService; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.GitProjectVo; +import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; @@ -324,7 +326,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); - NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject2(stringObjectMap, NewDatasetVo.class); + String jsonString = JacksonUtil.toJSONString(stringObjectMap); + NewDatasetVo newDatasetVo = JsonUtils.jsonToObject(jsonString, NewDatasetVo.class); List versionVos = new ArrayList(); if (fileDetailsAfterGitPull != null && fileDetailsAfterGitPull.size() > 0) { for (Map fileDetail : fileDetailsAfterGitPull) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index 245341ef..fb089000 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -11,8 +11,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class NewDatasetVo implements Serializable { diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 25460d4c..2102df19 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -14,23 +14,12 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 172.20.32.181:8848 - username: nacos - password: nacos - retry: - enabled: true - namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 + server-addr: 172.20.32.181:18847 config: - namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: 172.20.32.181:8848 + server-addr: 172.20.32.181:18847 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - group: DEFAULT_GROUP - refresh: true - - data-id: management-platform-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - group: DEFAULT_GROUP - refresh: true \ No newline at end of file + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} From 1e9a8e8f071cd56bf24f05d7962ac5ecb6b08b1c Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 14:49:36 +0800 Subject: [PATCH 234/381] clear test --- .../src/main/resources/bootstrap.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml index 2102df19..25460d4c 100644 --- a/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/management-platform/src/main/resources/bootstrap.yml @@ -14,12 +14,23 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 172.20.32.181:18847 + server-addr: 172.20.32.181:8848 + username: nacos + password: nacos + retry: + enabled: true + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 config: + namespace: 6caf5d79-c4ce-4e3b-a357-141b74e52a01 # 配置中心地址 - server-addr: 172.20.32.181:18847 + server-addr: 172.20.32.181:8848 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + group: DEFAULT_GROUP + refresh: true + - data-id: management-platform-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + group: DEFAULT_GROUP + refresh: true \ No newline at end of file From 1c76df184b6566f809406da10335fa3cb4e9ed3a Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 14:59:42 +0800 Subject: [PATCH 235/381] clear test --- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 2 +- .../src/main/java/com/ruoyi/platform/utils/ConvertUtil.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index dc07f176..477e7ccb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -188,7 +188,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); - NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject2(stringObjectMap, NewDatasetVo.class); + NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); //检查是否存在本地重名分支,有的话干掉 dvcUtils.deleteLocalBranch(localPath, branchName); // 创建本地分支 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index 0a4936bb..a4195a17 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -113,7 +113,7 @@ public class ConvertUtil { if (propertyType.isAssignableFrom(LinkedHashMap.class)) { // 如果属性类型是 HashMap,则递归转换 Map mapValue = (Map) value; - Object convertedValue = convertMapToObject(mapValue, propertyType); + Object convertedValue = convertMapToObject2(mapValue, propertyType); PropertyUtils.setProperty(targetObject, camelCaseKey, convertedValue); } else if (!(value instanceof LinkedHashMap)) { PropertyUtils.setProperty(targetObject, camelCaseKey, value); From f4fd5ed243700dcc702ae99e46afc2aacfbf94cb Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 15:09:01 +0800 Subject: [PATCH 236/381] clear test --- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 477e7ccb..030b5790 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -188,7 +188,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); - NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); + String jsonString = JacksonUtil.toJSONString(stringObjectMap); + NewDatasetVo newDatasetVo = JsonUtils.jsonToObject(jsonString, NewDatasetVo.class); //检查是否存在本地重名分支,有的话干掉 dvcUtils.deleteLocalBranch(localPath, branchName); // 创建本地分支 From 7e4a618aaffc73e9bc55625b8f027a32d8c0d0d4 Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Sun, 29 Sep 2024 16:02:29 +0800 Subject: [PATCH 237/381] add name --- .../com/ruoyi/platform/service/impl/ExperimentServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index d6232933..a6864342 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -472,6 +472,9 @@ public class ExperimentServiceImpl implements ExperimentService { //处理project数据 // 拼接需要的参数 Map projectMap = (Map) datasetPreprocessMap.get("project"); + String projectUrl = (String) projectMap.get("url"); + String projectName = projectUrl.substring(projectUrl.lastIndexOf('/') + 1, projectUrl.length() - 4); + projectMap.put("name", projectName); Map sourceParams = new HashMap<>(); sourceParams.put("name", experimentName); sourceParams.put("ins_id", experimentInsId); From e4c7b76192856864e606062c14fbc6e620b305e8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 30 Sep 2024 13:44:42 +0800 Subject: [PATCH 238/381] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/domain/Service.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java index 151f0cde..d94c47aa 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java @@ -19,6 +19,9 @@ public class Service implements Serializable { private String serviceType; + @TableField(exist = false) + private String serviceTypeName; + private String description; private String createBy; @@ -33,4 +36,18 @@ public class Service implements Serializable { @TableField(exist = false) private Integer versionCount; + + public String getServiceTypeName() { + switch (serviceType) { + case "image": + return "图片"; + case "video": + return "视频"; + case "audio": + return "音频"; + case "text": + return "文本"; + } + return null; + } } From 50bdd6643510cee9f55a4a0a83183c137c984794 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 8 Oct 2024 15:03:53 +0800 Subject: [PATCH 239/381] =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E4=BA=8E=E4=B8=8D=E5=90=8C=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/NewDatasetFromGitController.java | 4 +- .../ruoyi/platform/service/GitService.java | 3 + .../platform/service/NewDatasetService.java | 2 +- .../platform/service/impl/GitServiceImpl.java | 40 +++++--- .../service/impl/ModelsServiceImpl.java | 75 ++++++++++----- .../service/impl/NewDatasetServiceImpl.java | 93 ++++++++++++------- .../com/ruoyi/platform/utils/DVCUtils.java | 12 +-- .../ModelDependency1DaoMapper.xml | 1 + 8 files changed, 150 insertions(+), 80 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 5144cac7..62f5122a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -91,8 +91,8 @@ public class NewDatasetFromGitController { @DeleteMapping("/deleteDataset") @ApiOperation(value = "删除数据集") - public AjaxResult deleteDataset(@RequestParam("identifier") String repo, @RequestParam("owner") String owner) throws Exception { - this.newDatasetService.deleteDatasetNew(repo, owner); + public AjaxResult deleteDataset(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception { + this.newDatasetService.deleteDatasetNew(id, identifier, owner); return AjaxResult.success(); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java index 4d9e0952..85eea493 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.GitProjectVo; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -25,4 +26,6 @@ public interface GitService { void deleteBranch(String token,String owner, String projectName, String branchName, String localPath) throws Exception; Map getUserInfo(String token) throws Exception; + + Map getProjectDetail(String owner, String identifier, String token) throws IOException; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java index ff2003de..f43891ee 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -27,7 +27,7 @@ public interface NewDatasetService { List> getVersionList(String repo, String owner) throws Exception; - void deleteDatasetNew(String repo, String owner) throws Exception; + void deleteDatasetNew(Integer repoId, String repo, String owner) throws Exception; void deleteDatasetVersionNew(String repo, String owner, String version, String relativePath) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index ce582396..3fd29369 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -47,7 +47,7 @@ public class GitServiceImpl implements GitService { params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE"); try { // 发送POST请求 - String req = httpUtils.sendPost(gitendpoint + "/oauth/token", null,JsonUtils.mapToJson(params)); + String req = httpUtils.sendPost(gitendpoint + "/oauth/token", null, JsonUtils.mapToJson(params)); // 解析响应JSON if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -66,7 +66,7 @@ public class GitServiceImpl implements GitService { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); // 将access_token存入Redis - Jedis jedis = new Jedis(redisHost,redisPort); + Jedis jedis = new Jedis(redisHost, redisPort); jedis.set(ci4sUsername + "_gitToken", accessToken); jedis.set(ci4sUsername + "_gitUserInfo", userReq); return accessToken; @@ -77,7 +77,7 @@ public class GitServiceImpl implements GitService { } public String checkoutToken() { - Jedis jedis = new Jedis(redisHost,redisPort); + Jedis jedis = new Jedis(redisHost, redisPort); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String token = jedis.get(ci4sUsername + "_gitToken"); @@ -103,13 +103,13 @@ public class GitServiceImpl implements GitService { } @Override - public Map createProject(String token,GitProjectVo gitProjectVo) throws Exception { - String userReq = httpUtils.sendPostWithToken(gitendpoint + "/api/projects.json",null, token,JsonUtils.objectToJson(gitProjectVo)); + public Map createProject(String token, GitProjectVo gitProjectVo) throws Exception { + String userReq = httpUtils.sendPostWithToken(gitendpoint + "/api/projects.json", null, token, JsonUtils.objectToJson(gitProjectVo)); return JsonUtils.jsonToMap(userReq); } @Override - public void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception { + public void createBranch(String token, String owner, String projectName, String branchName, String oldBranchName) throws Exception { //https://www.gitlink.org.cn/api/v1/fanshuai/testdssa8755/branches.json // { // "new_branch_name": "SsS", @@ -119,21 +119,21 @@ public class GitServiceImpl implements GitService { Map resMap = new HashMap<>(); resMap.put("new_branch_name", branchName); resMap.put("old_branch_name", oldBranchName); - String req = httpUtils.sendPostWithToken(createBranchUrl, null, token,JsonUtils.objectToJson(resMap)); + String req = httpUtils.sendPostWithToken(createBranchUrl, null, token, JsonUtils.objectToJson(resMap)); System.out.println(req); } @Override - public void createTopic(String token,Integer id, String topicName) throws Exception { + public void createTopic(String token, Integer id, String topicName) throws Exception { // https://www.gitlink.org.cn/api/v1/project_topics.json Map resMap = new HashMap<>(); resMap.put("project_id", id); resMap.put("name", topicName); - String req = httpUtils.sendPostWithToken(gitendpoint + "/api/v1/project_topics.json",null, token ,JsonUtils.objectToJson(resMap)); + String req = httpUtils.sendPostWithToken(gitendpoint + "/api/v1/project_topics.json", null, token, JsonUtils.objectToJson(resMap)); } @Override - public List> getBrancheList(String token,String owner, String projectName) throws Exception { + public List> getBrancheList(String token, String owner, String projectName) throws Exception { String req = httpUtils.sendGetWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token); // 解析响应JSON if (StringUtils.isEmpty(req)) { @@ -145,25 +145,35 @@ public class GitServiceImpl implements GitService { } @Override - public void deleteProject(String token,String owner, String projectName) throws Exception { + public void deleteProject(String token, String owner, String projectName) throws Exception { httpUtils.sendDeleteWithToken(gitendpoint + "/api/" + owner + "/" + projectName + ".json", null, token); } @Override - public void deleteBranch(String token,String owner, String projectName, String branchName, String localPath) throws Exception { + public void deleteBranch(String token, String owner, String projectName, String branchName, String localPath) throws Exception { try (Git git = Git.open(new File(localPath))) { git.checkout().setName("master").call(); git.branchDelete().setBranchNames(branchName).setForce(true).call(); } catch (IOException | GitAPIException e) { - log.error("Exception occurred while creating local branch based on master",e); + log.error("Exception occurred while creating local branch based on master", e); } httpUtils.sendDeleteWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", null, token); } @Override public Map getUserInfo(String token) throws Exception { - String userReq = httpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json",null, token); - if (StringUtils.isEmpty(userReq)){ + String userReq = httpUtils.sendGetWithToken(gitendpoint + "/api/users/get_user_info.json", null, token); + if (StringUtils.isEmpty(userReq)) { + return null; + } + Map runResMap = JsonUtils.jsonToMap(userReq); + return runResMap; + } + + @Override + public Map getProjectDetail(String owner, String identifier, String token) throws IOException { + String userReq = httpUtils.sendGetWithToken(gitendpoint + "/api/" + owner + "/" + identifier + "/detail.json", null, token); + if (StringUtils.isEmpty(userReq)) { return null; } Map runResMap = JsonUtils.jsonToMap(userReq); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 514a0d36..dbd557e0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -602,12 +602,15 @@ public class ModelsServiceImpl implements ModelsService { String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); - String rootPath = localPath + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName; + String rootPath = localPath + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; - String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/model"; + String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName + "/model"; + + dvcUtils.gitClone(rootPath, projectUrl, "master", gitLinkUsername, gitLinkPassword); + dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); + dvcUtils.gitCheckoutBranch(rootPath, branchName); - dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); //干掉目标文件夹 dvcUtils.deleteDirectory(modelPath); dvcUtils.moveFiles(sourcePath, modelPath); @@ -661,11 +664,11 @@ public class ModelsServiceImpl implements ModelsService { // dvc 跟踪 dvcUtils.dvcAdd(rootPath, "model"); // git commit - dvcUtils.gitAdd(rootPath, "."); dvcUtils.gitCommit(rootPath, "commit from ci4s with " + ci4sUsername); dvcUtils.gitPush(rootPath, gitLinkUsername, gitLinkPassword); dvcUtils.dvcPush(rootPath); } catch (Exception e) { + logger.error(e.getMessage(), e); throw new RuntimeException(e); } return null; @@ -699,14 +702,18 @@ public class ModelsServiceImpl implements ModelsService { String owner = (String) userInfo.get("login"); String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; - String rootPath = localPath + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName; + String rootPath = localPath + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; String modelPath = rootPath + "/model"; String metaPath = rootPath + "/metadata"; - String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/model"; + String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName + "/model"; - //部分信息在前面的版本里面,从那边取过来 - Map stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml"); - ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + //克隆 + dvcUtils.gitClone(rootPath, projectUrl, oldModelDependencys.get(0).getVersion(), gitLinkUsername, gitLinkPassword); + dvcUtils.refreshRemoteBranches(rootPath, gitLinkUsername, gitLinkPassword, oldModelDependencys.get(0).getVersion()); + + //查询项目信息 + String token = gitService.checkoutToken(); + Map projectDetail = gitService.getProjectDetail(owner, repositoryName, token); //检查是否存在本地重名分支,有的话干掉 dvcUtils.deleteLocalBranch(rootPath, branchName); @@ -757,9 +764,20 @@ public class ModelsServiceImpl implements ModelsService { "
"); modelMetaVo.setIdentifier(repositoryName); modelMetaVo.setOwner(owner); - modelMetaVo.setDescription(oldModelVo.getDescription()); - modelMetaVo.setModelTag(oldModelVo.getModelTag()); - modelMetaVo.setModelType(oldModelVo.getModelType()); + modelMetaVo.setDescription((String) projectDetail.get("description")); + List topics = (List) projectDetail.get("topics"); + if (topics != null && topics.size() > 0) { + for (Map topic : topics) { + String topicName = (String) topic.get("name"); + if (topicName.startsWith("modeltag-")) { + modelMetaVo.setModelTag(topicName.substring("modeltag-".length())); + } + if (topicName.startsWith("modeltype-")) { + modelMetaVo.setModelType(topicName.substring("modeltype-".length())); + } + } + } + modelMetaVo.setRelativePaths(relatePath); File folder = new File(modelPath); long folderSize = FileUtil.getFolderSize(folder); @@ -814,15 +832,18 @@ public class ModelsServiceImpl implements ModelsService { dvcUtils.dvcAdd(rootPath, "model"); dvcUtils.pushNewBranchToRemote(rootPath, gitLinkUsername, gitLinkPassword, branchName); - CompletableFuture.supplyAsync(() -> { - try { - //dvc push 到远程S3 - dvcUtils.dvcPush(rootPath); - } catch (Exception e) { - throw new RuntimeException(e); - } - return null; - }); + //dvc push 到远程S3 + dvcUtils.dvcPush(rootPath); + +// CompletableFuture.supplyAsync(() -> { +// try { +// //dvc push 到远程S3 +// dvcUtils.dvcPush(rootPath); +// } catch (Exception e) { +// throw new RuntimeException(e); +// } +// return null; +// }); } return "新增模型版本成功"; } @@ -860,7 +881,7 @@ public class ModelsServiceImpl implements ModelsService { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String localPath1 = localPath + ci4sUsername + "/model/" + id + "/" + identifier; + String localPath1 = localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/" + version; // 打包 data 文件夹 String dataFolderPath = localPath1 + "/model"; String zipFilePath = localPath1 + "/model.zip"; @@ -980,7 +1001,7 @@ public class ModelsServiceImpl implements ModelsService { // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, identifier, version, "model", gitLinkUsername, gitLinkPassword); - Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/metadata/metadata.yaml"); + Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/" + version + "/metadata/metadata.yaml"); String jsonString = JSON.toJSONString(stringObjectMap); ModelsVo modelsVo = JSON.parseObject(jsonString, ModelsVo.class); @@ -1030,12 +1051,17 @@ public class ModelsServiceImpl implements ModelsService { map.put("identifier", identifier); String parentModel = JSON.toJSONString(map); modelDependency1Dao.deleteModelDependency(parentModel); + + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + dvcUtils.deleteDirectory(localPath + "/" + ci4sUsername + "/model/" + repoId + "/" + identifier); } @Override public void deleteVersion(Integer repoId, String identifier, String owner, String version, String relativePath) throws Exception { String token = gitService.checkoutToken(); - gitService.deleteBranch(token, owner, identifier, version, localPath + relativePath); + String rootPath = Paths.get(localPath + "/" + relativePath).getParent().toString(); + gitService.deleteBranch(token, owner, identifier, version, rootPath); //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, version); HashMap map = new HashMap<>(); @@ -1044,6 +1070,7 @@ public class ModelsServiceImpl implements ModelsService { map.put("version", version); String parentModel = JSON.toJSONString(map); modelDependency1Dao.deleteModelDependency(parentModel); + dvcUtils.deleteDirectory(rootPath); } public List convert(List> lst, String modelTopic, String modelTagName, String modelTypeName) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 030b5790..69dda5b8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -1,23 +1,22 @@ package com.ruoyi.platform.service.impl; -import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.DatasetTempStorage; import com.ruoyi.platform.service.DatasetTempStorageService; -import com.ruoyi.platform.service.DvcService; import com.ruoyi.platform.service.GitService; import com.ruoyi.platform.service.NewDatasetService; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.GitProjectVo; -import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -47,11 +46,11 @@ import java.util.zip.ZipOutputStream; @Service public class NewDatasetServiceImpl implements NewDatasetService { + private static final Logger logger = LoggerFactory.getLogger(NewDatasetServiceImpl.class); + @Resource private GitService gitService; - @Resource - private DvcService dvcService; @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") @@ -105,17 +104,20 @@ public class NewDatasetServiceImpl implements NewDatasetService { } // 创建分支 String branchName = datasetVo.getVersion(); + String owner = (String) userInfo.get("login"); + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); // 定义标签 标签1:ci4s-dataset 标签2:DataTag 标签3:DataType gitService.createTopic(token, gitlinIid, "ci4s-dataset"); gitService.createTopic(token, gitlinIid, "datatag-" + datasetVo.getDataTag()); gitService.createTopic(token, gitlinIid, "datatype-" + datasetVo.getDataType()); + // 得到项目地址 - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; + String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; // 得到用户操作的路径 String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String relatePath = ci4sUsername + "/datasets/" + gitlinIid + "/" + repositoryName; + String relatePath = ci4sUsername + "/datasets/" + gitlinIid + "/" + repositoryName + "/" + branchName; String localPath = localPathlocal + relatePath; String datasetPath = localPath + "/dataset"; @@ -137,7 +139,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { ""); datasetVo.setIdentifier(repositoryName); datasetVo.setId(gitlinIid); - datasetVo.setOwner((String) userInfo.get("login")); + datasetVo.setOwner(owner); datasetVo.setRelativePaths(relatePath + "/dataset"); addDatasetSourceToDataVo(datasetVo); @@ -161,6 +163,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { // dvc push 到远程S3 dvcUtils.dvcPush(localPath); } catch (Exception e) { + logger.error(e.getMessage(), e); throw new RuntimeException(e); } return null; @@ -179,17 +182,26 @@ public class NewDatasetServiceImpl implements NewDatasetService { Map userInfo = JsonUtils.jsonToMap(userReq); // 创建分支 String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); + String owner = (String) userInfo.get("login"); + String repositoryName = datasetVo.getIdentifier(); String sourcePath = datasetVo.getDatasetVersionVos().get(0).getUrl(); - String relatePath = ci4sUsername + "/datasets/" + datasetVo.getId() + "/" + repositoryName; + String relatePath = ci4sUsername + "/datasets/" + datasetVo.getId() + "/" + repositoryName + "/" + branchName; String localPath = localPathlocal + relatePath; String datasetPath = localPath + "/dataset"; - String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + repositoryName + ".git"; + String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; + + //查询项目信息 + Map projectDetail = gitService.getProjectDetail(owner, repositoryName, token); + + //克隆 + List> brancheList = gitService.getBrancheList(token, owner, repositoryName); + String oldBranch = (String) brancheList.stream() + .filter(branch -> !"master".equals(branch.get("name"))).collect(Collectors.toList()).get(0).get("name"); + + dvcUtils.gitClone(localPath, projectUrl, oldBranch, gitLinkUsername, gitLinkPassword); + dvcUtils.refreshRemoteBranches(localPath, gitLinkUsername, gitLinkPassword, oldBranch); - //部分信息在前面的版本里面,从那边取过来 - Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); - String jsonString = JacksonUtil.toJSONString(stringObjectMap); - NewDatasetVo newDatasetVo = JsonUtils.jsonToObject(jsonString, NewDatasetVo.class); //检查是否存在本地重名分支,有的话干掉 dvcUtils.deleteLocalBranch(localPath, branchName); // 创建本地分支 @@ -225,9 +237,19 @@ public class NewDatasetServiceImpl implements NewDatasetService { datasetVo.setIdentifier(repositoryName); datasetVo.setOwner((String) userInfo.get("login")); - datasetVo.setDescription(newDatasetVo.getDescription()); - datasetVo.setDataTag(newDatasetVo.getDataTag()); - datasetVo.setDataType(newDatasetVo.getDataType()); + datasetVo.setDescription((String) projectDetail.get("description")); + List topics = (List) projectDetail.get("topics"); + if (topics != null && topics.size() > 0) { + for (Map topic : topics) { + String topicName = (String) topic.get("name"); + if (topicName.startsWith("datatag-")) { + datasetVo.setDataTag(topicName.substring("datatag-".length())); + } + if (topicName.startsWith("datatype-")) { + datasetVo.setDataType(topicName.substring("datatype-".length())); + } + } + } datasetVo.setRelativePaths(relatePath + "/dataset"); datasetVo = addDatasetSourceToDataVo(datasetVo); @@ -244,15 +266,17 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.dvcAdd(localPath, "dataset"); dvcUtils.pushNewBranchToRemote(localPath, gitLinkUsername, gitLinkPassword, branchName); - CompletableFuture.supplyAsync(() -> { - try { - //dvc push 到远程S3 - dvcUtils.dvcPush(localPath); - } catch (Exception e) { - throw new RuntimeException(e); - } - return null; - }); + dvcUtils.dvcPush(localPath); + +// CompletableFuture.supplyAsync(() -> { +// try { +// //dvc push 到远程S3 +// dvcUtils.dvcPush(localPath); +// } catch (Exception e) { +// throw new RuntimeException(e); +// } +// return null; +// }); return "新增数据集成功"; } @@ -326,7 +350,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { } List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 - Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + "dataset.yaml"); + Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + version + "/dataset.yaml"); String jsonString = JacksonUtil.toJSONString(stringObjectMap); NewDatasetVo newDatasetVo = JsonUtils.jsonToObject(jsonString, NewDatasetVo.class); List versionVos = new ArrayList(); @@ -354,15 +378,22 @@ public class NewDatasetServiceImpl implements NewDatasetService { } @Override - public void deleteDatasetNew(String repo, String owner) throws Exception { + public void deleteDatasetNew(Integer repoId, String repo, String owner) throws Exception { String token = gitService.checkoutToken(); gitService.deleteProject(token, owner, repo); + + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + dvcUtils.deleteDirectory(localPathlocal + "/" + ci4sUsername + "/datasets/" + repoId + "/" + repo); + } @Override public void deleteDatasetVersionNew(String repo, String owner, String version, String relativePath) throws Exception { String token = gitService.checkoutToken(); - gitService.deleteBranch(token, owner, repo, version, localPathlocal + relativePath); + String rootPath = Paths.get(localPathlocal + "/" + relativePath).getParent().toString(); + gitService.deleteBranch(token, owner, repo, version, rootPath); + dvcUtils.deleteDirectory(rootPath); } @Override @@ -418,7 +449,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { public ResponseEntity downloadAllDatasetFilesNew(String name, String identifier, Integer id, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); - String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + identifier; + String localPath = localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + identifier + "/" + version; // 打包 data 文件夹 String dataFolderPath = localPath + "/dataset"; @@ -512,7 +543,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { if (datasetTempStorage != null) { String source = datasetTempStorage.getSource(); Map sourceMap = JacksonUtil.parseJSONStr2Map(source); - Map preprocessCode = (Map) sourceMap.get("preprocess_code"); + Map preprocessCode = (Map) sourceMap.get("preprocess_code"); sourceMap.remove("preprocess_code"); datasetVo.setTrainTask((HashMap) sourceMap); datasetVo.setProcessingCode((HashMap) preprocessCode); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 730b5f5a..fd307914 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -71,9 +71,9 @@ public class DVCUtils { Path sourceDir = Paths.get(sourcePath); Path targetDir = Paths.get(targetPath); -// if (!Files.exists(targetDir)) { -// Files.createDirectories(targetDir); -// } + if (!Files.exists(targetDir)) { + Files.createDirectories(targetDir); + } Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); } @@ -88,8 +88,6 @@ public class DVCUtils { .filter(path -> !path.equals(directory)) .sorted(Comparator.reverseOrder()) // 先删除子文件夹,再删除父文件夹 .forEach(this::deletePath); - } else { - Files.createDirectories(directory); } } @@ -629,9 +627,9 @@ public class DVCUtils { public List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) { try { //刷新 - refreshRemoteBranches(localPath+"/"+repoFolder, username, password,branch); + refreshRemoteBranches(localPath+"/" + repoFolder + "/"+ branch, username, password,branch); // 读取data文件夹中的文件列表 - String path = localPath + "/" + repoFolder + "/" + filePath; + String path = localPath + "/" + repoFolder + "/"+ branch + "/" + filePath; return FileUtil.getFiles(path); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 596c931a..37f89d41 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -22,6 +22,7 @@ and owner = #{owner} + order by create_time + + insert into service(service_name, service_type, description, create_by, update_by) values (#{service.serviceName}, #{service.serviceType}, #{service.description}, #{service.createBy}, #{service.updateBy}) From 0fff649bca404f289d71c919b7a22d6e7703fab6 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 8 Oct 2024 16:16:44 +0800 Subject: [PATCH 241/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/domain/Service.java | 2 +- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java index d94c47aa..b8383ca0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Service.java @@ -35,7 +35,7 @@ public class Service implements Serializable { private Integer state; @TableField(exist = false) - private Integer versionCount; + private Long versionCount; public String getServiceTypeName() { switch (serviceType) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 2440179d..efb91505 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -128,6 +128,11 @@ public class ServiceServiceImpl implements ServiceService { @Override public com.ruoyi.platform.domain.Service getService(Long id) { + com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(id); + + ServiceVersion serviceVersion = new ServiceVersion(); + serviceVersion.setServiceId(id); + service.setVersionCount(serviceDao.countServiceVersion(serviceVersion)); return serviceDao.getServiceById(id); } From 88cf4463b4ec67b9d327083bd6f728ad2a72c5ea Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 8 Oct 2024 17:03:46 +0800 Subject: [PATCH 242/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BDbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/managementPlatform/ServiceDaoMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml index 8e4e3259..9ea043ae 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml @@ -82,7 +82,7 @@ insert into service_version(service_id, version, model, description, image, resource, replicas, mount_path, env_variables, code_config, command, create_by, update_by) values (#{serviceVersion.serviceId}, #{serviceVersion.version}, #{serviceVersion.model}, #{serviceVersion.description}, #{serviceVersion.image}, - #{serviceVersion.replicas}, #{serviceVersion.mountPath}, #{serviceVersion.envVariables}, + #{serviceVersion.resource}, #{serviceVersion.replicas}, #{serviceVersion.mountPath}, #{serviceVersion.envVariables}, #{serviceVersion.codeConfig}, #{serviceVersion.command}, #{serviceVersion.createBy}, #{serviceVersion.updateBy}) From 9f7ac38620749be8500d6080c0dd5d1cbb3a04ce Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 11:06:02 +0800 Subject: [PATCH 243/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/service/ServiceController.java | 43 +++-- .../com/ruoyi/platform/mapper/ServiceDao.java | 3 + .../platform/service/ServiceService.java | 11 +- .../service/impl/ServiceServiceImpl.java | 167 ++++++++++++------ .../vo/serviceVos/ServiceCodeConfigVo.java | 13 ++ .../vo/serviceVos/ServiceModelVo.java | 22 +++ .../vo/serviceVos/ServiceVersionVo.java | 56 ++++++ .../managementPlatform/ServiceDaoMapper.xml | 25 ++- 8 files changed, 263 insertions(+), 77 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index e74de944..3b57695a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -5,6 +5,7 @@ import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.Service; import com.ruoyi.platform.domain.ServiceVersion; import com.ruoyi.platform.service.ServiceService; +import com.ruoyi.platform.vo.serviceVos.ServiceVersionVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; @@ -26,15 +27,29 @@ public class ServiceController extends BaseController { @GetMapping @ApiOperation("分页查询服务列表") - public GenericsAjaxResult> queryByPageService(Service service, int page, int size) throws IOException { + public GenericsAjaxResult> queryByPageService(@RequestParam(value = "service_name", required = false) String serviceName, + @RequestParam(value = "service_type", required = false) String serviceType, + @RequestParam("page") int page, + @RequestParam("size") int size) throws IOException { + Service service = new Service(); + service.setServiceName(serviceName); + service.setServiceType(serviceType); PageRequest pageRequest = PageRequest.of(page, size); return genericsSuccess(serviceService.queryByPageService(service, pageRequest)); } @GetMapping("/serviceVersion") @ApiOperation("分页查询服务版本列表") - public GenericsAjaxResult> queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) throws IOException { - return genericsSuccess(serviceService.queryByPageServiceVersion(serviceVersion, page, size)); + public GenericsAjaxResult> queryByPageServiceVersion(@RequestParam(value = "run_state", required = false) String runState, + @RequestParam(value = "version", required = false) String version, + @RequestParam("service_id") Long serviceId, + @RequestParam("page") int page, + @RequestParam("size") int size) throws IOException { + ServiceVersion serviceVersion = new ServiceVersion(); + serviceVersion.setRunState(runState); + serviceVersion.setVersion(version); + serviceVersion.setServiceId(serviceId); + return genericsSuccess(serviceService.queryByPageServiceVersion(serviceVersion, page, size)); } @PostMapping @@ -45,8 +60,8 @@ public class ServiceController extends BaseController { @PostMapping("/serviceVersion") @ApiOperation("新增服务版本") - public GenericsAjaxResult addServiceVersion(@RequestBody ServiceVersion serviceVersion) { - return genericsSuccess(serviceService.addServiceVersion(serviceVersion)); + public GenericsAjaxResult addServiceVersion(@RequestBody ServiceVersionVo serviceVersionVo) { + return genericsSuccess(serviceService.addServiceVersion(serviceVersionVo)); } @PutMapping @@ -57,25 +72,25 @@ public class ServiceController extends BaseController { @PutMapping("/serviceVersion") @ApiOperation("编辑服务版本") - public GenericsAjaxResult editServiceVersion(@RequestBody ServiceVersion serviceVersion) { - return genericsSuccess(serviceService.editServiceVersion(serviceVersion)); + public GenericsAjaxResult editServiceVersion(@RequestBody ServiceVersionVo serviceVersionVo) { + return genericsSuccess(serviceService.editServiceVersion(serviceVersionVo)); } @GetMapping("/serviceDetail/{id}") @ApiOperation("查询服务详细信息") - public GenericsAjaxResult getService(@PathVariable("id") Long id){ + public GenericsAjaxResult getService(@PathVariable("id") Long id) { return genericsSuccess(serviceService.getService(id)); } @GetMapping("/serviceVersionDetail/{id}") @ApiOperation("查询服务版本详细信息") - public GenericsAjaxResult getServiceVersion(@PathVariable("id") Long id) { + public GenericsAjaxResult getServiceVersion(@PathVariable("id") Long id) { return genericsSuccess(serviceService.getServiceVersion(id)); } @GetMapping("/serviceVersionList/{id}") @ApiOperation("查询服务版本列表") - public GenericsAjaxResult> serviceVersionList(@PathVariable("id") Long id){ + public GenericsAjaxResult> serviceVersionList(@PathVariable("id") Long id) { return genericsSuccess(serviceService.serviceVersionList(id)); } @@ -105,20 +120,20 @@ public class ServiceController extends BaseController { @PutMapping("/updateServiceVersion") @ApiOperation("更新服务版本") - public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { + public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); } @GetMapping("/getServiceVersionLog/{id}") @ApiOperation("获取服务版本日志") public GenericsAjaxResult getServiceVersionLog(@PathVariable("id") Long id, - @RequestParam String startTime, @RequestParam String endTime){ - return genericsSuccess(serviceService.getServiceVersionLog(id,startTime,endTime)); + @RequestParam("start_time") String startTime, @RequestParam("end_time") String endTime) { + return genericsSuccess(serviceService.getServiceVersionLog(id, startTime, endTime)); } @GetMapping("/getServiceVersionDocs/{id}") @ApiOperation("获取服务版本文档") - public GenericsAjaxResult> getServiceVersionDocs(@PathVariable("id") Long id){ + public GenericsAjaxResult> getServiceVersionDocs(@PathVariable("id") Long id) { return genericsSuccess(serviceService.getServiceVersionDocs(id)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java index 55549a2f..b359812c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ServiceDao.java @@ -33,4 +33,7 @@ public interface ServiceDao { List getServiceVersionList(@Param("serviceId") Long serviceId); + Service getServiceByName(@Param("serviceName") String serviceName); + + ServiceVersion getSvByVersion(@Param("version") String version, @Param("serviceId") Long serviceId); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index 0fa439a6..d4e62528 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.Service; import com.ruoyi.platform.domain.ServiceVersion; +import com.ruoyi.platform.vo.serviceVos.ServiceVersionVo; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -12,19 +13,19 @@ import java.util.Map; public interface ServiceService { Page queryByPageService(Service service, PageRequest pageRequest) throws IOException; - Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) throws IOException; + Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) throws IOException; Service addService(Service service); - ServiceVersion addServiceVersion(ServiceVersion serviceVersion); + ServiceVersion addServiceVersion(ServiceVersionVo serviceVersionVo); Service editService(Service service); - ServiceVersion editServiceVersion(ServiceVersion serviceVersion); + String editServiceVersion(ServiceVersionVo serviceVersionVo); Service getService(Long id); - ServiceVersion getServiceVersion(Long id); + ServiceVersionVo getServiceVersion(Long id); String deleteService(Long id); @@ -34,7 +35,7 @@ public interface ServiceService { String stopServiceVersion(Long id); - ServiceVersion updateServiceVersion(ServiceVersion serviceVersion); + String updateServiceVersion(ServiceVersion serviceVersion); String getServiceVersionLog(Long id, String startTime, String endTime); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index efb91505..f2618ed9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -9,8 +9,12 @@ import com.ruoyi.platform.mapper.ServiceDao; import com.ruoyi.platform.service.ServiceService; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; +import com.ruoyi.platform.vo.serviceVos.ServiceCodeConfigVo; +import com.ruoyi.platform.vo.serviceVos.ServiceModelVo; +import com.ruoyi.platform.vo.serviceVos.ServiceVersionVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -18,6 +22,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,7 +48,7 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) { + public Page queryByPageServiceVersion(ServiceVersion serviceVersion, int page, int size) { PageRequest pageRequest; if (StringUtils.isNotEmpty(serviceVersion.getRunState())) { pageRequest = PageRequest.of(page, Integer.MAX_VALUE); @@ -51,13 +56,22 @@ public class ServiceServiceImpl implements ServiceService { List deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList()); Map runStates = getRunState(deploymentNames); - updateRunState(runStates); + if (runStates != null) { + updateRunState(runStates, serviceVersions); + } - List result = serviceVersions.stream().filter(serviceVersion1 -> { - String runState = runStates.get(serviceVersion1.getDeploymentName()); - return serviceVersion1.getRunState().equals(runState); + List serviceVersionList = serviceVersions.stream().filter(serviceVersion1 -> { + String runState; + if (runStates != null) { + runState = runStates.get(serviceVersion1.getDeploymentName()); + } else { + runState = serviceVersion1.getRunState(); + } + return serviceVersion.getRunState().equals(runState); }).collect(Collectors.toList()); + List result = getServiceVersionVoList(serviceVersionList); + PageRequest.of(page, size); return new PageImpl<>(result, pageRequest, result.size()); } else { @@ -67,33 +81,22 @@ public class ServiceServiceImpl implements ServiceService { List deploymentNames = serviceVersions.stream().map(ServiceVersion::getDeploymentName).collect(Collectors.toList()); Map runStates = getRunState(deploymentNames); - updateRunState(runStates); - - return new PageImpl<>(serviceVersions, pageRequest, total); - } - } - - Map getRunState(List deploymentNames) { - HashMap paramMap = new HashMap<>(); - paramMap.put("deployment_names", deploymentNames); - String req = HttpUtils.sendPost(argoUrl + modelService + "/getStatus", JSON.toJSONString(paramMap)); - if (StringUtils.isNotEmpty(req)) { - Map reqMap = JacksonUtil.parseJSONStr2Map(req); - Map> data = (Map>) reqMap.get("data"); - return data.get("status"); - } else { - return null; - } - } + if (runStates != null) { + updateRunState(runStates, serviceVersions); + } + List result = getServiceVersionVoList(serviceVersions); - void updateRunState(Map runStates) { - for (Map.Entry entry : runStates.entrySet()) { - serviceDao.updateRunState(entry.getKey(), entry.getValue()); + return new PageImpl<>(result, pageRequest, total); } } @Override public com.ruoyi.platform.domain.Service addService(com.ruoyi.platform.domain.Service service) { + com.ruoyi.platform.domain.Service serviceByName = serviceDao.getServiceByName(service.getServiceName()); + if (serviceByName != null) { + throw new RuntimeException("服务名称已存在,无法新增"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); service.setCreateBy(loginUser.getUsername()); service.setUpdateBy(loginUser.getUsername()); @@ -102,11 +105,18 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public ServiceVersion addServiceVersion(ServiceVersion serviceVersion) { - LoginUser loginUser = SecurityUtils.getLoginUser(); - serviceVersion.setCreateBy(loginUser.getUsername()); - serviceVersion.setUpdateBy(loginUser.getUsername()); + public ServiceVersion addServiceVersion(ServiceVersionVo serviceVersionVo) { + ServiceVersion svByVersion = serviceDao.getSvByVersion(serviceVersionVo.getVersion(), serviceVersionVo.getServiceId()); + if (svByVersion != null) { + throw new RuntimeException("服务版本已存在,无法新增"); + } + + ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); +// LoginUser loginUser = SecurityUtils.getLoginUser(); +// serviceVersion.setCreateBy(loginUser.getUsername()); +// serviceVersion.setUpdateBy(loginUser.getUsername()); serviceDao.insertServiceVersion(serviceVersion); + runServiceVersion(serviceVersion.getId()); return serviceVersion; } @@ -119,47 +129,45 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public ServiceVersion editServiceVersion(ServiceVersion serviceVersion) { + public String editServiceVersion(ServiceVersionVo serviceVersionVo) { + ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); + LoginUser loginUser = SecurityUtils.getLoginUser(); serviceVersion.setUpdateBy(loginUser.getUsername()); serviceDao.updateServiceVersion(serviceVersion); - return serviceDao.getServiceVersionById(serviceVersion.getId()); + return "修改成功"; } @Override public com.ruoyi.platform.domain.Service getService(Long id) { - com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(id); - - ServiceVersion serviceVersion = new ServiceVersion(); - serviceVersion.setServiceId(id); - service.setVersionCount(serviceDao.countServiceVersion(serviceVersion)); return serviceDao.getServiceById(id); } @Override - public ServiceVersion getServiceVersion(Long id) { - return serviceDao.getServiceVersionById(id); + public ServiceVersionVo getServiceVersion(Long id) { + ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + return getServiceVersionVo(serviceVersion); } @Override public String deleteService(Long id) { com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(id); if (service == null) { - return "服务不存在"; + throw new RuntimeException("服务不存在"); } LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); String createBy = service.getCreateBy(); if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createBy))) { - return "无权限删除该服务"; + throw new RuntimeException("无权限删除该服务"); } ServiceVersion serviceVersion = new ServiceVersion(); serviceVersion.setServiceId(id); long versionCount = serviceDao.countServiceVersion(serviceVersion); if (versionCount != 0) { - return "该服务下还有版本,不能删除"; + throw new RuntimeException("该服务下还有版本,不能删除"); } service.setState(Constant.State_invalid); @@ -176,6 +184,7 @@ public class ServiceServiceImpl implements ServiceService { @Override public String runServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); HashMap paramMap = new HashMap<>(); paramMap.put("service_name", service.getServiceName()); @@ -193,11 +202,11 @@ public class ServiceServiceImpl implements ServiceService { Map reqMap = JacksonUtil.parseJSONStr2Map(req); if ((Integer) reqMap.get("code") == 200) { Map data = (Map) reqMap.get("data"); - serviceVersion.setUrl(data.get("url")); - serviceVersion.setDeploymentName(data.get("deployment_name")); - serviceVersion.setSvcName(data.get("svc_name")); - serviceVersion.setRunState(Constant.Init); - editServiceVersion(serviceVersion); + serviceVersionVo.setUrl(data.get("url")); + serviceVersionVo.setDeploymentName(data.get("deployment_name")); + serviceVersionVo.setSvcName(data.get("svc_name")); + serviceVersionVo.setRunState(Constant.Init); + editServiceVersion(serviceVersionVo); return "启动成功"; } else { throw new RuntimeException("启动失败"); @@ -210,12 +219,13 @@ public class ServiceServiceImpl implements ServiceService { @Override public String stopServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); + ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); HashMap paramMap = new HashMap<>(); paramMap.put("deployment_name", serviceVersion.getDeploymentName()); String req = HttpUtils.sendPost(argoUrl + modelService + "/stop", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { - serviceVersion.setRunState(Constant.Stopped); - editServiceVersion(serviceVersion); + serviceVersionVo.setRunState(Constant.Stopped); + editServiceVersion(serviceVersionVo); return "停止成功"; } else { throw new RuntimeException("停止失败"); @@ -223,7 +233,7 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public ServiceVersion updateServiceVersion(ServiceVersion serviceVersion) { + public String updateServiceVersion(ServiceVersion serviceVersion) { HashMap paramMap = new HashMap<>(); paramMap.put("deployment_name", serviceVersion.getDeploymentName()); HashMap updateMap = new HashMap<>(); @@ -232,7 +242,8 @@ public class ServiceServiceImpl implements ServiceService { paramMap.put("update_model", JSON.toJSONString(updateMap)); String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { - return editServiceVersion(serviceVersion); + ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); + return editServiceVersion(serviceVersionVo); } else { throw new RuntimeException("更新失败"); } @@ -275,4 +286,58 @@ public class ServiceServiceImpl implements ServiceService { return serviceDao.getServiceVersionList(id); } + + ServiceVersion getServiceVersion(ServiceVersionVo serviceVersionVo) { + ServiceVersion serviceVersion = new ServiceVersion(); + BeanUtils.copyProperties(serviceVersionVo, serviceVersion); + serviceVersion.setModel(JSON.toJSONString(serviceVersionVo.getModel())); + serviceVersion.setCodeConfig(JSON.toJSONString(serviceVersionVo.getCodeConfig())); + + return serviceVersion; + } + + List getServiceVersionVoList(List serviceVersionList) { + List result = new ArrayList<>(); + + for (ServiceVersion sv : serviceVersionList) { + ServiceVersionVo serviceVersionVo = getServiceVersionVo(sv); + result.add(serviceVersionVo); + } + return result; + } + + ServiceVersionVo getServiceVersionVo(ServiceVersion sv) { + ServiceVersionVo serviceVersionVo = new ServiceVersionVo(); + BeanUtils.copyProperties(sv, serviceVersionVo); + ServiceModelVo serviceModelVo = JSON.parseObject(sv.getModel(), ServiceModelVo.class); + serviceVersionVo.setModel(serviceModelVo); + + ServiceCodeConfigVo serviceCodeConfigVo = JSON.parseObject(sv.getCodeConfig(), ServiceCodeConfigVo.class); + serviceVersionVo.setCodeConfig(serviceCodeConfigVo); + return serviceVersionVo; + } + + Map getRunState(List deploymentNames) { + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_names", deploymentNames); + String req = HttpUtils.sendPost(argoUrl + modelService + "/getStatus", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + Map> data = (Map>) reqMap.get("data"); + if (data != null) { + return data.get("status"); + } + return null; + } else { + return null; + } + } + + void updateRunState(Map runStates, List serviceVersionList) { + for (ServiceVersion sv : serviceVersionList) { + String runState = runStates.get(sv.getDeploymentName()); + sv.setRunState(runState); + serviceDao.updateRunState(sv.getDeploymentName(), runState); + } + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java new file mode 100644 index 00000000..0e971fc6 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java @@ -0,0 +1,13 @@ +package com.ruoyi.platform.vo.serviceVos; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +public class ServiceCodeConfigVo { + private String codePath; + + private String branch; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java new file mode 100644 index 00000000..08c5daf3 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java @@ -0,0 +1,22 @@ +package com.ruoyi.platform.vo.serviceVos; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +public class ServiceModelVo { + + private String id; + + private String name; + + private String version; + + private String path; + + private String identifier; + + private String owner; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java new file mode 100644 index 00000000..a2b80926 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java @@ -0,0 +1,56 @@ +package com.ruoyi.platform.vo.serviceVos; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.Date; +import java.util.Map; + +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel("服务版本") +@Data +public class ServiceVersionVo { + private Long id; + + private Long serviceId; + + private String version; + + private String description; + + private ServiceModelVo model; + + private String image; + + private String resource; + + private Integer replicas; + + private String mountPath; + + private Map envVariables; + + private ServiceCodeConfigVo codeConfig; + + private String command; + + private String url; + + private String createBy; + + private String updateBy; + + private Date createTime; + + private Date updateTime; + + private Integer state; + + private String runState; + + private String deploymentName; + + private String svcName; +} diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml index 9ea043ae..fc21d3cb 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ServiceDaoMapper.xml @@ -8,7 +8,7 @@ and service_name like concat('%', #{service.serviceName}, '%') - + and service_type = #{service.serviceType} @@ -22,7 +22,7 @@ and a.service_name like concat('%', #{service.serviceName}, '%') - + and a.service_type = #{service.serviceType} @@ -56,9 +56,10 @@ - + + + + + insert into service(service_name, service_type, description, create_by, update_by) values (#{service.serviceName}, #{service.serviceType}, #{service.description}, #{service.createBy}, #{service.updateBy}) - + insert into service_version(service_id, version, model, description, image, resource, replicas, mount_path, env_variables, code_config, command, create_by, update_by) values (#{serviceVersion.serviceId}, #{serviceVersion.version}, #{serviceVersion.model}, #{serviceVersion.description}, #{serviceVersion.image}, From 47990f49b7e892c1c82e88394280636ca5411fed Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 11:19:10 +0800 Subject: [PATCH 244/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index f2618ed9..aca6a7ab 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -112,9 +112,9 @@ public class ServiceServiceImpl implements ServiceService { } ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); -// LoginUser loginUser = SecurityUtils.getLoginUser(); -// serviceVersion.setCreateBy(loginUser.getUsername()); -// serviceVersion.setUpdateBy(loginUser.getUsername()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + serviceVersion.setCreateBy(loginUser.getUsername()); + serviceVersion.setUpdateBy(loginUser.getUsername()); serviceDao.insertServiceVersion(serviceVersion); runServiceVersion(serviceVersion.getId()); return serviceVersion; From 9ca32439a6a8cd9ec632730887245fff516be576 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 14:39:26 +0800 Subject: [PATCH 245/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java | 2 ++ .../java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java index 0e971fc6..512ae784 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceCodeConfigVo.java @@ -10,4 +10,6 @@ public class ServiceCodeConfigVo { private String codePath; private String branch; + + private String showValue; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java index 08c5daf3..0d726145 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceModelVo.java @@ -19,4 +19,6 @@ public class ServiceModelVo { private String identifier; private String owner; + + private String showValue; } From 21d6a510ee39deec595a171167e1179337db1826 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 14:55:34 +0800 Subject: [PATCH 246/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 2 ++ .../java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index aca6a7ab..a892e8f0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -314,6 +314,8 @@ public class ServiceServiceImpl implements ServiceService { ServiceCodeConfigVo serviceCodeConfigVo = JSON.parseObject(sv.getCodeConfig(), ServiceCodeConfigVo.class); serviceVersionVo.setCodeConfig(serviceCodeConfigVo); + + serviceVersionVo.setEnvVariables(JacksonUtil.parseJSONStr2Map(sv.getEnvVariables())); return serviceVersionVo; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java index a2b80926..8556da3c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java @@ -30,7 +30,7 @@ public class ServiceVersionVo { private String mountPath; - private Map envVariables; + private Map envVariables; private ServiceCodeConfigVo codeConfig; From 9b8fbfff5c38d89ec8c36b7e891c0783515b6715 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 15:03:00 +0800 Subject: [PATCH 247/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index a892e8f0..10fa381c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -292,6 +292,7 @@ public class ServiceServiceImpl implements ServiceService { BeanUtils.copyProperties(serviceVersionVo, serviceVersion); serviceVersion.setModel(JSON.toJSONString(serviceVersionVo.getModel())); serviceVersion.setCodeConfig(JSON.toJSONString(serviceVersionVo.getCodeConfig())); + serviceVersion.setEnvVariables(JSON.toJSONString(serviceVersionVo.getEnvVariables())); return serviceVersion; } From 523b92d844e22093dbcbe38945a09d0f06af1844 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 16:47:48 +0800 Subject: [PATCH 248/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/service/ServiceController.java | 20 +++++++++---------- .../service/impl/ServiceServiceImpl.java | 8 ++++++-- .../vo/serviceVos/ServiceVersionVo.java | 2 ++ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index 3b57695a..7e75f477 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -106,11 +106,11 @@ public class ServiceController extends BaseController { return genericsSuccess(serviceService.deleteServiceVersion(id)); } - @PostMapping("/runServiceVersion/{id}") - @ApiOperation("启动服务版本") - public GenericsAjaxResult runServiceVersion(@PathVariable("id") Long id) { - return genericsSuccess(serviceService.runServiceVersion(id)); - } +// @PostMapping("/runServiceVersion/{id}") +// @ApiOperation("启动服务版本") +// public GenericsAjaxResult runServiceVersion(@PathVariable("id") Long id) { +// return genericsSuccess(serviceService.runServiceVersion(id)); +// } @DeleteMapping("/stopServiceVersion/{id}") @ApiOperation("停止服务版本") @@ -118,11 +118,11 @@ public class ServiceController extends BaseController { return genericsSuccess(serviceService.stopServiceVersion(id)); } - @PutMapping("/updateServiceVersion") - @ApiOperation("更新服务版本") - public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { - return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); - } +// @PutMapping("/updateServiceVersion") +// @ApiOperation("更新服务版本") +// public GenericsAjaxResult updateServiceVersion(@RequestBody ServiceVersion serviceVersion) { +// return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); +// } @GetMapping("/getServiceVersionLog/{id}") @ApiOperation("获取服务版本日志") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 10fa381c..20a3bd6a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -132,6 +132,11 @@ public class ServiceServiceImpl implements ServiceService { public String editServiceVersion(ServiceVersionVo serviceVersionVo) { ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); + ServiceVersion oldServiceVersion = serviceDao.getServiceVersionById(serviceVersionVo.getId()); + if (!oldServiceVersion.getReplicas().equals(serviceVersionVo.getReplicas()) || !oldServiceVersion.getResource().equals(serviceVersionVo.getResource()) + || serviceVersionVo.getRerun()) { + updateServiceVersion(serviceVersion); + } LoginUser loginUser = SecurityUtils.getLoginUser(); serviceVersion.setUpdateBy(loginUser.getUsername()); serviceDao.updateServiceVersion(serviceVersion); @@ -242,8 +247,7 @@ public class ServiceServiceImpl implements ServiceService { paramMap.put("update_model", JSON.toJSONString(updateMap)); String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { - ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); - return editServiceVersion(serviceVersionVo); + return "修改成功"; } else { throw new RuntimeException("更新失败"); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java index 8556da3c..2f8e90e0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java @@ -53,4 +53,6 @@ public class ServiceVersionVo { private String deploymentName; private String svcName; + + private Boolean rerun; } From 14325471d48f40de07a84bb97c99dede0ba82f2d Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 16:53:03 +0800 Subject: [PATCH 249/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/controller/service/ServiceController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index 7e75f477..c677555c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -124,9 +124,9 @@ public class ServiceController extends BaseController { // return genericsSuccess(serviceService.updateServiceVersion(serviceVersion)); // } - @GetMapping("/getServiceVersionLog/{id}") + @GetMapping("/getServiceVersionLog") @ApiOperation("获取服务版本日志") - public GenericsAjaxResult getServiceVersionLog(@PathVariable("id") Long id, + public GenericsAjaxResult getServiceVersionLog(@RequestParam("id") Long id, @RequestParam("start_time") String startTime, @RequestParam("end_time") String endTime) { return genericsSuccess(serviceService.getServiceVersionLog(id, startTime, endTime)); } From b7bdbbee789444dbfd7c0b33ef7593e1702004fc Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 16:55:34 +0800 Subject: [PATCH 250/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 5 ++++- .../com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 20a3bd6a..812397a0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -151,7 +151,10 @@ public class ServiceServiceImpl implements ServiceService { @Override public ServiceVersionVo getServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); - return getServiceVersionVo(serviceVersion); + ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); + com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); + serviceVersionVo.setServiceName(service.getServiceName()); + return serviceVersionVo; } @Override diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java index 2f8e90e0..3baae9b1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/serviceVos/ServiceVersionVo.java @@ -16,6 +16,8 @@ public class ServiceVersionVo { private Long serviceId; + private String serviceName; + private String version; private String description; From a5edd4cda1fe21822f1989bd7a829a6151e04a2b Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 9 Oct 2024 17:35:33 +0800 Subject: [PATCH 251/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ServiceServiceImpl.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 812397a0..6ee97249 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -192,7 +192,6 @@ public class ServiceServiceImpl implements ServiceService { @Override public String runServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); - ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion.getServiceId()); HashMap paramMap = new HashMap<>(); paramMap.put("service_name", service.getServiceName()); @@ -210,11 +209,11 @@ public class ServiceServiceImpl implements ServiceService { Map reqMap = JacksonUtil.parseJSONStr2Map(req); if ((Integer) reqMap.get("code") == 200) { Map data = (Map) reqMap.get("data"); - serviceVersionVo.setUrl(data.get("url")); - serviceVersionVo.setDeploymentName(data.get("deployment_name")); - serviceVersionVo.setSvcName(data.get("svc_name")); - serviceVersionVo.setRunState(Constant.Init); - editServiceVersion(serviceVersionVo); + serviceVersion.setUrl(data.get("url")); + serviceVersion.setDeploymentName(data.get("deployment_name")); + serviceVersion.setSvcName(data.get("svc_name")); + serviceVersion.setRunState(Constant.Init); + serviceDao.updateServiceVersion(serviceVersion); return "启动成功"; } else { throw new RuntimeException("启动失败"); @@ -227,13 +226,12 @@ public class ServiceServiceImpl implements ServiceService { @Override public String stopServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); - ServiceVersionVo serviceVersionVo = getServiceVersionVo(serviceVersion); HashMap paramMap = new HashMap<>(); paramMap.put("deployment_name", serviceVersion.getDeploymentName()); String req = HttpUtils.sendPost(argoUrl + modelService + "/stop", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { - serviceVersionVo.setRunState(Constant.Stopped); - editServiceVersion(serviceVersionVo); + serviceVersion.setRunState(Constant.Stopped); + serviceDao.updateServiceVersion(serviceVersion); return "停止成功"; } else { throw new RuntimeException("停止失败"); From d7e9bbdbefb08865ada65f59b4e79310ecd4a3c8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 09:07:10 +0800 Subject: [PATCH 252/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BDbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 6ee97249..58986719 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -245,7 +245,7 @@ public class ServiceServiceImpl implements ServiceService { HashMap updateMap = new HashMap<>(); updateMap.put("replicas", serviceVersion.getReplicas()); updateMap.put("resource", serviceVersion.getResource()); - paramMap.put("update_model", JSON.toJSONString(updateMap)); + paramMap.put("update_model", new JSONObject(updateMap)); String req = HttpUtils.sendPost(argoUrl + modelService + "/update", JSON.toJSONString(paramMap)); if (StringUtils.isNotEmpty(req)) { return "修改成功"; From 160a333e078c287986e126042162dda818ec6034 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 09:39:03 +0800 Subject: [PATCH 253/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index dbd557e0..08f462d2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -590,12 +590,6 @@ public class ModelsServiceImpl implements ModelsService { if (gitlinIid == null) { throw new Exception("创建模型失败:" + project.get("message")); } - // 创建分支 - gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, modelsVo.getVersion(), "master"); - // 定义标签 标签1:ci4s-model 标签2:ModelTag 标签3:ModelType - gitService.createTopic(token, gitlinIid, "ci4s-model"); - gitService.createTopic(token, gitlinIid, "modeltag-" + modelsVo.getModelTag()); - gitService.createTopic(token, gitlinIid, "modeltype-" + modelsVo.getModelType()); String branchName = modelsVo.getVersion(); String owner = (String) userInfo.get("login"); @@ -607,9 +601,14 @@ public class ModelsServiceImpl implements ModelsService { String metaPath = rootPath + "/metadata"; String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName + "/model"; - dvcUtils.gitClone(rootPath, projectUrl, "master", gitLinkUsername, gitLinkPassword); - dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); - dvcUtils.gitCheckoutBranch(rootPath, branchName); + // 创建分支 + gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); + // 定义标签 标签1:ci4s-model 标签2:ModelTag 标签3:ModelType + gitService.createTopic(token, gitlinIid, "ci4s-model"); + gitService.createTopic(token, gitlinIid, "modeltag-" + modelsVo.getModelTag()); + gitService.createTopic(token, gitlinIid, "modeltype-" + modelsVo.getModelType()); + + dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); //干掉目标文件夹 dvcUtils.deleteDirectory(modelPath); From 0b088cada86e3076ed925d70cdeaa9ecd2fdeed2 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 09:57:34 +0800 Subject: [PATCH 254/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 08f462d2..cd0eab07 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -998,8 +998,7 @@ public class ModelsServiceImpl implements ModelsService { } // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP - List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/" + id, identifier, version, "model", gitLinkUsername, gitLinkPassword); - + List> fileDetailsAfterGitPull = FileUtil.getFiles(localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/" + version + "/model"); Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + id + "/" + identifier + "/" + version + "/metadata/metadata.yaml"); String jsonString = JSON.toJSONString(stringObjectMap); From 2c27bea159ddc5841b2071b29343dca67ddbd595 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 10:01:07 +0800 Subject: [PATCH 255/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E8=AF=A6=E6=83=85=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 69dda5b8..ae74bd57 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -338,6 +338,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { @Override public NewDatasetVo getNewDatasetDesc(Integer id, String name, String repo, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); // cd到 localPathlocal/id/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP @@ -348,9 +349,10 @@ public class NewDatasetServiceImpl implements NewDatasetService { } version = (String) versionList.get(0).get("name"); } - List> fileDetailsAfterGitPull = dvcUtils.getFileDetailsAfterGitPull(localPathlocal + loginUser.getUsername() + "/datasets/" + id, repo, version, "dataset", gitLinkUsername, gitLinkPassword); + List> fileDetailsAfterGitPull = FileUtil.getFiles(localPathlocal + ci4sUsername + "/datasets/" + id + "/" + repo + "/" + version + "/dataset"); + // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 - Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + loginUser.getUsername() + "/datasets/" + id + "/" + repo + "/" + version + "/dataset.yaml"); + Map stringObjectMap = YamlUtils.loadYamlFile(localPathlocal + ci4sUsername + "/datasets/" + id + "/" + repo + "/" + version + "/dataset.yaml"); String jsonString = JacksonUtil.toJSONString(stringObjectMap); NewDatasetVo newDatasetVo = JsonUtils.jsonToObject(jsonString, NewDatasetVo.class); List versionVos = new ArrayList(); From bfd0b1b3c4e8f63f8cede1efd318114997ab136a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 10:28:56 +0800 Subject: [PATCH 256/381] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 2 -- .../com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 2 -- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 2 +- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index cd0eab07..bed75bab 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -986,8 +986,6 @@ public class ModelsServiceImpl implements ModelsService { public ModelsVo getModelDetail(Integer id, String identifier, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); if (StringUtils.isEmpty(version)) { List> versionList = this.getVersionList(identifier, owner); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index ae74bd57..79390c49 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -339,8 +339,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { public NewDatasetVo getNewDatasetDesc(Integer id, String name, String repo, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); // cd到 localPathlocal/id/下面还有一个文件夹,然后做git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP if (StringUtils.isEmpty(version)) { List> versionList = this.getVersionList(repo, owner); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 6ee97249..7c1a17f3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -212,7 +212,7 @@ public class ServiceServiceImpl implements ServiceService { serviceVersion.setUrl(data.get("url")); serviceVersion.setDeploymentName(data.get("deployment_name")); serviceVersion.setSvcName(data.get("svc_name")); - serviceVersion.setRunState(Constant.Init); + serviceVersion.setRunState(Constant.Pending); serviceDao.updateServiceVersion(serviceVersion); return "启动成功"; } else { From 80e5d7dc8f33e51e19d6f781b891762c717b7a56 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 10:37:50 +0800 Subject: [PATCH 257/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=9E=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index a6864342..dfc8b5d4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -572,7 +572,7 @@ public class ExperimentServiceImpl implements ExperimentService { newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); - //todo newDatasetVo.setowner + newDatasetVo.setOwner((String) dataset.get("owner")); trainDatasets.add(newDatasetVo); } modelMetaVo.setTrainDatasets(trainDatasets); @@ -620,7 +620,7 @@ public class ExperimentServiceImpl implements ExperimentService { newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); - //todo newDatasetVo.setowner + newDatasetVo.setOwner((String) dataset.get("owner")); testDatasets.add(newDatasetVo); } modelMetaVo.setTestDatasets(testDatasets); From d04fc755f55bf7bed7c15a1e0749b78a05819aa1 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 11:40:06 +0800 Subject: [PATCH 258/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=88=A0=E9=99=A4=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ServiceServiceImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 9cbce8b8..bf82d666 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -186,7 +186,17 @@ public class ServiceServiceImpl implements ServiceService { public String deleteServiceVersion(Long id) { ServiceVersion serviceVersion = serviceDao.getServiceVersionById(id); serviceVersion.setState(Constant.State_invalid); - return serviceDao.updateServiceVersion(serviceVersion) > 0 ? "删除成功" : "删除失败"; + HashMap paramMap = new HashMap<>(); + paramMap.put("deployment_name", serviceVersion.getDeploymentName()); + paramMap.put("svc_name", serviceVersion.getSvcName()); + String req = HttpUtils.sendPost(argoUrl + modelService + "/delete", JSON.toJSONString(paramMap)); + if (StringUtils.isNotEmpty(req)) { + Map reqMap = JacksonUtil.parseJSONStr2Map(req); + if ((Integer) reqMap.get("code") == 200) { + return serviceDao.updateServiceVersion(serviceVersion) > 0 ? "删除成功" : "删除失败"; + } + } + return "删除失败"; } @Override From f44e6338ca97c990da0745e39f61f78ce187219a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 10 Oct 2024 13:35:57 +0800 Subject: [PATCH 259/381] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/managementPlatform/ModelDependency1DaoMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 37f89d41..5266f05f 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -32,6 +32,7 @@ and identifier = #{identifier} and version = #{version} and state = 1 + order by create_time desc limit 1 + + update model_dependency1 set state = 0 From 952f469fbc5a79c76c25b5020aa3e12bf3813074 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 14:35:55 +0800 Subject: [PATCH 289/381] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RuoYiManagementPlatformApplication.java | 2 + .../model/NewModelFromGitController.java | 7 ++++ .../platform/mapper/ModelDependency1Dao.java | 2 +- .../ruoyi/platform/service/AimService.java | 6 +++ .../ruoyi/platform/service/ModelsService.java | 2 + .../platform/service/impl/AimServiceImpl.java | 42 +++++++++++++++++++ .../service/impl/ExperimentServiceImpl.java | 2 +- .../service/impl/ModelsServiceImpl.java | 22 ++++++++-- .../com/ruoyi/platform/vo/ModelMetaVo.java | 3 ++ .../ModelDependency1DaoMapper.xml | 3 +- 10 files changed, 84 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java index b3b22ac9..a950808a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/RuoYiManagementPlatformApplication.java @@ -5,6 +5,7 @@ import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; /** @@ -17,6 +18,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @EnableRyFeignClients @SpringBootApplication @EnableScheduling +@EnableAsync public class RuoYiManagementPlatformApplication { public static void main(String[] args) { SpringApplication.run(RuoYiManagementPlatformApplication.class, args); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index e7eb47ef..ab4c5925 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -84,6 +84,13 @@ public class NewModelFromGitController { return AjaxResult.success(this.modelsService.queryVersions(pageRequest, identifier, owner)); } + @GetMapping("/queryVersionsMetrics") + @ApiOperation("查询版本指标") + public AjaxResult queryVersionsMetrics(@RequestParam("runIds") List runIds) throws Exception { + return AjaxResult.success(this.modelsService.queryVersionsMetrics(runIds)); + } + + @GetMapping("/getVersionList") @ApiOperation(value = "获取模型分支列表") public AjaxResult getVersionList(@RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java index c44bd8bd..721496ea 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java @@ -9,7 +9,7 @@ public interface ModelDependency1Dao { int insert(ModelDependency1 modelDependency1); - int updateState(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("version") String version, @Param("state") Integer state); + int updateState(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("version") String version, @Param("meta") String meta, @Param("state") Integer state); List queryModelDependency(@Param("modelName") String modelName, @Param("repoId") Integer repoId, @Param("owner") String owner); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java index 9f3868f5..b6c03292 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java @@ -2,7 +2,9 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.InsMetricInfoVo; +import java.util.HashMap; import java.util.List; +import java.util.Map; public interface AimService { @@ -13,4 +15,8 @@ public interface AimService { List getExpEvaluateInfos(Integer experimentId) throws Exception; String getExpMetrics(List runIds) throws Exception; + + HashMap queryMetricsParams(String runId) throws Exception; + + List> getBatchMetric(String runHash, String params); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 8b51d696..6c5f6a58 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -101,6 +101,8 @@ public interface ModelsService { Page> queryVersions(PageRequest pageRequest, String identifier, String owner) throws Exception; + List>> queryVersionsMetrics(List runIds) throws Exception; + List> getVersionList(String identifier, String owner) throws Exception; ModelsVo getModelDetail(Integer id, String identifier, String owner, String version) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 1b754404..663158ba 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.service.AimService; import com.ruoyi.platform.service.ExperimentInsService; @@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -245,4 +247,44 @@ public class AimServiceImpl implements AimService { } return datasetList; } + + @Override + public HashMap queryMetricsParams(String runId) throws UnsupportedEncodingException { + String encodedUrlString = URLEncoder.encode("run.id==\"" + runId + "\"", "UTF-8"); + String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; + String s = httpUtils.sendGet(url, null); + List> response = JacksonUtil.parseJSONStr2MapList(s); + if (response == null || response.size() == 0) { + return new HashMap<>(); + } + + HashMap resultMap = new HashMap<>(); + List> paramList = new ArrayList<>(); + + Map map = response.get(0); + LinkedHashMap traces = (LinkedHashMap) map.get("traces"); + if (traces != null) { + List> metrics = traces.get("metric"); + for (Map metric : metrics) { + Map metricParam = new HashMap<>(); + metricParam.put("context", metric.get("context")); + metricParam.put("name", metric.get("name")); + paramList.add(metricParam); + } + resultMap.put("params", JSON.toJSONString(paramList)); + } + resultMap.put("run_hash", map.get("run_hash")); + return resultMap; + } + + @Override + public List> getBatchMetric(String runHash, String params) { + String url = aimUrl + "/api/runs/" + runHash + "/metric/get-batch"; + String response = httpUtils.sendPost(url, null, params); + if (StringUtils.isNotEmpty(response)) { + return JacksonUtil.parseJSONStr2MapList(response); + } + return null; + } + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index dfc8b5d4..e57296ca 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -560,7 +560,7 @@ public class ExperimentServiceImpl implements ExperimentService { //处理指标 HashMap metricMap = JSON.parseObject(metricRecord, HashMap.class); - modelMetaVo.setMetrics(metricMap); + modelMetaVo.setMetricsParams(metricMap); //训练数据集 List> trainDatasetList = (List>) modelTrainMap.get("datasets"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 8000a953..17a6093a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -747,7 +747,7 @@ public class ModelsServiceImpl implements ModelsService { if (buildingModel != null) { modelMetaVo = JSON.parseObject(buildingModel.getMeta(), ModelMetaVo.class); //获取指标 - getMetrics(modelMetaVo); + transMetrics(modelMetaVo); } //拼接生产的元数据后写入yaml文件 @@ -806,7 +806,7 @@ public class ModelsServiceImpl implements ModelsService { modelDependency1Dao.insert(modelDependency); } else { //更新模型依赖 - modelDependency1Dao.updateState(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion(), Constant.State_valid); + modelDependency1Dao.updateState(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getVersion(), meta, Constant.State_valid); } } else { //保存模型依赖 @@ -991,10 +991,24 @@ public class ModelsServiceImpl implements ModelsService { if (modelMetaVo.getMetrics() != null) { branch.putAll(modelMetaVo.getMetrics()); } + if (modelMetaVo.getMetricsParams() != null) { + branch.putAll(modelMetaVo.getMetricsParams()); + } } return new PageImpl<>(result, pageRequest, collect.size()); } + @Override + public List>> queryVersionsMetrics(List runIds) throws Exception { + List>> batchMetrics = new ArrayList<>(); + for (String runId : runIds) { + HashMap map = aimsService.queryMetricsParams(runId); + List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); + batchMetrics.add(batchMetric); + } + return batchMetrics; + } + @Override public List> getVersionList(String identifier, String owner) throws Exception { String token = gitService.checkoutToken(); @@ -1201,12 +1215,12 @@ public class ModelsServiceImpl implements ModelsService { return userInfo; } - void getMetrics(ModelMetaVo modelMetaVo) throws Exception { + void transMetrics(ModelMetaVo modelMetaVo) throws Exception { HashMap result = new HashMap<>(); HashMap train = new HashMap<>(); HashMap evaluate = new HashMap<>(); - HashMap metrics = modelMetaVo.getMetrics(); + HashMap metrics = modelMetaVo.getMetricsParams(); JSONArray trainMetrics = (JSONArray) metrics.get("train"); if (trainMetrics != null) { for (int i = 0; i < trainMetrics.size(); i++) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java index e1b84905..2a5a538e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -59,6 +59,9 @@ public class ModelMetaVo implements Serializable { @ApiModelProperty(value = "指标") private HashMap metrics; + @ApiModelProperty(value = "指标查询参数") + private HashMap metricsParams; + @ApiModelProperty(value = "训练任务") private TrainTaskDepency trainTask; diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index bc2a58fb..4e77a29b 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -86,7 +86,8 @@ update model_dependency1 - set state = 1 + set state = 1, + meta = #{meta} where repo_id = #{repoId} and identifier = #{identifier} and version = #{version} From 8e5a93ffb402bc7a0f506cc0f1896b55b63c68a8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 16:25:19 +0800 Subject: [PATCH 290/381] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/experiment/ExperimentInsController.java | 6 ++++++ .../com/ruoyi/platform/service/ExperimentInsService.java | 3 +++ .../platform/service/impl/ExperimentInsServiceImpl.java | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java index 1c36c1d2..8d18c409 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java @@ -106,6 +106,12 @@ public class ExperimentInsController extends BaseController { return genericsSuccess(this.experimentInsService.removeById(id)); } + @DeleteMapping("batchDelete") + @ApiOperation("批量删除实验实例") + public GenericsAjaxResult batchDelete(@RequestBody List ids) throws Exception{ + return genericsSuccess(this.experimentInsService.batchDelete(ids)); + } + /** * 终止实验实例 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index 046e0186..3953a01e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -73,6 +73,9 @@ public interface ExperimentInsService { * @param id 主键 * @return 是否成功 */ + + String batchDelete(List ids); + boolean deleteById(Integer id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 7b9c57f7..4b431689 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -230,6 +230,13 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } + @Override + public String batchDelete(List ids) { + for (Integer id : ids) { + removeById(id); + } + return "删除成功"; + } /** From 4474d3a0034f7a385d756ebdbc583f517fdc7b86 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 16:27:07 +0800 Subject: [PATCH 291/381] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ExperimentInsServiceImpl.java | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 4b431689..4b73d671 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -36,13 +36,13 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Resource private WorkflowService workflowService; @Value("${argo.url}") - private String argoUrl; + private String argoUrl; @Value("${argo.convert}") - private String argoConvert; + private String argoConvert; @Value("${argo.workflowRun}") - private String argoWorkflowRun; + private String argoWorkflowRun; @Value("${argo.workflowStatus}") - private String argoWorkflowStatus; + private String argoWorkflowStatus; @Value("${argo.workflowTermination}") private String argoWorkflowTermination; @Value("${argo.workflowLog}") @@ -60,6 +60,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Resource private K8sClientUtil k8sClientUtil; private final MinioUtil minioUtil; + public ExperimentInsServiceImpl(MinioUtil minioUtil) { this.minioUtil = minioUtil; } @@ -97,8 +98,6 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } /** - * - * * 根据实验ID查找所有具有相同ID的实例,并将它们添加到实验列表中 * * @param experimentId 实验ID @@ -187,8 +186,6 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } - - /** * 修改数据 * @@ -207,7 +204,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Override public String removeById(Integer id) { ExperimentIns experimentIns = experimentInsDao.queryById(id); - if (experimentIns == null){ + if (experimentIns == null) { return "实验实例不存在"; } @@ -215,25 +212,28 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); String createdBy = experimentIns.getCreateBy(); - if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ + if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createdBy))) { return "无权限删除该流水线"; } - if (StringUtils.isEmpty(experimentIns.getStatus())){ + if (StringUtils.isEmpty(experimentIns.getStatus())) { experimentIns = queryStatusFromArgo(experimentIns); } - if (StringUtils.equals(experimentIns.getStatus(),"Running")){ + if (StringUtils.equals(experimentIns.getStatus(), "Running")) { return "实验实例正在运行,不可删除"; } experimentIns.setState(0); - return this.experimentInsDao.update(experimentIns)>0?"删除成功":"删除失败"; + return this.experimentInsDao.update(experimentIns) > 0 ? "删除成功" : "删除失败"; } @Override public String batchDelete(List ids) { for (Integer id : ids) { - removeById(id); + String result = removeById(id); + if (!"删除成功".equals(result)) { + return result; + } } return "删除成功"; } @@ -263,16 +263,16 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { Integer id = ins.getId(); // 创建请求数据map ExperimentIns experimentIns = this.experimentInsDao.queryById(id); - Map requestData = new HashMap<>(); + Map requestData = new HashMap<>(); requestData.put("namespace", namespace); requestData.put("name", name); // 创建发送数据map,将请求数据作为"data"键的值 - Map res = new HashMap<>(); + Map res = new HashMap<>(); res.put("data", requestData); try { // 发送POST请求到Argo工作流状态查询接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowStatus,null, JsonUtils.mapToJson(res)); + String req = httpUtils.sendPost(argoUrl + argoWorkflowStatus, null, JsonUtils.mapToJson(res)); // 检查响应是否为空或无内容 if (req == null || StringUtils.isEmpty(req)) { throw new RuntimeException("工作流状态响应为空。"); @@ -300,10 +300,10 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { // 解析nodes字段,提取节点状态并转换为JSON字符串 Map nodes = (Map) status.get("nodes"); - Map modifiedNodes = new LinkedHashMap<>(); - if (nodes != null ) { + Map modifiedNodes = new LinkedHashMap<>(); + if (nodes != null) { for (Map.Entry nodeEntry : nodes.entrySet()) { - Map nodeDetails = (Map) nodeEntry.getValue(); + Map nodeDetails = (Map) nodeEntry.getValue(); String templateName = (String) nodeDetails.get("displayName"); modifiedNodes.put(templateName, nodeDetails); } @@ -313,10 +313,10 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { experimentIns.setNodesStatus(nodeStatusJson); //终止态为终止不改 - if (!StringUtils.equals(experimentIns.getStatus(),"Terminated")) { - experimentIns.setStatus(StringUtils.isNotEmpty((String) status.get("phase"))?(String) status.get("phase"):"Pending"); + if (!StringUtils.equals(experimentIns.getStatus(), "Terminated")) { + experimentIns.setStatus(StringUtils.isNotEmpty((String) status.get("phase")) ? (String) status.get("phase") : "Pending"); } - if (StringUtils.equals(experimentIns.getStatus(),"Error")) { + if (StringUtils.equals(experimentIns.getStatus(), "Error")) { experimentIns.setStatus("Failed"); } @@ -357,16 +357,16 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } // 创建请求数据map - Map requestData = new HashMap<>(); + Map requestData = new HashMap<>(); requestData.put("namespace", namespace); requestData.put("name", name); // 创建发送数据map,将请求数据作为"data"键的值 - Map res = new HashMap<>(); + Map res = new HashMap<>(); res.put("data", requestData); try { // 发送POST请求到Argo工作流状态查询接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowTermination,null, JsonUtils.mapToJson(res)); + String req = httpUtils.sendPost(argoUrl + argoWorkflowTermination, null, JsonUtils.mapToJson(res)); // 检查响应是否为空或无内容 if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -430,20 +430,20 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { String namespace = experimentIns.getArgoInsNs(); // 创建请求数据的Json(map) - Map requestData = new HashMap<>(); + Map requestData = new HashMap<>(); requestData.put("namespace", namespace); requestData.put("name", name); //先写死这两个数据项 - requestData.put("workflow-type","workflows"); - requestData.put("artifact-name","main-logs"); - requestData.put("component-id",componentId); + requestData.put("workflow-type", "workflows"); + requestData.put("artifact-name", "main-logs"); + requestData.put("component-id", componentId); // 创建发送数据map,将请求数据作为"data"键的值 - Map res = new HashMap<>(); + Map res = new HashMap<>(); res.put("data", requestData); try { // 发送POST请求到Argo工作流日志查询接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowLog, null,JsonUtils.mapToJson(res)); + String req = httpUtils.sendPost(argoUrl + argoWorkflowLog, null, JsonUtils.mapToJson(res)); // 检查响应是否为空或无内容 if (StringUtils.isEmpty(req)) { throw new RuntimeException("响应内容为空"); @@ -452,7 +452,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { Map runResMap = JsonUtils.jsonToMap(req); // 从响应Map中获取"data"的值,也就是日志的值 String experimentInsLog = (String) runResMap.get("data"); - if (experimentInsLog == null){ + if (experimentInsLog == null) { throw new RuntimeException("日志为空。"); } //返回日志内容 @@ -470,28 +470,28 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { //查询 实例 ExperimentIns experimentIns = this.experimentInsDao.queryById(id); if (experimentIns == null) { - throw new Exception("实验实例未查询到,id:" + id); + throw new Exception("实验实例未查询到,id:" + id); } //找到 节点 节点结果 String nodesResultString = experimentIns.getNodesResult(); if (StringUtils.isEmpty(nodesResultString)) { - throw new Exception("实验实例未查询到节点结果,id:" + id); + throw new Exception("实验实例未查询到节点结果,id:" + id); } Map nodesResult = JsonUtils.jsonToMap(nodesResultString); Map paramOutput = (Map) nodesResult.get("param_output"); - List> nodeList = (List>) paramOutput.get(nodeId); + List> nodeList = (List>) paramOutput.get(nodeId); //遍历 查询minio for (int i = 0; i < nodeList.size(); i++) { Map map = nodeList.get(i); String path = (String) map.get("path"); String bucketName = path.substring(0, path.indexOf("/")); - String prefix = path.substring(path.indexOf("/")+1,path.length())+"/"; - if (StringUtils.equals( (String)map.get("type"),"file")){ + String prefix = path.substring(path.indexOf("/") + 1, path.length()) + "/"; + if (StringUtils.equals((String) map.get("type"), "file")) { List fileInfo = minioUtil.listFilesInDirectory(bucketName, prefix); - map.put("value",fileInfo); - }else if (StringUtils.equals( (String)map.get("type"),"string")){ + map.put("value", fileInfo); + } else if (StringUtils.equals((String) map.get("type"), "string")) { String resultInfo = minioUtil.readObjectAsString(bucketName, prefix); - map.put("value",resultInfo); + map.put("value", resultInfo); } results.add(map); //组装 @@ -508,14 +508,14 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { String taskId = logRequest.getTaskId(); String startTime = logRequest.getStartTime(); // 创建请求数据的Json(map) - Map requestData = new HashMap<>(); + Map requestData = new HashMap<>(); requestData.put("component_id", componentId); requestData.put("namespace", nameSpace); requestData.put("name", name); - requestData.put("task_id",taskId); - requestData.put("start_time",startTime); + requestData.put("task_id", taskId); + requestData.put("start_time", startTime); // 创建发送数据map,将请求数据作为"data"键的值 - Map res = new HashMap<>(); + Map res = new HashMap<>(); res.put("data", requestData); try { @@ -538,9 +538,9 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Override public Map getRealtimePodLog(String podName, String startTime) { - Map requestData = new HashMap<>(); - requestData.put("pod_name",podName); - requestData.put("start_time",startTime); + Map requestData = new HashMap<>(); + requestData.put("pod_name", podName); + requestData.put("start_time", startTime); try { // 将Map转换为JSON字符串 String req = HttpUtils.sendPost(argoUrl + argoWorkflowPodLog, JsonUtils.mapToJson(requestData)); @@ -561,7 +561,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Override public String getRealtimePodLogFromPod(PodLogVo podLogVo) { - return k8sClientUtil.getPodLogs(podLogVo.getPodName(), podLogVo.getNamespace(),podLogVo.getContainerName(), logsLines); + return k8sClientUtil.getPodLogs(podLogVo.getPodName(), podLogVo.getNamespace(), podLogVo.getContainerName(), logsLines); } @Override @@ -580,7 +580,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { experimentIns.setStatus(status.toString()); // 设置实例的状态为枚举中的状态 // 查询具有相同状态的实例数量 - Long count = experimentInsDao.count(experimentIns); + Long count = experimentInsDao.count(experimentIns); // 将状态及其对应的实例数量放入map中 statusCountMap.put(status.toString(), count); @@ -595,7 +595,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { boolean flag = true; List terminatedStates = Arrays.asList("Succeeded", "Failed"); flag = terminatedStates.contains(status); - if (StringUtils.equals(status, "Terminated")){ + if (StringUtils.equals(status, "Terminated")) { //如果跟node_status里面不一样,就要去更新node_status的信息 String nodesStatus = ins.getNodesStatus(); Map nodeMap = JsonUtils.jsonToMap(nodesStatus); @@ -604,7 +604,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { .findFirst() .orElse(null); Map workflowMap = (Map) nodeMap.get(keyStartsWithWorkflow); - if (workflowMap != null){ + if (workflowMap != null) { flag = StringUtils.equals("Terminated", (String) workflowMap.get("phase")); } } From 40d19ec2044275cd1df10bf0884668e7a597cf38 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 16:53:16 +0800 Subject: [PATCH 292/381] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/AimServiceImpl.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 663158ba..ab11862b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -5,9 +5,9 @@ import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.service.AimService; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.utils.AIM64EncoderUtil; +import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; -import com.ruoyi.platform.utils.NewHttpUtils; import com.ruoyi.platform.vo.InsMetricInfoVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -28,8 +28,6 @@ public class AimServiceImpl implements AimService { private String aimUrl; @Value("${aim.proxyUrl}") private String aimProxyUrl; - @Resource - private NewHttpUtils httpUtils; @Override public List getExpTrainInfos(Integer experimentId) throws Exception { @@ -54,7 +52,7 @@ public class AimServiceImpl implements AimService { } String encodedUrlString = URLEncoder.encode("run.experiment==\"" + experimentName + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; - String s = httpUtils.sendGet(url, null); + String s = HttpUtils.sendGet(url, null); List> response = JacksonUtil.parseJSONStr2MapList(s); System.out.println("response: " + JacksonUtil.toJSONString(response)); if (response == null || response.size() == 0) { @@ -144,7 +142,7 @@ public class AimServiceImpl implements AimService { public List getExpTrainInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception { String encodedUrlString = URLEncoder.encode("run.id==\"" + runId + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; - String s = httpUtils.sendGet(url, null); + String s = HttpUtils.sendGet(url, null); List> response = JacksonUtil.parseJSONStr2MapList(s); System.out.println("response: " + JacksonUtil.toJSONString(response)); if (response == null || response.size() == 0) { @@ -252,7 +250,7 @@ public class AimServiceImpl implements AimService { public HashMap queryMetricsParams(String runId) throws UnsupportedEncodingException { String encodedUrlString = URLEncoder.encode("run.id==\"" + runId + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; - String s = httpUtils.sendGet(url, null); + String s = HttpUtils.sendGet(url, null); List> response = JacksonUtil.parseJSONStr2MapList(s); if (response == null || response.size() == 0) { return new HashMap<>(); @@ -280,7 +278,7 @@ public class AimServiceImpl implements AimService { @Override public List> getBatchMetric(String runHash, String params) { String url = aimUrl + "/api/runs/" + runHash + "/metric/get-batch"; - String response = httpUtils.sendPost(url, null, params); + String response = HttpUtils.sendPost(url, params); if (StringUtils.isNotEmpty(response)) { return JacksonUtil.parseJSONStr2MapList(response); } From 280eda9a5e66b2ddf076026c23c131d78df6cf86 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 17:29:56 +0800 Subject: [PATCH 293/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/AimServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index ab11862b..efb8b82e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -28,6 +28,8 @@ public class AimServiceImpl implements AimService { private String aimUrl; @Value("${aim.proxyUrl}") private String aimProxyUrl; + @Resource + private HttpUtils httpUtils; @Override public List getExpTrainInfos(Integer experimentId) throws Exception { @@ -52,7 +54,7 @@ public class AimServiceImpl implements AimService { } String encodedUrlString = URLEncoder.encode("run.experiment==\"" + experimentName + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; - String s = HttpUtils.sendGet(url, null); + String s = httpUtils.sendGet(url, null); List> response = JacksonUtil.parseJSONStr2MapList(s); System.out.println("response: " + JacksonUtil.toJSONString(response)); if (response == null || response.size() == 0) { From 7cdd3db3bdae9f6b60e9c3036704243da1f5aa03 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 17:41:34 +0800 Subject: [PATCH 294/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/AimServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index efb8b82e..acf82c8c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -4,10 +4,7 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.service.AimService; import com.ruoyi.platform.service.ExperimentInsService; -import com.ruoyi.platform.utils.AIM64EncoderUtil; -import com.ruoyi.platform.utils.HttpUtils; -import com.ruoyi.platform.utils.JacksonUtil; -import com.ruoyi.platform.utils.JsonUtils; +import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.InsMetricInfoVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -29,7 +26,7 @@ public class AimServiceImpl implements AimService { @Value("${aim.proxyUrl}") private String aimProxyUrl; @Resource - private HttpUtils httpUtils; + private NewHttpUtils httpUtils; @Override public List getExpTrainInfos(Integer experimentId) throws Exception { From 25eb45de338d212be444c31311ed4afbf89e6bfb Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 18:16:36 +0800 Subject: [PATCH 295/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/AimServiceImpl.java | 2 +- .../com/ruoyi/platform/utils/HttpUtils.java | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index acf82c8c..1ebc4a26 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -51,7 +51,7 @@ public class AimServiceImpl implements AimService { } String encodedUrlString = URLEncoder.encode("run.experiment==\"" + experimentName + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; - String s = httpUtils.sendGet(url, null); + String s = HttpUtils.sendGet(url, null); List> response = JacksonUtil.parseJSONStr2MapList(s); System.out.println("response: " + JacksonUtil.toJSONString(response)); if (response == null || response.size() == 0) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java index 1de5d84e..6a130f0f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.utils; +import com.ruoyi.common.core.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; @@ -101,12 +102,13 @@ public class HttpUtils { // public static String sendGetWithToken(String url, String param,String token) { // return sendGet(url, param, "UTF-8",token); // } + /** * 向指定 URL 发送带 token 的 GET 方法的请求,使用 Apache HttpClient * - * @param url 发送请求的 URL - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 - * @param token 认证 token + * @param url 发送请求的 URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @param token 认证 token * @return 所代表远程资源的响应结果 */ public static String sendGetWithToken(String url, String param, String token) { @@ -148,6 +150,7 @@ public class HttpUtils { } return result; } + /** * 向指定 URL 发送带token的GET方法的请求 * @@ -156,7 +159,7 @@ public class HttpUtils { * @param contentType 编码类型 * @return 所代表远程资源的响应结果 */ - public static String sendGet(String url, String param, String contentType,String token) { + public static String sendGet(String url, String param, String contentType, String token) { StringBuilder result = new StringBuilder(); BufferedReader in = null; try { @@ -196,7 +199,6 @@ public class HttpUtils { } - /** * 向指定 URL 发送GET方法的请求 * @@ -209,7 +211,10 @@ public class HttpUtils { StringBuilder result = new StringBuilder(); BufferedReader in = null; try { - String urlNameString = url + "?" + param; + String urlNameString = url; + if (StringUtils.isNotEmpty(param)) { + urlNameString = url + "?" + param; + } log.info("sendGet - {}", urlNameString); URL realUrl = new URL(urlNameString); URLConnection connection = realUrl.openConnection(); @@ -245,11 +250,11 @@ public class HttpUtils { /** * 向指定 URL 发送带token的POST方法的请求 * - * @param url 发送请求的 URL + * @param url 发送请求的 URL * @param * @return 所代表远程资源的响应结果 */ - public static String sendPostWithToken(String url, Object params, String token) throws Exception { + public static String sendPostWithToken(String url, Object params, String token) throws Exception { String resultStr = null; HttpPost httpPost = new HttpPost(url); if (params != null) { @@ -518,11 +523,10 @@ public class HttpUtils { } - /** * 发送 HTTP 请求并返回二进制数据流(OutputStream)。 * - * @param url 请求的 URL 地址。 + * @param url 请求的 URL 地址。 * @param headers 头节点。 * @return 服务器响应的二进制数据流(OutputStream)。 * @throws IOException 如果请求失败或发生其他 I/O 错误。 @@ -626,7 +630,6 @@ public class HttpUtils { } - // 其他方法保持不变 /** From 468bd01349e684ce2b5b116ee77e0ae0f8985021 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 16 Oct 2024 18:22:27 +0800 Subject: [PATCH 296/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/AimServiceImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 1ebc4a26..7fd7c706 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -25,8 +25,6 @@ public class AimServiceImpl implements AimService { private String aimUrl; @Value("${aim.proxyUrl}") private String aimProxyUrl; - @Resource - private NewHttpUtils httpUtils; @Override public List getExpTrainInfos(Integer experimentId) throws Exception { From 4703c07c7710e5b5fb6d69d409bcedd374f52b36 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 09:25:35 +0800 Subject: [PATCH 297/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/AimService.java | 2 +- .../platform/service/impl/AimServiceImpl.java | 4 ++-- .../service/impl/WorkflowServiceImpl.java | 3 ++- .../com/ruoyi/platform/utils/HttpUtils.java | 20 ++++++++++++++++--- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java index b6c03292..9a867ff8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java @@ -18,5 +18,5 @@ public interface AimService { HashMap queryMetricsParams(String runId) throws Exception; - List> getBatchMetric(String runHash, String params); + List> getBatchMetric(String runHash, String body); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 7fd7c706..fe364123 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -273,9 +273,9 @@ public class AimServiceImpl implements AimService { } @Override - public List> getBatchMetric(String runHash, String params) { + public List> getBatchMetric(String runHash, String body) { String url = aimUrl + "/api/runs/" + runHash + "/metric/get-batch"; - String response = HttpUtils.sendPost(url, params); + String response = HttpUtils.sendPost(url, null, body); if (StringUtils.isNotEmpty(response)) { return JacksonUtil.parseJSONStr2MapList(response); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java index 2b586f24..75921c4b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java @@ -7,6 +7,7 @@ import com.ruoyi.platform.domain.Workflow; import com.ruoyi.platform.mapper.WorkflowDao; import com.ruoyi.platform.service.ExperimentService; import com.ruoyi.platform.service.WorkflowService; +import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.utils.MinioUtil; import com.ruoyi.platform.utils.NewHttpUtils; @@ -172,7 +173,7 @@ public class WorkflowServiceImpl implements WorkflowService { Map requestData = new HashMap<>(); requestData.put("data", oldDag); // 发送POST请求到Argo工作流复制接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowCopy,null , JsonUtils.mapToJson(requestData)); + String req = HttpUtils.sendPost(argoUrl + argoWorkflowCopy ,null, JsonUtils.mapToJson(requestData)); // 检查响应是否为空或无内容 if (StringUtils.isEmpty(req)) { throw new RuntimeException("工作流复制接口响应内容为空"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java index 6a130f0f..b1e30064 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.utils; +import cn.hutool.http.HttpRequest; import com.ruoyi.common.core.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; @@ -305,9 +306,9 @@ public class HttpUtils { conn.setRequestProperty("contentType", "utf-8"); conn.setDoOutput(true); conn.setDoInput(true); - out = new PrintWriter(conn.getOutputStream()); - out.print(param); - out.flush(); + out = new PrintWriter(conn.getOutputStream()); + out.print(param); + out.flush(); in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); String line; while ((line = in.readLine()) != null) { @@ -337,6 +338,19 @@ public class HttpUtils { return result.toString(); } + public static String sendPost(String url, String param, String body){ + String urlNameString = url; + if (StringUtils.isNotEmpty(param)) { + urlNameString = url + "?" + param; + } + String response = HttpRequest.post(urlNameString) + .body(body) // 设置请求体 + .contentType("application/json") // 设置Content-Type + .execute() + .body(); + return response; + } + public static String sendSSLPost(String url, String param) { StringBuilder result = new StringBuilder(); String urlNameString = url + "?" + param; From a6c49e039e29b720f0fb18327243123019bc7ce3 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 09:43:22 +0800 Subject: [PATCH 298/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ExperimentInsServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 4b73d671..59168810 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -272,7 +272,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { try { // 发送POST请求到Argo工作流状态查询接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowStatus, null, JsonUtils.mapToJson(res)); + String req = HttpUtils.sendPost(argoUrl + argoWorkflowStatus, null, JsonUtils.mapToJson(res)); // 检查响应是否为空或无内容 if (req == null || StringUtils.isEmpty(req)) { throw new RuntimeException("工作流状态响应为空。"); @@ -366,7 +366,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { try { // 发送POST请求到Argo工作流状态查询接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowTermination, null, JsonUtils.mapToJson(res)); + String req = HttpUtils.sendPost(argoUrl + argoWorkflowTermination, null, JsonUtils.mapToJson(res)); // 检查响应是否为空或无内容 if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -443,7 +443,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { try { // 发送POST请求到Argo工作流日志查询接口,并将请求数据转换为JSON - String req = httpUtils.sendPost(argoUrl + argoWorkflowLog, null, JsonUtils.mapToJson(res)); + String req = HttpUtils.sendPost(argoUrl + argoWorkflowLog, null, JsonUtils.mapToJson(res)); // 检查响应是否为空或无内容 if (StringUtils.isEmpty(req)) { throw new RuntimeException("响应内容为空"); From d059d63e58f660d6372f63f53c38bdd2b67f242a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 09:44:45 +0800 Subject: [PATCH 299/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 35232b47..93f990c1 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -20,7 +20,7 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'http://172.20.32.185:31213', // 开发环境 + target: 'http://172.20.32.181:31213', // 开发环境 // target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https From ff0e2846aee0b7ff92afa5f6bb710932d03151c2 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 09:57:17 +0800 Subject: [PATCH 300/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/management-platform/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index ba689d0e..cee6c681 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -242,6 +242,12 @@ jedis 3.6.0
+ + + cn.hutool + hutool-all + 5.8.5 + From 4a15dd49e53e0c5c0dab38e36a675b6b1ea65cd1 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 09:59:44 +0800 Subject: [PATCH 301/381] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 93f990c1..35232b47 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -20,7 +20,7 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'http://172.20.32.181:31213', // 开发环境 + target: 'http://172.20.32.185:31213', // 开发环境 // target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https From 2caa5286e5afe4b99d14ede3036d8b2d20b61c59 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 11:27:42 +0800 Subject: [PATCH 302/381] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/constant/Constant.java | 3 + .../model/NewModelFromGitController.java | 10 +-- .../ruoyi/platform/service/ModelsService.java | 5 +- .../service/impl/ModelsServiceImpl.java | 69 ++++++++++++++----- 4 files changed, 65 insertions(+), 22 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index 12300bb1..b325cc5d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -31,4 +31,7 @@ public class Constant { public final static String Pending = "Pending"; public final static String Init = "Init"; public final static String Stopped = "Stopped"; + + public final static String Type_Train = "train"; + public final static String Type_Evaluate = "evaluate"; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index ab4c5925..958a78bf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.controller.model; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.service.ModelsService; import com.ruoyi.platform.vo.ModelsVo; import io.swagger.annotations.Api; @@ -79,15 +80,16 @@ public class NewModelFromGitController { public AjaxResult queryVersions(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size, @RequestParam("identifier") String identifier, - @RequestParam("owner") String owner) throws Exception { + @RequestParam("owner") String owner, + @RequestParam("type") String type) throws Exception { PageRequest pageRequest = PageRequest.of(page, size); - return AjaxResult.success(this.modelsService.queryVersions(pageRequest, identifier, owner)); + return AjaxResult.success(this.modelsService.queryVersions(pageRequest, identifier, owner, type)); } @GetMapping("/queryVersionsMetrics") @ApiOperation("查询版本指标") - public AjaxResult queryVersionsMetrics(@RequestParam("runIds") List runIds) throws Exception { - return AjaxResult.success(this.modelsService.queryVersionsMetrics(runIds)); + public AjaxResult queryVersionsMetrics(@RequestParam("params") List params, @RequestParam("type") String type) throws Exception { + return AjaxResult.success(this.modelsService.queryVersionsMetrics(params, type)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 6c5f6a58..72ad75dd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service; +import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.vo.ModelDependency1TreeVo; @@ -99,9 +100,9 @@ public interface ModelsService { Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; - Page> queryVersions(PageRequest pageRequest, String identifier, String owner) throws Exception; + Page> queryVersions(PageRequest pageRequest, String identifier, String owner, String type) throws Exception; - List>> queryVersionsMetrics(List runIds) throws Exception; + List queryVersionsMetrics(List params, String type) throws Exception; List> getVersionList(String identifier, String owner) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index f4d06f2f..431077b4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -974,7 +974,7 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public Page> queryVersions(PageRequest pageRequest, String identifier, String owner) throws Exception { + public Page> queryVersions(PageRequest pageRequest, String identifier, String owner, String type) throws Exception { String token = gitService.checkoutToken(); List> collect = gitService.getBrancheList(token, owner, identifier); List> result = collect.stream() @@ -984,27 +984,45 @@ public class ModelsServiceImpl implements ModelsService { for (Map branch : result) { String meta = modelDependency1Dao.getMeta(identifier, owner, (String) branch.get("name")); - ModelMetaVo modelMetaVo = JSON.parseObject(meta, ModelMetaVo.class); - if (modelMetaVo.getParams() != null) { - branch.putAll(modelMetaVo.getParams()); - } - if (modelMetaVo.getMetrics() != null) { - branch.putAll(modelMetaVo.getMetrics()); - } - if (modelMetaVo.getMetricsParams() != null) { - branch.putAll(modelMetaVo.getMetricsParams()); + if (StringUtils.isNotEmpty(meta)) { + ModelMetaVo modelMetaVo = JSON.parseObject(meta, ModelMetaVo.class); + if (modelMetaVo.getParams() != null) { + HashMap params = modelMetaVo.getParams(); + branch.putAll(params); + ArrayList params_names = new ArrayList<>(); + for (String key : params.keySet()) { + params_names.add(key); + } + branch.put("params_names", params_names); + } + if (modelMetaVo.getMetrics() != null) { + HashMap metrics = modelMetaVo.getMetrics(); + if (Constant.Type_Train.equals(type)) { + Map trainMetrics = (Map) metrics.get(Constant.Type_Train); + branch.putAll(trainMetrics); + } else { + Map evaluateMetrics = (Map) metrics.get(Constant.Type_Evaluate); + branch.putAll(evaluateMetrics); + } + } } } return new PageImpl<>(result, pageRequest, collect.size()); } @Override - public List>> queryVersionsMetrics(List runIds) throws Exception { - List>> batchMetrics = new ArrayList<>(); - for (String runId : runIds) { - HashMap map = aimsService.queryMetricsParams(runId); - List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); - batchMetrics.add(batchMetric); + public List queryVersionsMetrics(List params, String type) { + List batchMetrics = new ArrayList<>(); + for (ModelDependency1 model : params) { + + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(model.getRepoId(), model.getIdentifier(), model.getVersion()); + ModelMetaVo modelMetaVo = JSON.parseObject(modelDependency1.getMeta(), ModelMetaVo.class); + HashMap metrics = modelMetaVo.getMetrics(); + if (Constant.Type_Train.equals(type)) { + batchMetrics.add(metrics.get("tarinDetail")); + } else { + batchMetrics.add(metrics.get("evaluateDetail")); + } } return batchMetrics; } @@ -1220,6 +1238,9 @@ public class ModelsServiceImpl implements ModelsService { HashMap train = new HashMap<>(); HashMap evaluate = new HashMap<>(); + List>> trainBatchMetrics = new ArrayList<>(); + List>> evaluateBatchMetrics = new ArrayList<>(); + HashMap metrics = modelMetaVo.getMetricsParams(); JSONArray trainMetrics = (JSONArray) metrics.get("train"); if (trainMetrics != null) { @@ -1231,8 +1252,16 @@ public class ModelsServiceImpl implements ModelsService { Map metrics1 = expTrainInfo.getMetrics(); train.putAll(metrics1); } + + // 记录训练指标详情 + HashMap map = aimsService.queryMetricsParams(runId); + List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); + trainBatchMetrics.add(batchMetric); + } result.put("train", train); + result.put("tarinDetail", trainBatchMetrics); + } JSONArray testMetrics = (JSONArray) metrics.get("evaluate"); @@ -1245,8 +1274,16 @@ public class ModelsServiceImpl implements ModelsService { Map metrics1 = expTestInfo.getMetrics(); evaluate.putAll(metrics1); } + + // 记录验证指标详情 + HashMap map = aimsService.queryMetricsParams(runId); + List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); + evaluateBatchMetrics.add(batchMetric); + } result.put("evaluate", evaluate); + result.put("evaluateDetail", evaluateBatchMetrics); + } modelMetaVo.setMetrics(result); } From fd948f7150d47c384d069c1c9ea7813bea5d1174 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 14:04:34 +0800 Subject: [PATCH 303/381] =?UTF-8?q?http=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/HttpUtils.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java index b1e30064..0b6db3df 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java @@ -284,6 +284,13 @@ public class HttpUtils { return resultStr; } + private static void clearProxySettings() { + System.clearProperty("http.proxyHost"); + System.clearProperty("http.proxyPort"); + System.clearProperty("https.proxyHost"); + System.clearProperty("https.proxyPort"); + } + /** * 向指定 URL 发送POST方法的请求 * @@ -292,6 +299,7 @@ public class HttpUtils { * @return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param) { + clearProxySettings(); PrintWriter out = null; BufferedReader in = null; StringBuilder result = new StringBuilder(); @@ -306,9 +314,9 @@ public class HttpUtils { conn.setRequestProperty("contentType", "utf-8"); conn.setDoOutput(true); conn.setDoInput(true); - out = new PrintWriter(conn.getOutputStream()); - out.print(param); - out.flush(); + out = new PrintWriter(conn.getOutputStream()); + out.print(param); + out.flush(); in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); String line; while ((line = in.readLine()) != null) { @@ -338,7 +346,8 @@ public class HttpUtils { return result.toString(); } - public static String sendPost(String url, String param, String body){ + public static String sendPost(String url, String param, String body) { + clearProxySettings(); String urlNameString = url; if (StringUtils.isNotEmpty(param)) { urlNameString = url + "?" + param; From a4f7e150395a7c84fc18403dcd8c193b808bdd5d Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 14:48:01 +0800 Subject: [PATCH 304/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/controller/model/NewModelFromGitController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 958a78bf..be6ebee7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -86,9 +86,9 @@ public class NewModelFromGitController { return AjaxResult.success(this.modelsService.queryVersions(pageRequest, identifier, owner, type)); } - @GetMapping("/queryVersionsMetrics") + @PostMapping("/queryVersionsMetrics") @ApiOperation("查询版本指标") - public AjaxResult queryVersionsMetrics(@RequestParam("params") List params, @RequestParam("type") String type) throws Exception { + public AjaxResult queryVersionsMetrics(@RequestBody List params, @RequestParam("type") String type) throws Exception { return AjaxResult.success(this.modelsService.queryVersionsMetrics(params, type)); } From 68ede7118ad55ff14e7a03f73ba27bafdb6757cf Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 15:20:02 +0800 Subject: [PATCH 305/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 431077b4..216824f7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -988,7 +988,8 @@ public class ModelsServiceImpl implements ModelsService { ModelMetaVo modelMetaVo = JSON.parseObject(meta, ModelMetaVo.class); if (modelMetaVo.getParams() != null) { HashMap params = modelMetaVo.getParams(); - branch.putAll(params); + branch.put("params", params); + ArrayList params_names = new ArrayList<>(); for (String key : params.keySet()) { params_names.add(key); @@ -999,10 +1000,20 @@ public class ModelsServiceImpl implements ModelsService { HashMap metrics = modelMetaVo.getMetrics(); if (Constant.Type_Train.equals(type)) { Map trainMetrics = (Map) metrics.get(Constant.Type_Train); - branch.putAll(trainMetrics); + ArrayList metrics_names = new ArrayList<>(); + for (String key : trainMetrics.keySet()) { + metrics_names.add(key); + } + branch.put("metrics_names", metrics_names); + branch.put("metrics",trainMetrics); } else { Map evaluateMetrics = (Map) metrics.get(Constant.Type_Evaluate); - branch.putAll(evaluateMetrics); + ArrayList metrics_names = new ArrayList<>(); + for (String key : evaluateMetrics.keySet()) { + metrics_names.add(key); + } + branch.put("metrics_names", metrics_names); + branch.put("metrics",evaluateMetrics); } } } From 1fcd8e8b7b40f8e8944d9d26f83b5a8c7ce67f63 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 15:25:41 +0800 Subject: [PATCH 306/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 216824f7..e4f78e13 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1028,7 +1028,7 @@ public class ModelsServiceImpl implements ModelsService { ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(model.getRepoId(), model.getIdentifier(), model.getVersion()); ModelMetaVo modelMetaVo = JSON.parseObject(modelDependency1.getMeta(), ModelMetaVo.class); - HashMap metrics = modelMetaVo.getMetrics(); + HashMap metrics = modelMetaVo.getMetricsParams(); if (Constant.Type_Train.equals(type)) { batchMetrics.add(metrics.get("tarinDetail")); } else { @@ -1271,7 +1271,7 @@ public class ModelsServiceImpl implements ModelsService { } result.put("train", train); - result.put("tarinDetail", trainBatchMetrics); + metrics.put("tarinDetail", trainBatchMetrics); } @@ -1293,10 +1293,11 @@ public class ModelsServiceImpl implements ModelsService { } result.put("evaluate", evaluate); - result.put("evaluateDetail", evaluateBatchMetrics); + metrics.put("evaluateDetail", evaluateBatchMetrics); } modelMetaVo.setMetrics(result); + modelMetaVo.setMetricsParams(metrics); } } From 19ec863dcbfb2f01cf6a441fa95248bbc2974b27 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 16:09:53 +0800 Subject: [PATCH 307/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index e4f78e13..4713b099 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1132,7 +1132,7 @@ public class ModelsServiceImpl implements ModelsService { String parentModel = JSON.toJSONString(map); modelDependency1Dao.deleteModelDependency(parentModel); dvcUtils.deleteDirectory(rootPath); - FileUtil.renameFile(rootPath, rootPath + "_deleted"); + FileUtil.renameFile(rootPath, rootPath + "_deleted" + System.currentTimeMillis()); } public List convert(List> lst, String modelTopic, String modelTagName, String modelTypeName) { From 26749e9e730b71a7a8d90ca41ed73c965436e829 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 17:05:44 +0800 Subject: [PATCH 308/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 58 +++++++++++-------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 216824f7..da21bf35 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -986,34 +986,42 @@ public class ModelsServiceImpl implements ModelsService { String meta = modelDependency1Dao.getMeta(identifier, owner, (String) branch.get("name")); if (StringUtils.isNotEmpty(meta)) { ModelMetaVo modelMetaVo = JSON.parseObject(meta, ModelMetaVo.class); - if (modelMetaVo.getParams() != null) { - HashMap params = modelMetaVo.getParams(); - branch.put("params", params); + if (Constant.Source_Add.equals(modelMetaVo.getModelSource())) { + branch.put("params", null); + branch.put("params_names", new ArrayList<>()); + branch.put("metrics", null); + branch.put("metrics_names", new ArrayList<>()); + } else { + if (modelMetaVo.getParams() != null) { + HashMap params = modelMetaVo.getParams(); + branch.put("params", params); - ArrayList params_names = new ArrayList<>(); - for (String key : params.keySet()) { - params_names.add(key); - } - branch.put("params_names", params_names); - } - if (modelMetaVo.getMetrics() != null) { - HashMap metrics = modelMetaVo.getMetrics(); - if (Constant.Type_Train.equals(type)) { - Map trainMetrics = (Map) metrics.get(Constant.Type_Train); - ArrayList metrics_names = new ArrayList<>(); - for (String key : trainMetrics.keySet()) { - metrics_names.add(key); + ArrayList params_names = new ArrayList<>(); + for (String key : params.keySet()) { + params_names.add(key); } - branch.put("metrics_names", metrics_names); - branch.put("metrics",trainMetrics); - } else { - Map evaluateMetrics = (Map) metrics.get(Constant.Type_Evaluate); - ArrayList metrics_names = new ArrayList<>(); - for (String key : evaluateMetrics.keySet()) { - metrics_names.add(key); + branch.put("params_names", params_names); + } + if (modelMetaVo.getMetrics() != null) { + HashMap metrics = modelMetaVo.getMetrics(); + if (Constant.Type_Train.equals(type)) { + Map trainMetrics = (Map) metrics.get(Constant.Type_Train); + branch.put("metrics", trainMetrics); + + ArrayList metrics_names = new ArrayList<>(); + for (String key : trainMetrics.keySet()) { + metrics_names.add(key); + } + branch.put("metrics_names", metrics_names); + } else { + Map evaluateMetrics = (Map) metrics.get(Constant.Type_Evaluate); + ArrayList metrics_names = new ArrayList<>(); + for (String key : evaluateMetrics.keySet()) { + metrics_names.add(key); + } + branch.put("metrics_names", metrics_names); + branch.put("metrics", evaluateMetrics); } - branch.put("metrics_names", metrics_names); - branch.put("metrics",evaluateMetrics); } } } From c4cf890f6e0b89e0a96569b2731c95c187b08192 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 17 Oct 2024 18:13:42 +0800 Subject: [PATCH 309/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/domain/ModelDependency1.java | 5 ++++ .../service/impl/ModelsServiceImpl.java | 26 ++++++++++++++++--- .../service/impl/NewDatasetServiceImpl.java | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java index 387d6c92..b19e2a4a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java @@ -1,10 +1,12 @@ package com.ruoyi.platform.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import lombok.Data; import java.io.Serializable; +import java.util.List; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @Data @@ -26,4 +28,7 @@ public class ModelDependency1 implements Serializable { private Integer state; private String meta; + + @TableField(exist = false) + private List metrics; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index ee82c9b0..bcada61b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1033,14 +1033,32 @@ public class ModelsServiceImpl implements ModelsService { public List queryVersionsMetrics(List params, String type) { List batchMetrics = new ArrayList<>(); for (ModelDependency1 model : params) { - ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(model.getRepoId(), model.getIdentifier(), model.getVersion()); ModelMetaVo modelMetaVo = JSON.parseObject(modelDependency1.getMeta(), ModelMetaVo.class); HashMap metrics = modelMetaVo.getMetricsParams(); + List needMetrics = model.getMetrics(); + + ArrayList> result = new ArrayList<>(); if (Constant.Type_Train.equals(type)) { - batchMetrics.add(metrics.get("tarinDetail")); + List>> tarinDetail = (List>>) metrics.get("tarinDetail"); + List> trainMetrics = tarinDetail.get(0); + + for (Map trainMetric : trainMetrics) { + if (needMetrics.contains((String) trainMetric.get("name"))) { + result.add(trainMetric); + } + } + batchMetrics.add(result); } else { - batchMetrics.add(metrics.get("evaluateDetail")); + List>> evaluateDetail = (List>>) metrics.get("evaluateDetail"); + List> evaluateMetrics = evaluateDetail.get(0); + + for (Map trainMetric : evaluateMetrics) { + if (needMetrics.contains((String) trainMetric.get("name"))) { + result.add(trainMetric); + } + } + batchMetrics.add(result); } } return batchMetrics; @@ -1140,7 +1158,7 @@ public class ModelsServiceImpl implements ModelsService { String parentModel = JSON.toJSONString(map); modelDependency1Dao.deleteModelDependency(parentModel); dvcUtils.deleteDirectory(rootPath); - FileUtil.renameFile(rootPath, rootPath + "_deleted" + System.currentTimeMillis()); + FileUtil.renameFile(rootPath, rootPath + "_deleted_" + System.currentTimeMillis()); } public List convert(List> lst, String modelTopic, String modelTagName, String modelTypeName) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 94259c5f..aaf139dd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -393,7 +393,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { String rootPath = Paths.get(localPathlocal + "/" + relativePath).getParent().toString(); gitService.deleteBranch(token, owner, repo, version, rootPath); dvcUtils.deleteDirectory(rootPath); - FileUtil.renameFile(rootPath, rootPath + "_deleted"); + FileUtil.renameFile(rootPath, rootPath + "_deleted_" + System.currentTimeMillis()); } @Override From 9d9c1eff48aa68dc99524bbb4e9d983ebd4b1c70 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 18 Oct 2024 08:38:22 +0800 Subject: [PATCH 310/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 5 +-- .../platform/domain/ModelDependency1.java | 3 -- .../ruoyi/platform/service/ModelsService.java | 3 +- .../service/impl/ModelsServiceImpl.java | 35 ++++++++++--------- .../platform/vo/QueryModelMetricsVo.java | 22 ++++++++++++ 5 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/QueryModelMetricsVo.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index be6ebee7..3ba4a9fa 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.service.ModelsService; import com.ruoyi.platform.vo.ModelsVo; +import com.ruoyi.platform.vo.QueryModelMetricsVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.core.io.InputStreamResource; @@ -88,8 +89,8 @@ public class NewModelFromGitController { @PostMapping("/queryVersionsMetrics") @ApiOperation("查询版本指标") - public AjaxResult queryVersionsMetrics(@RequestBody List params, @RequestParam("type") String type) throws Exception { - return AjaxResult.success(this.modelsService.queryVersionsMetrics(params, type)); + public AjaxResult queryVersionsMetrics(@RequestBody QueryModelMetricsVo queryModelMetricsVo) throws Exception { + return AjaxResult.success(this.modelsService.queryVersionsMetrics(queryModelMetricsVo)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java index b19e2a4a..c8d6a224 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency1.java @@ -28,7 +28,4 @@ public class ModelDependency1 implements Serializable { private Integer state; private String meta; - - @TableField(exist = false) - private List metrics; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 72ad75dd..ad3ac9f4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -6,6 +6,7 @@ import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.vo.ModelDependency1TreeVo; import com.ruoyi.platform.vo.ModelsVo; +import com.ruoyi.platform.vo.QueryModelMetricsVo; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -102,7 +103,7 @@ public interface ModelsService { Page> queryVersions(PageRequest pageRequest, String identifier, String owner, String type) throws Exception; - List queryVersionsMetrics(List params, String type) throws Exception; + List queryVersionsMetrics(QueryModelMetricsVo queryModelMetricsVo) throws Exception; List> getVersionList(String identifier, String owner) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index bcada61b..252d3bd6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1030,35 +1030,38 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public List queryVersionsMetrics(List params, String type) { + public List queryVersionsMetrics(QueryModelMetricsVo queryModelMetricsVo) { List batchMetrics = new ArrayList<>(); - for (ModelDependency1 model : params) { - ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(model.getRepoId(), model.getIdentifier(), model.getVersion()); + for (String version : queryModelMetricsVo.getVersions()) { + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(queryModelMetricsVo.getRepoId(), queryModelMetricsVo.getIdentifier(), version); ModelMetaVo modelMetaVo = JSON.parseObject(modelDependency1.getMeta(), ModelMetaVo.class); HashMap metrics = modelMetaVo.getMetricsParams(); - List needMetrics = model.getMetrics(); + List needMetrics = queryModelMetricsVo.getMetrics(); ArrayList> result = new ArrayList<>(); - if (Constant.Type_Train.equals(type)) { + if (Constant.Type_Train.equals(queryModelMetricsVo.getType())) { List>> tarinDetail = (List>>) metrics.get("tarinDetail"); - List> trainMetrics = tarinDetail.get(0); - - for (Map trainMetric : trainMetrics) { - if (needMetrics.contains((String) trainMetric.get("name"))) { - result.add(trainMetric); + if (tarinDetail != null && tarinDetail.size() > 0) { + List> trainMetrics = tarinDetail.get(0); + for (Map trainMetric : trainMetrics) { + if (needMetrics.contains((String) trainMetric.get("name"))) { + result.add(trainMetric); + } } + batchMetrics.add(result); } - batchMetrics.add(result); } else { List>> evaluateDetail = (List>>) metrics.get("evaluateDetail"); - List> evaluateMetrics = evaluateDetail.get(0); + if (evaluateDetail != null && evaluateDetail.size() > 0) { + List> evaluateMetrics = evaluateDetail.get(0); - for (Map trainMetric : evaluateMetrics) { - if (needMetrics.contains((String) trainMetric.get("name"))) { - result.add(trainMetric); + for (Map trainMetric : evaluateMetrics) { + if (needMetrics.contains((String) trainMetric.get("name"))) { + result.add(trainMetric); + } } + batchMetrics.add(result); } - batchMetrics.add(result); } } return batchMetrics; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/QueryModelMetricsVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/QueryModelMetricsVo.java new file mode 100644 index 00000000..435eaea4 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/QueryModelMetricsVo.java @@ -0,0 +1,22 @@ +package com.ruoyi.platform.vo; + +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; + +import java.util.List; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +public class QueryModelMetricsVo { + + private Integer repoId; + + private String identifier; + + private List versions; + + private List metrics; + + private String type; +} From 3d2757bab57f9508e015db2317ab0ccd0331aead Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 18 Oct 2024 09:23:22 +0800 Subject: [PATCH 311/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/ModelsService.java | 2 +- .../service/impl/ModelsServiceImpl.java | 55 ++++++++++--------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index ad3ac9f4..a346d050 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -103,7 +103,7 @@ public interface ModelsService { Page> queryVersions(PageRequest pageRequest, String identifier, String owner, String type) throws Exception; - List queryVersionsMetrics(QueryModelMetricsVo queryModelMetricsVo) throws Exception; + Map queryVersionsMetrics(QueryModelMetricsVo queryModelMetricsVo) throws Exception; List> getVersionList(String identifier, String owner) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 252d3bd6..734e39e7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1030,40 +1030,45 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public List queryVersionsMetrics(QueryModelMetricsVo queryModelMetricsVo) { - List batchMetrics = new ArrayList<>(); - for (String version : queryModelMetricsVo.getVersions()) { - ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(queryModelMetricsVo.getRepoId(), queryModelMetricsVo.getIdentifier(), version); - ModelMetaVo modelMetaVo = JSON.parseObject(modelDependency1.getMeta(), ModelMetaVo.class); - HashMap metrics = modelMetaVo.getMetricsParams(); - List needMetrics = queryModelMetricsVo.getMetrics(); + public Map queryVersionsMetrics(QueryModelMetricsVo queryModelMetricsVo) { + Map batchMetrics = new HashMap<>(); + List needMetrics = queryModelMetricsVo.getMetrics(); + for (String needMetric : needMetrics) { ArrayList> result = new ArrayList<>(); - if (Constant.Type_Train.equals(queryModelMetricsVo.getType())) { - List>> tarinDetail = (List>>) metrics.get("tarinDetail"); - if (tarinDetail != null && tarinDetail.size() > 0) { - List> trainMetrics = tarinDetail.get(0); - for (Map trainMetric : trainMetrics) { - if (needMetrics.contains((String) trainMetric.get("name"))) { - result.add(trainMetric); + + for (String version : queryModelMetricsVo.getVersions()) { + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByRepoAndVersion(queryModelMetricsVo.getRepoId(), queryModelMetricsVo.getIdentifier(), version); + ModelMetaVo modelMetaVo = JSON.parseObject(modelDependency1.getMeta(), ModelMetaVo.class); + HashMap metrics = modelMetaVo.getMetricsParams(); + + if (Constant.Type_Train.equals(queryModelMetricsVo.getType())) { + List>> tarinDetail = (List>>) metrics.get("tarinDetail"); + if (tarinDetail != null && tarinDetail.size() > 0) { + List> trainMetrics = tarinDetail.get(0); + for (Map trainMetric : trainMetrics) { + if (needMetric.equals(trainMetric.get("name"))) { + trainMetric.put("version", version); + result.add(trainMetric); + } } } - batchMetrics.add(result); - } - } else { - List>> evaluateDetail = (List>>) metrics.get("evaluateDetail"); - if (evaluateDetail != null && evaluateDetail.size() > 0) { - List> evaluateMetrics = evaluateDetail.get(0); - - for (Map trainMetric : evaluateMetrics) { - if (needMetrics.contains((String) trainMetric.get("name"))) { - result.add(trainMetric); + } else { + List>> evaluateDetail = (List>>) metrics.get("evaluateDetail"); + if (evaluateDetail != null && evaluateDetail.size() > 0) { + List> evaluateMetrics = evaluateDetail.get(0); + for (Map evaluateMetric : evaluateMetrics) { + if (needMetric.equals(evaluateMetric.get("name"))) { + evaluateMetric.put("version", version); + result.add(evaluateMetric); + } } } - batchMetrics.add(result); } } + batchMetrics.put(needMetric, result); } + return batchMetrics; } From 4fbd278954954dfb3023872d9e53fe4673555083 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 18 Oct 2024 09:27:52 +0800 Subject: [PATCH 312/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=95=B0=E6=8D=AE=E9=9B=86=E5=92=8C=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ExperimentInsServiceImpl.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 59168810..da66d68f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -59,6 +59,11 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { private NewHttpUtils httpUtils; @Resource private K8sClientUtil k8sClientUtil; + @Resource + private ModelsServiceImpl modelsService; + @Resource + private NewDatasetServiceImpl newDatasetService; + private final MinioUtil minioUtil; public ExperimentInsServiceImpl(MinioUtil minioUtil) { @@ -401,6 +406,10 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { ins.setStatus("Terminated"); ins.setFinishTime(new Date()); this.experimentInsDao.update(ins); + + //删除数据集模型导出版本 + deleteExportVersion(runResMap); + return true; } else { return false; @@ -411,6 +420,58 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } + void deleteExportVersion(Map runResMap) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + + Map spec = (Map) runResMap.get("spec"); + if (spec != null) { + List> templates = (ArrayList>) spec.get("templates"); + for (Map template : templates) { + String name = (String) template.get("name"); + if (StringUtils.isNotEmpty(name) && name.contains("model-export")) { + Map container = (Map) template.get("container"); + List args = (ArrayList) container.get("args"); + + Map model = new HashMap<>(); + String version = ""; + for (String arg : args) { + if (arg.startsWith("--model_id")) { + String modelStr = arg.substring("--model_id=".length()); + model = JsonUtils.jsonToMap(modelStr); + } + if (arg.startsWith("--version")) { + version = arg.substring("--version=".length()); + } + } + String relativePath = ci4sUsername + "/model/" + model.get("id") + "/" + model.get("identifier") + "/" + version + "/model"; + ; + modelsService.deleteVersion(Integer.valueOf((String) model.get("id")), (String) model.get("identifier"), (String) model.get("owner"), version, relativePath); + } + + if (StringUtils.isNotEmpty(name) && name.contains("dataset-export")) { + Map container = (Map) template.get("container"); + List args = (ArrayList) container.get("args"); + + Map dataset = new HashMap<>(); + String version = ""; + + for (String arg : args) { + if (arg.startsWith("--dataset_id")) { + String datasetStr = arg.substring("--dataset_id=".length()); + dataset = JsonUtils.jsonToMap(datasetStr); + } + if (arg.startsWith("--version")) { + version = arg.substring("--version=".length()); + } + } + String relativePath = ci4sUsername + "/datasets/" + dataset.get("id") + "/" + dataset.get("identifier") + "/" + version + "/dataset"; + newDatasetService.deleteDatasetVersionNew((String) dataset.get("identifier"), (String) dataset.get("owner"), version, relativePath); + } + } + } + } + /** * 查询实验实例日志的单个节点日志 * From 28c2fa57932c09e063b6a4bf05fcc20a6b8b1c68 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 18 Oct 2024 09:47:37 +0800 Subject: [PATCH 313/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=95=B0=E6=8D=AE=E9=9B=86=E5=92=8C=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index da66d68f..f1dab53f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -424,7 +424,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - Map spec = (Map) runResMap.get("spec"); + Map data = (Map) runResMap.get("data"); + Map spec = (Map) data.get("spec"); if (spec != null) { List> templates = (ArrayList>) spec.get("templates"); for (Map template : templates) { From 30b6b1582050cb2c74649e7283d18ecebb9ca0b7 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 18 Oct 2024 15:50:29 +0800 Subject: [PATCH 314/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC=E6=8C=87=E6=A0=87=E5=AF=B9?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ModelsServiceImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 734e39e7..3742478d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1009,15 +1009,19 @@ public class ModelsServiceImpl implements ModelsService { branch.put("metrics", trainMetrics); ArrayList metrics_names = new ArrayList<>(); - for (String key : trainMetrics.keySet()) { - metrics_names.add(key); + if (trainMetrics != null) { + for (String key : trainMetrics.keySet()) { + metrics_names.add(key); + } } branch.put("metrics_names", metrics_names); } else { Map evaluateMetrics = (Map) metrics.get(Constant.Type_Evaluate); ArrayList metrics_names = new ArrayList<>(); - for (String key : evaluateMetrics.keySet()) { - metrics_names.add(key); + if (evaluateMetrics != null) { + for (String key : evaluateMetrics.keySet()) { + metrics_names.add(key); + } } branch.put("metrics_names", metrics_names); branch.put("metrics", evaluateMetrics); From d615159e70e45951e5d2875260496282520fe295 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Fri, 18 Oct 2024 16:28:17 +0800 Subject: [PATCH 315/381] =?UTF-8?q?=E4=BC=98=E5=8C=96naocs=E9=83=A8?= =?UTF-8?q?=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/template-yaml/k8s-3nacos.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/k8s/template-yaml/k8s-3nacos.yaml b/k8s/template-yaml/k8s-3nacos.yaml index c21d6cf5..225c6b23 100644 --- a/k8s/template-yaml/k8s-3nacos.yaml +++ b/k8s/template-yaml/k8s-3nacos.yaml @@ -37,6 +37,10 @@ spec: - containerPort: 8848 - containerPort: 9848 - containerPort: 9849 + initContainers: + - name: init-mydb + image: busybox:1.31 + command: [ 'sh', '-c', 'nc -zv mysql.argo.svc 3306' ] restartPolicy: Always --- From 663aa97b77bb4c941c0f52cd56762c5526d3b7f3 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 19 Oct 2024 08:36:33 +0800 Subject: [PATCH 316/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++++ .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 3742478d..b97fd948 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -706,6 +706,10 @@ public class ModelsServiceImpl implements ModelsService { String metaPath = rootPath + "/metadata"; String relatePath = ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName + "/model"; + //干掉目标文件夹 + dvcUtils.deleteDirectory(rootPath); + FileUtil.renameFile(rootPath, rootPath + "_deleted_" + System.currentTimeMillis()); + //克隆 dvcUtils.gitClone(rootPath, projectUrl, oldModelDependencys.get(0).getVersion(), gitLinkUsername, gitLinkPassword); dvcUtils.refreshRemoteBranches(rootPath, gitLinkUsername, gitLinkPassword, oldModelDependencys.get(0).getVersion()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index aaf139dd..a27ff01d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -191,6 +191,10 @@ public class NewDatasetServiceImpl implements NewDatasetService { String datasetPath = localPath + "/dataset"; String projectUrl = gitendpoint + "/" + owner + "/" + repositoryName + ".git"; + //干掉目标文件夹 + dvcUtils.deleteDirectory(localPath); + FileUtil.renameFile(localPath, localPath + "_deleted_" + System.currentTimeMillis()); + //查询项目信息 Map projectDetail = gitService.getProjectDetail(owner, repositoryName, token); From caf8a7eadbdee2a847f68384d099a1fe090709cc Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 19 Oct 2024 08:42:47 +0800 Subject: [PATCH 317/381] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 35232b47..93f990c1 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -20,7 +20,7 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'http://172.20.32.185:31213', // 开发环境 + target: 'http://172.20.32.181:31213', // 开发环境 // target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https From 1b777256e65896bb13b7c60c59144736108119b5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 19 Oct 2024 08:45:03 +0800 Subject: [PATCH 318/381] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 93f990c1..35232b47 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -20,7 +20,7 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'http://172.20.32.181:31213', // 开发环境 + target: 'http://172.20.32.185:31213', // 开发环境 // target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https From 0fda060243a3c5773d5fc4cb9eafe986f77a120e Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 19 Oct 2024 09:59:05 +0800 Subject: [PATCH 319/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ModelsServiceImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index b97fd948..f69b7359 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1308,13 +1308,13 @@ public class ModelsServiceImpl implements ModelsService { // 记录训练指标详情 HashMap map = aimsService.queryMetricsParams(runId); - List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); - trainBatchMetrics.add(batchMetric); - + if (map != null && !map.isEmpty()) { + List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); + trainBatchMetrics.add(batchMetric); + } } result.put("train", train); metrics.put("tarinDetail", trainBatchMetrics); - } JSONArray testMetrics = (JSONArray) metrics.get("evaluate"); @@ -1330,8 +1330,10 @@ public class ModelsServiceImpl implements ModelsService { // 记录验证指标详情 HashMap map = aimsService.queryMetricsParams(runId); - List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); - evaluateBatchMetrics.add(batchMetric); + if (map != null && !map.isEmpty()) { + List> batchMetric = aimsService.getBatchMetric((String) map.get("run_hash"), (String) map.get("params")); + evaluateBatchMetrics.add(batchMetric); + } } result.put("evaluate", evaluate); From 2bd85a20183e9dd700372ed58cb150756ea41d8c Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 19 Oct 2024 14:39:32 +0800 Subject: [PATCH 320/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A8=A1=E5=9E=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/mapper/ModelDependency1Dao.java | 2 + .../impl/ExperimentInsServiceImpl.java | 66 +++++++------------ .../service/impl/ExperimentServiceImpl.java | 1 + .../com/ruoyi/platform/vo/ModelMetaVo.java | 3 + .../ModelDependency1DaoMapper.xml | 7 ++ 5 files changed, 35 insertions(+), 44 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java index 721496ea..0b80f58e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java @@ -21,6 +21,8 @@ public interface ModelDependency1Dao { ModelDependency1 queryByTrainTask(@Param("trainTask") String trainTask); + ModelDependency1 queryByInsId(@Param("insId") String insId); + int deleteModel(@Param("repoId") Integer repoId, @Param("identifier") String identifier, @Param("owner") String owner, @Param("version") String version); int deleteModelDependency(@Param("parentModel") String parentModel); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index f1dab53f..7543527f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -2,8 +2,10 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.domain.ExperimentIns; +import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; +import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.service.WorkflowService; import com.ruoyi.platform.utils.*; @@ -64,6 +66,9 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Resource private NewDatasetServiceImpl newDatasetService; + @Resource + private ModelDependency1Dao modelDependency1Dao; + private final MinioUtil minioUtil; public ExperimentInsServiceImpl(MinioUtil minioUtil) { @@ -408,7 +413,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { this.experimentInsDao.update(ins); //删除数据集模型导出版本 - deleteExportVersion(runResMap); + deleteExportVersion(experimentIns); return true; } else { @@ -420,55 +425,28 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } - void deleteExportVersion(Map runResMap) throws Exception { + void deleteExportVersion(ExperimentIns experimentIns) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - Map data = (Map) runResMap.get("data"); - Map spec = (Map) data.get("spec"); - if (spec != null) { - List> templates = (ArrayList>) spec.get("templates"); - for (Map template : templates) { - String name = (String) template.get("name"); - if (StringUtils.isNotEmpty(name) && name.contains("model-export")) { - Map container = (Map) template.get("container"); - List args = (ArrayList) container.get("args"); - - Map model = new HashMap<>(); - String version = ""; - for (String arg : args) { - if (arg.startsWith("--model_id")) { - String modelStr = arg.substring("--model_id=".length()); - model = JsonUtils.jsonToMap(modelStr); - } - if (arg.startsWith("--version")) { - version = arg.substring("--version=".length()); - } - } - String relativePath = ci4sUsername + "/model/" + model.get("id") + "/" + model.get("identifier") + "/" + version + "/model"; - ; - modelsService.deleteVersion(Integer.valueOf((String) model.get("id")), (String) model.get("identifier"), (String) model.get("owner"), version, relativePath); - } - - if (StringUtils.isNotEmpty(name) && name.contains("dataset-export")) { - Map container = (Map) template.get("container"); - List args = (ArrayList) container.get("args"); + String nodesResult = experimentIns.getNodesResult(); - Map dataset = new HashMap<>(); - String version = ""; + if (StringUtils.isNotEmpty(nodesResult)) { + Map nodesResultMap = JsonUtils.jsonToMap(nodesResult); + Map paramOutput = (Map) nodesResultMap.get("param_output"); - for (String arg : args) { - if (arg.startsWith("--dataset_id")) { - String datasetStr = arg.substring("--dataset_id=".length()); - dataset = JsonUtils.jsonToMap(datasetStr); - } - if (arg.startsWith("--version")) { - version = arg.substring("--version=".length()); - } - } - String relativePath = ci4sUsername + "/datasets/" + dataset.get("id") + "/" + dataset.get("identifier") + "/" + version + "/dataset"; - newDatasetService.deleteDatasetVersionNew((String) dataset.get("identifier"), (String) dataset.get("owner"), version, relativePath); + for (String key : paramOutput.keySet()) { + //删除导出模型版本 + if (key.contains("model-export")) { + String query = "\"insId\":" + experimentIns.getId(); + ModelDependency1 modelDependency1 = modelDependency1Dao.queryByInsId(query); + String relativePath = ci4sUsername + "/model/" + modelDependency1.getRepoId() + "/" + modelDependency1.getIdentifier() + "/" + modelDependency1.getVersion() + "/model"; + modelsService.deleteVersion(modelDependency1.getRepoId(), modelDependency1.getIdentifier(), modelDependency1.getOwner(), modelDependency1.getVersion(), relativePath); + break; } + //删除导出数据集版本 todo +// String relativePath = ci4sUsername + "/datasets/" + dataset.get("id") + "/" + dataset.get("identifier") + "/" + version + "/dataset"; +// newDatasetService.deleteDatasetVersionNew((String) dataset.get("identifier"), (String) dataset.get("owner"), version, relativePath); } } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index e57296ca..846581c6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -515,6 +515,7 @@ public class ExperimentServiceImpl implements ExperimentService { while (dependendcyIterator.hasNext()) { ModelsVo modelMetaVo = new ModelsVo(); + modelMetaVo.setInsId(experimentInsId); modelMetaVo.setOwner(gitLinkUsername); ModelDependency1 modelDependency = new ModelDependency1(); modelDependency.setOwner(gitLinkUsername); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java index 2a5a538e..2a5cc2f5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ModelMetaVo.java @@ -62,6 +62,9 @@ public class ModelMetaVo implements Serializable { @ApiModelProperty(value = "指标查询参数") private HashMap metricsParams; + @ApiModelProperty(value = "实验实例id") + private Integer insId; + @ApiModelProperty(value = "训练任务") private TrainTaskDepency trainTask; diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index 4e77a29b..95e29f1f 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -60,6 +60,13 @@ order by create_time desc limit 1 + + + + insert into dataset_temp_storage(name, version, source, state, create_by, create_time, update_by, update_time) From c9377ee2748540b2edd0817213f4e62c30b47481 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 19 Oct 2024 17:13:17 +0800 Subject: [PATCH 327/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=95=B0=E6=8D=AE=E9=9B=86=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index d1fa276d..f327e71c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -454,7 +454,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { //删除导出数据集版本 todo if (key.contains("dataset-export")) { HashMap queryMap = new HashMap(); - queryMap.put("insId", experimentIns.getId()); + queryMap.put("ins_id", experimentIns.getId()); DatasetTempStorage datasetTempStorage = datasetTempStorageDao.queryByInsId(JSON.toJSONString(queryMap)); Map source = JsonUtils.jsonToMap(datasetTempStorage.getSource()); String relativePath = ci4sUsername + "/datasets/" + source.get("repo_id") + "/" + source.get("identifier") + "/" + source.get("version") + "/dataset"; From 6a8f5c2d1ff7bfbc935f417835cda5524c46baa5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 08:34:39 +0800 Subject: [PATCH 328/381] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index f327e71c..4d3a96b9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -451,7 +451,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { modelsService.deleteVersion(modelDependency1.getRepoId(), modelDependency1.getIdentifier(), modelDependency1.getOwner(), modelDependency1.getVersion(), relativePath); break; } - //删除导出数据集版本 todo + //删除导出数据集版本 if (key.contains("dataset-export")) { HashMap queryMap = new HashMap(); queryMap.put("ins_id", experimentIns.getId()); From a311f166b6dcce627c42dc38d0ff8b21034883cd Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 08:56:49 +0800 Subject: [PATCH 329/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/managementPlatform/ExperimentInsDaoMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 39d12aaa..8d22dc41 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -63,7 +63,7 @@ select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, global_param,metric_record, start_time, finish_time, create_by, create_time, update_by, update_time, state from experiment_ins where experiment_id = #{experiment_id} and state = 1 - order by create_time DESC + order by update_time DESC limit 5 From a99a90a1bc62096c671f0cb2606e9173925b1eae Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 09:33:43 +0800 Subject: [PATCH 330/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExperimentInstanceStatusTask.java | 45 +------------------ .../impl/ExperimentInsServiceImpl.java | 19 +++++++- 2 files changed, 19 insertions(+), 45 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 131dca48..51feb5b4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -34,7 +34,6 @@ public class ExperimentInstanceStatusTask { // 首先查到所有非终止态的实验实例 List experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); // 去argo查询状态 - List updateList = new ArrayList<>(); if (experimentInsList != null && experimentInsList.size() > 0) { for (ExperimentIns experimentIns : experimentInsList) { //当原本状态为null或非终止态时才调用argo接口 @@ -49,48 +48,6 @@ public class ExperimentInstanceStatusTask { synchronized (experimentIds) { experimentIds.add(experimentIns.getExperimentId()); } - updateList.add(experimentIns); - } - } - if (updateList.size() > 0) { - experimentInsDao.insertOrUpdateBatch(updateList); - - //遍历模型关系表,找到 - List modelDependencyList = new ArrayList(); - for (ExperimentIns experimentIns : updateList) { - ModelDependency modelDependencyquery = new ModelDependency(); - modelDependencyquery.setExpInsId(experimentIns.getId()); - modelDependencyquery.setState(2); - - List modelDependencyListquery = modelDependencyDao.queryByModelDependency(modelDependencyquery); - if (modelDependencyListquery == null || modelDependencyListquery.size() == 0) { - continue; - } - ModelDependency modelDependency = modelDependencyListquery.get(0); - //查看状态, - if (StringUtils.equals("Failed", experimentIns.getStatus())) { - //取出节点状态 - String trainTask = modelDependency.getTrainTask(); - Map trainMap = JacksonUtil.parseJSONStr2Map(trainTask); - String task_id = (String) trainMap.get("task_id"); - if (StringUtils.isEmpty(task_id)) { - continue; - } - String nodesStatus = experimentIns.getNodesStatus(); - Map nodeMaps = JacksonUtil.parseJSONStr2Map(nodesStatus); - Map nodeMap = JacksonUtil.parseJSONStr2Map(JacksonUtil.toJSONString(nodeMaps.get(task_id))); - - if (nodeMap == null) { - continue; - } - if (!StringUtils.equals("Succeeded", (String) nodeMap.get("phase"))) { - modelDependency.setState(0); - modelDependencyList.add(modelDependency); - } - } - } - if (modelDependencyList.size() > 0) { - modelDependencyDao.insertOrUpdateBatch(modelDependencyList); } } } @@ -105,7 +62,7 @@ public class ExperimentInstanceStatusTask { for (Integer experimentId : experimentIds) { // 获取当前实验的所有实例列表 List insList = experimentInsService.getByExperimentId(experimentId); - List statusList = new ArrayList(); + List statusList = new ArrayList<>(); // 更新实验状态列表 for (int i = 0; i < insList.size(); i++) { statusList.add(insList.get(i).getStatus()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 4d3a96b9..635b10bd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.service.impl; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.domain.DatasetTempStorage; +import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.mapper.DatasetTempStorageDao; @@ -120,7 +121,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { * @return 实验列表 */ @Override - public List getByExperimentId(Integer experimentId) throws IOException { + public List getByExperimentId(Integer experimentId) { //代码全部迁移至定时任务 //搞个标记,当状态改变才去改表 @@ -239,6 +240,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { return "实验实例正在运行,不可删除"; } experimentIns.setState(0); + updateExperimentStatus(experimentIns.getExperimentId()); return this.experimentInsDao.update(experimentIns) > 0 ? "删除成功" : "删除失败"; } @@ -665,6 +667,21 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { return flag; } + void updateExperimentStatus(Integer experimentId) { + List insList = getByExperimentId(experimentId); + List statusList = new ArrayList<>(); + // 更新实验状态列表 + for (int i = 0; i < insList.size(); i++) { + statusList.add(insList.get(i).getStatus()); + } + String subStatus = statusList.toString().substring(1, statusList.toString().length() - 1); + Experiment experiment = experimentDao.queryById(experimentId); + experiment.setStatusList(subStatus); + List updateExperiments = new ArrayList<>(); + updateExperiments.add(experiment); + experimentDao.insertOrUpdateBatch(updateExperiments); + } + } From 8e6a5f643c87bbf6da6b6f1523e4ab9ac28221b5 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 09:46:11 +0800 Subject: [PATCH 331/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExperimentInsServiceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 635b10bd..d8c59007 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -240,9 +240,13 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { return "实验实例正在运行,不可删除"; } experimentIns.setState(0); - updateExperimentStatus(experimentIns.getExperimentId()); - return this.experimentInsDao.update(experimentIns) > 0 ? "删除成功" : "删除失败"; - + int update = this.experimentInsDao.update(experimentIns); + if (update > 0) { + updateExperimentStatus(experimentIns.getExperimentId()); + return "删除成功"; + } else { + return "删除失败"; + } } @Override From a270e685e43cca093ee7a9234ffbc6f382dd6ac0 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 10:00:57 +0800 Subject: [PATCH 332/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/ExperimentInsService.java | 2 ++ .../ruoyi/platform/service/impl/ExperimentInsServiceImpl.java | 4 +++- .../ruoyi/platform/service/impl/ExperimentServiceImpl.java | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index 3953a01e..98ee1b6d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -108,4 +108,6 @@ public interface ExperimentInsService { List queryByExperimentIsNotTerminated(); Map countByStatus(); + + void updateExperimentStatus(Integer experimentId); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index d8c59007..1319f0a9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -426,6 +426,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { //删除数据集模型导出版本 deleteExportVersion(experimentIns); + //修改实验状态 + updateExperimentStatus(experimentIns.getExperimentId()); return true; } else { @@ -671,7 +673,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { return flag; } - void updateExperimentStatus(Integer experimentId) { + public void updateExperimentStatus(Integer experimentId) { List insList = getByExperimentId(experimentId); List statusList = new ArrayList<>(); // 更新实验状态列表 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 6ddf7386..9ac0e089 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -311,6 +311,7 @@ public class ExperimentServiceImpl implements ExperimentService { } List updatedExperimentInsList = experimentInsService.getByExperimentId(id); experiment.setExperimentInsList(updatedExperimentInsList); + experimentInsService.updateExperimentStatus(id); return experiment; } From f023bc59f326097b27827928d4c32a7354199395 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 11:16:06 +0800 Subject: [PATCH 333/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/scheduling/ExperimentInstanceStatusTask.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 51feb5b4..32b2fedf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -34,6 +34,7 @@ public class ExperimentInstanceStatusTask { // 首先查到所有非终止态的实验实例 List experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); // 去argo查询状态 + List updateList = new ArrayList<>(); if (experimentInsList != null && experimentInsList.size() > 0) { for (ExperimentIns experimentIns : experimentInsList) { //当原本状态为null或非终止态时才调用argo接口 @@ -48,6 +49,10 @@ public class ExperimentInstanceStatusTask { synchronized (experimentIds) { experimentIds.add(experimentIns.getExperimentId()); } + updateList.add(experimentIns); + } + if (updateList.size() > 0) { + experimentInsDao.insertOrUpdateBatch(updateList); } } } From a6689ede3414344420e1af7858ded4d2bee91155 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 14:59:07 +0800 Subject: [PATCH 334/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/constant/Constant.java | 1 + .../ruoyi/platform/domain/ExperimentIns.java | 163 +----------------- .../ExperimentInstanceStatusTask.java | 43 ++++- 3 files changed, 45 insertions(+), 162 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java index b325cc5d..834f63e4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java @@ -31,6 +31,7 @@ public class Constant { public final static String Pending = "Pending"; public final static String Init = "Init"; public final static String Stopped = "Stopped"; + public final static String Succeeded = "Succeeded"; public final static String Type_Train = "train"; public final static String Type_Evaluate = "evaluate"; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java index 31246fd9..d29b7e10 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.io.Serializable; import java.util.Date; @@ -18,6 +19,7 @@ import java.util.Date; */ @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @ApiModel("实验实例对象") +@Data public class ExperimentIns implements Serializable { private static final long serialVersionUID = 623464560240790680L; @ApiModelProperty(name = "id") @@ -53,6 +55,10 @@ public class ExperimentIns implements Serializable { @JsonRawValue private String metricRecord; + @ApiModelProperty(value = "指标数值", notes = "以JSON字符串格式存储") + @JsonRawValue + private String metricValue; + @ApiModelProperty(value = "开始时间") private Date startTime; @@ -81,162 +87,5 @@ public class ExperimentIns implements Serializable { @TableField(exist = false) private String experimentName; - public ExperimentIns() { - } - - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Integer getExperimentId() { - return experimentId; - } - - public void setExperimentId(Integer experimentId) { - this.experimentId = experimentId; - } - - public String getArgoInsName() { - return argoInsName; - } - - public void setArgoInsName(String argoInsName) { - this.argoInsName = argoInsName; - } - - public String getArgoInsNs() { - return argoInsNs; - } - - public void setArgoInsNs(String argoInsNs) { - this.argoInsNs = argoInsNs; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - - public String getNodesStatus() { - return nodesStatus; - } - - public void setNodesStatus(String nodesStatus) { - this.nodesStatus = nodesStatus; - } - - public String getNodesResult() { - return nodesResult; - } - - public void setNodesResult(String nodesResult) { - this.nodesResult = nodesResult; - } - - public String getNodesLogs() { - return nodesLogs; - } - - public void setNodesLogs(String nodesLogs) { - this.nodesLogs = nodesLogs; - } - - public String getGlobalParam() { - return globalParam; - } - - public void setGlobalParam(String globalParam) { - this.globalParam = globalParam; - } - - public void setStartTime(Date startTime) { - this.startTime = startTime; - } - - public Date getStartTime() { - return startTime; - } - - public void setFinishTime(Date finishTime) { - this.finishTime = finishTime; - } - - public Date getFinishTime() { - return finishTime; - } - - - public String getCreateBy() { - return createBy; - } - - public void setCreateBy(String createBy) { - this.createBy = createBy; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - public String getUpdateBy() { - return updateBy; - } - - public void setUpdateBy(String updateBy) { - this.updateBy = updateBy; - } - - public Date getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public Integer getState() { - return state; - } - - public void setState(Integer state) { - this.state = state; - } - - public Long getWorkflowId() { - return workflowId; - } - - public void setWorkflowId(Long workflowId) { - this.workflowId = workflowId; - } - - public String getMetricRecord() { - return metricRecord; - } - - public void setMetricRecord(String metricRecord) { - this.metricRecord = metricRecord; - } - - public String getExperimentName() { - return experimentName; - } - - public void setExperimentName(String experimentName) { - this.experimentName = experimentName; - } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 32b2fedf..eaf6ee12 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -1,13 +1,15 @@ package com.ruoyi.platform.scheduling; +import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; -import com.ruoyi.platform.domain.ModelDependency; import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; -import com.ruoyi.platform.mapper.ModelDependencyDao; +import com.ruoyi.platform.service.AimService; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.utils.JacksonUtil; +import com.ruoyi.platform.utils.JsonUtils; +import com.ruoyi.platform.vo.InsMetricInfoVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -26,11 +28,12 @@ public class ExperimentInstanceStatusTask { @Resource private ExperimentInsDao experimentInsDao; @Resource - private ModelDependencyDao modelDependencyDao; + private AimService aimService; + private List experimentIds = new ArrayList<>(); @Scheduled(cron = "0/30 * * * * ?") // 每30S执行一次 - public void executeExperimentInsStatus() throws IOException { + public void executeExperimentInsStatus() throws Exception { // 首先查到所有非终止态的实验实例 List experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); // 去argo查询状态 @@ -38,12 +41,42 @@ public class ExperimentInstanceStatusTask { if (experimentInsList != null && experimentInsList.size() > 0) { for (ExperimentIns experimentIns : experimentInsList) { //当原本状态为null或非终止态时才调用argo接口 - String oldStatus = experimentIns.getStatus(); try { experimentIns = experimentInsService.queryStatusFromArgo(experimentIns); } catch (Exception e) { experimentIns.setStatus("Failed"); } + //运行成功的实验实例记录指标数值 + if (Constant.Succeeded.equals(experimentIns.getStatus())) { + Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); + List> trainMetricRecord = (List>) metricRecord.get("train"); + List> evaluateMetricRecord = (List>) metricRecord.get("evaluate"); + + HashMap metricValue = new HashMap<>(); + HashMap trainMetricValue = new HashMap<>(); + HashMap evaluateMetricValue = new HashMap<>(); + + if (trainMetricRecord != null && !trainMetricRecord.isEmpty()) { + String runId = (String) trainMetricRecord.get(0).get("run_id"); + List expTrainInfos = aimService.getExpTrainInfos1(true, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + trainMetricValue.putAll(metrics); + } + } + + if (evaluateMetricRecord != null && !evaluateMetricRecord.isEmpty()) { + String runId = (String) evaluateMetricRecord.get(0).get("run_id"); + List expTrainInfos = aimService.getExpTrainInfos1(false, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + evaluateMetricValue.putAll(metrics); + } + } + metricValue.put("train", trainMetricValue); + metricValue.put("evaluate", evaluateMetricValue); + experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); + } experimentIns.setUpdateTime(new Date()); // 线程安全的添加操作 synchronized (experimentIds) { From d1c35e4bee525224c69ee2925d967e44ab123a7c Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 16:21:29 +0800 Subject: [PATCH 335/381] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=AF=B9=E6=AF=94=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/service/ServiceController.java | 6 +++++ .../service/impl/ServiceServiceImpl.java | 23 ++++++++++++++++++ .../com/ruoyi/platform/utils/ConvertUtil.java | 24 +++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index 7d973bae..3eb28e4c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -89,6 +89,12 @@ public class ServiceController extends BaseController { return genericsSuccess(serviceService.getServiceVersion(id)); } + @GetMapping("serviceVersionCompare") + @ApiOperation("服务版本版本对比") + public GenericsAjaxResult> serviceVersionCompare(@RequestParam("id1") Long id1, @RequestParam("id2") Long id2) throws IllegalAccessException { + return genericsSuccess(serviceService.serviceVersionCompare(id1, id2)); + } + @GetMapping("/serviceVersionList/{id}") @ApiOperation("查询服务版本列表") public GenericsAjaxResult> serviceVersionList(@PathVariable("id") Long id) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 11b30f45..36e0ef08 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -7,6 +7,7 @@ import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.ServiceVersion; import com.ruoyi.platform.mapper.ServiceDao; import com.ruoyi.platform.service.ServiceService; +import com.ruoyi.platform.utils.ConvertUtil; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.vo.serviceVos.ServiceCodeConfigVo; @@ -157,6 +158,28 @@ public class ServiceServiceImpl implements ServiceService { return serviceVersionVo; } + @Override + public Map serviceVersionCompare(Long id1, Long id2) throws IllegalAccessException { + HashMap result = new HashMap<>(); + + ServiceVersion serviceVersion1 = serviceDao.getServiceVersionById(id1); + ServiceVersion serviceVersion2 = serviceDao.getServiceVersionById(id2); + com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion1.getServiceId()); + + ServiceVersionVo serviceVersionVo1 = getServiceVersionVo(serviceVersion1); + ServiceVersionVo serviceVersionVo2 = getServiceVersionVo(serviceVersion1); + serviceVersionVo1.setServiceName(service.getServiceName()); + serviceVersionVo2.setServiceName(service.getServiceName()); + + Map compareMap = ConvertUtil.compareObjects(serviceVersion1, serviceVersion2); + + result.put("version1", serviceVersionVo1); + result.put("version2", serviceVersionVo2); + result.put("differences", compareMap); + + return result; + } + @Override public String deleteService(Long id) { com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index a4195a17..52c89dd3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -158,5 +158,29 @@ public class ConvertUtil { } return sb.toString(); } + + public static Map compareObjects(Object obj1, Object obj2) throws IllegalAccessException { + Map differences = new HashMap<>(); + + // Get the class of the first object + Class clazz = obj1.getClass(); + + // Iterate over all fields of the class + for (Field field : clazz.getDeclaredFields()) { + // Set the fields to be accessible + field.setAccessible(true); + + // Get the field value from both objects + Object value1 = field.get(obj1); + Object value2 = field.get(obj2); + + // Compare the field values + if ((value1 !=null && !value1.equals(value2)) || (value2 !=null && !value2.equals(value1))) { + differences.put(field.getName(), "Field " + field.getName() + " differs: " + value1 + " vs " + value2); + } + } + + return differences; + } } From 957c38228a3509e7acf334f8608dcab4f0d6d7fd Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 16:21:36 +0800 Subject: [PATCH 336/381] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=AF=B9=E6=AF=94=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/platform/service/ServiceService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index 6ce6bc6a..5c69f257 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -28,6 +28,8 @@ public interface ServiceService { ServiceVersionVo getServiceVersion(Long id); + Map serviceVersionCompare(Long id1, Long id2) throws IllegalAccessException; + String deleteService(Long id); String deleteServiceVersion(Long id); From 0b5756e1bb2aec14c61bd2a7607f223afa674832 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 16:59:40 +0800 Subject: [PATCH 337/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/managementPlatform/ExperimentInsDaoMapper.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 8d22dc41..d23de89a 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -296,7 +296,8 @@ create_time = VALUES(create_time), update_by = VALUES(update_by), update_time = VALUES(update_time), - state = VALUES(state); + state = VALUES(state), + metric_value = VALUES(metric_value); From 1ec6bec29d4ef45cfed087610d6086612ce2063c Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 17:14:58 +0800 Subject: [PATCH 338/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExperimentInstanceStatusTask.java | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index eaf6ee12..64f43582 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -49,28 +49,38 @@ public class ExperimentInstanceStatusTask { //运行成功的实验实例记录指标数值 if (Constant.Succeeded.equals(experimentIns.getStatus())) { Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); - List> trainMetricRecord = (List>) metricRecord.get("train"); - List> evaluateMetricRecord = (List>) metricRecord.get("evaluate"); + List> trainMetricRecords = (List>) metricRecord.get("train"); + List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); HashMap metricValue = new HashMap<>(); HashMap trainMetricValue = new HashMap<>(); HashMap evaluateMetricValue = new HashMap<>(); - if (trainMetricRecord != null && !trainMetricRecord.isEmpty()) { - String runId = (String) trainMetricRecord.get(0).get("run_id"); - List expTrainInfos = aimService.getExpTrainInfos1(true, experimentIns.getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics = expTrainInfo.getMetrics(); - trainMetricValue.putAll(metrics); + if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { + for (Map trainMetricRecord : trainMetricRecords) { + String taskId = (String) trainMetricRecord.get("task_id"); + if (taskId.startsWith("model-export")) { + String runId = (String) trainMetricRecord.get("run_id"); + List expTrainInfos = aimService.getExpTrainInfos1(true, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + trainMetricValue.putAll(metrics); + } + } } } - if (evaluateMetricRecord != null && !evaluateMetricRecord.isEmpty()) { - String runId = (String) evaluateMetricRecord.get(0).get("run_id"); - List expTrainInfos = aimService.getExpTrainInfos1(false, experimentIns.getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics = expTrainInfo.getMetrics(); - evaluateMetricValue.putAll(metrics); + if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { + for (Map evaluateMetricRecord : evaluateMetricRecords) { + String taskId = (String) evaluateMetricRecord.get("task_id"); + if (taskId.startsWith("model-export")) { + String runId = (String) evaluateMetricRecord.get("run_id"); + List expTrainInfos = aimService.getExpTrainInfos1(false, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + evaluateMetricValue.putAll(metrics); + } + } } } metricValue.put("train", trainMetricValue); From 803eea2054f7e9552c39c63fdd6721fe8c0886c4 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 17:39:39 +0800 Subject: [PATCH 339/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/scheduling/ExperimentInstanceStatusTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 64f43582..dad643c6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -59,7 +59,7 @@ public class ExperimentInstanceStatusTask { if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { for (Map trainMetricRecord : trainMetricRecords) { String taskId = (String) trainMetricRecord.get("task_id"); - if (taskId.startsWith("model-export")) { + if (taskId.startsWith("model-train")) { String runId = (String) trainMetricRecord.get("run_id"); List expTrainInfos = aimService.getExpTrainInfos1(true, experimentIns.getExperimentId(), runId); for (InsMetricInfoVo expTrainInfo : expTrainInfos) { @@ -73,7 +73,7 @@ public class ExperimentInstanceStatusTask { if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { for (Map evaluateMetricRecord : evaluateMetricRecords) { String taskId = (String) evaluateMetricRecord.get("task_id"); - if (taskId.startsWith("model-export")) { + if (taskId.startsWith("model-evaluate")) { String runId = (String) evaluateMetricRecord.get("run_id"); List expTrainInfos = aimService.getExpTrainInfos1(false, experimentIns.getExperimentId(), runId); for (InsMetricInfoVo expTrainInfo : expTrainInfos) { From 2568d651e12ac3bc28109e18f7c772e12684acbc Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 18:04:04 +0800 Subject: [PATCH 340/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/managementPlatform/ExperimentInsDaoMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index d23de89a..50d7bbc7 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -275,10 +275,10 @@ - insert into experiment_ins (id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_result, nodes_logs, global_param,metric_record, start_time, finish_time, create_by, create_time, update_by, update_time, state) + insert into experiment_ins (id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_result, nodes_logs, global_param,metric_record, start_time, finish_time, create_by, create_time, update_by, update_time, state, metric_value) values - (#{item.id}, #{item.experimentId}, #{item.argoInsName}, #{item.argoInsNs}, #{item.status}, #{item.nodesStatus}, #{item.nodesResult}, #{item.nodesLogs}, #{item.globalParam},#{item.metricRecord}, #{item.startTime}, #{item.finishTime}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.state}) + (#{item.id}, #{item.experimentId}, #{item.argoInsName}, #{item.argoInsNs}, #{item.status}, #{item.nodesStatus}, #{item.nodesResult}, #{item.nodesLogs}, #{item.globalParam},#{item.metricRecord}, #{item.startTime}, #{item.finishTime}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.state}, #{item.metric_value}) ON DUPLICATE KEY UPDATE experiment_id = VALUES(experiment_id), From 7f9cb9f3abb6e82c39aad0a2ea6bdef7af0636c3 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 21 Oct 2024 18:11:14 +0800 Subject: [PATCH 341/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/managementPlatform/ExperimentInsDaoMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 50d7bbc7..3ee4bd28 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -278,7 +278,7 @@ insert into experiment_ins (id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_result, nodes_logs, global_param,metric_record, start_time, finish_time, create_by, create_time, update_by, update_time, state, metric_value) values - (#{item.id}, #{item.experimentId}, #{item.argoInsName}, #{item.argoInsNs}, #{item.status}, #{item.nodesStatus}, #{item.nodesResult}, #{item.nodesLogs}, #{item.globalParam},#{item.metricRecord}, #{item.startTime}, #{item.finishTime}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.state}, #{item.metric_value}) + (#{item.id}, #{item.experimentId}, #{item.argoInsName}, #{item.argoInsNs}, #{item.status}, #{item.nodesStatus}, #{item.nodesResult}, #{item.nodesLogs}, #{item.globalParam},#{item.metricRecord}, #{item.startTime}, #{item.finishTime}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.state}, #{item.metricValue}) ON DUPLICATE KEY UPDATE experiment_id = VALUES(experiment_id), From 3b75b5f3879861f84fe1bc41cfd0ee5baa9b999d Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 08:38:01 +0800 Subject: [PATCH 342/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduling/ExperimentInstanceStatusTask.java | 4 ++-- .../main/java/com/ruoyi/platform/service/AimService.java | 4 ++-- .../com/ruoyi/platform/service/impl/AimServiceImpl.java | 7 ++++++- .../platform/service/impl/ExperimentInsServiceImpl.java | 9 --------- .../ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++-- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index dad643c6..a5298747 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -61,7 +61,7 @@ public class ExperimentInstanceStatusTask { String taskId = (String) trainMetricRecord.get("task_id"); if (taskId.startsWith("model-train")) { String runId = (String) trainMetricRecord.get("run_id"); - List expTrainInfos = aimService.getExpTrainInfos1(true, experimentIns.getExperimentId(), runId); + List expTrainInfos = aimService.getExpInfos1(true, experimentIns.getExperimentId(), runId); for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics = expTrainInfo.getMetrics(); trainMetricValue.putAll(metrics); @@ -75,7 +75,7 @@ public class ExperimentInstanceStatusTask { String taskId = (String) evaluateMetricRecord.get("task_id"); if (taskId.startsWith("model-evaluate")) { String runId = (String) evaluateMetricRecord.get("run_id"); - List expTrainInfos = aimService.getExpTrainInfos1(false, experimentIns.getExperimentId(), runId); + List expTrainInfos = aimService.getExpInfos1(false, experimentIns.getExperimentId(), runId); for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics = expTrainInfo.getMetrics(); evaluateMetricValue.putAll(metrics); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java index 3e2ccb77..699d0036 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java @@ -10,10 +10,10 @@ public interface AimService { List getExpTrainInfos(Integer experimentId, String offset, int limit) throws Exception; - List getExpTrainInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception; - List getExpEvaluateInfos(Integer experimentId, String offset, int limit) throws Exception; + List getExpInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception; + String getExpMetrics(List runIds) throws Exception; HashMap queryMetricsParams(String runId) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index a2b21202..3bae116b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -11,6 +11,7 @@ import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.vo.InsMetricInfoVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -145,9 +146,13 @@ public class AimServiceImpl implements AimService { return aimRunInfoList; } +// private List getExpInfos(Integer experimentId, int page, int size){ +// PageRequest pageRequest = PageRequest.of(page,size); +// +// } @Override - public List getExpTrainInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception { + public List getExpInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception { String encodedUrlString = URLEncoder.encode("run.id==\"" + runId + "\"", "UTF-8"); String url = aimProxyUrl + "/api/runs/search/run?query=" + encodedUrlString; String s = HttpUtils.sendGet(url, null); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 1319f0a9..b7ff69b4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -172,15 +172,6 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { public Page queryByPage(ExperimentIns experimentIns, PageRequest pageRequest) throws IOException { long total = this.experimentInsDao.count(experimentIns); List experimentInsList = this.experimentInsDao.queryAllByLimit(experimentIns, pageRequest); -// if (experimentInsList!=null && experimentInsList.size()>0) { -// for (ExperimentIns ins : experimentInsList) { -// //如果实验实例不为空或者 -// if (ins != null && StringUtils.isEmpty(ins.getStatus())) { -// ins = this.queryStatusFromArgo(ins); -// this.update(ins); -// } -// } -// } return new PageImpl<>(experimentInsList, pageRequest, total); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index f69b7359..ff053e78 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1300,7 +1300,7 @@ public class ModelsServiceImpl implements ModelsService { for (int i = 0; i < trainMetrics.size(); i++) { JSONObject jsonObject = trainMetrics.getJSONObject(i); String runId = jsonObject.getString("run_id"); - List expTrainInfos = aimsService.getExpTrainInfos1(true, modelMetaVo.getTrainTask().getExperimentId(), runId); + List expTrainInfos = aimsService.getExpInfos1(true, modelMetaVo.getTrainTask().getExperimentId(), runId); for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics1 = expTrainInfo.getMetrics(); train.putAll(metrics1); @@ -1322,7 +1322,7 @@ public class ModelsServiceImpl implements ModelsService { for (int i = 0; i < testMetrics.size(); i++) { JSONObject jsonObject = testMetrics.getJSONObject(i); String runId = jsonObject.getString("run_id"); - List expTestInfos = aimsService.getExpTrainInfos1(false, modelMetaVo.getTrainTask().getExperimentId(), runId); + List expTestInfos = aimsService.getExpInfos1(false, modelMetaVo.getTrainTask().getExperimentId(), runId); for (InsMetricInfoVo expTestInfo : expTestInfos) { Map metrics1 = expTestInfo.getMetrics(); evaluate.putAll(metrics1); From a6f54528d9ba1f606e0fe3b540e25084753075de Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 08:57:44 +0800 Subject: [PATCH 343/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=94=AF=E6=8C=81jui?= =?UTF-8?q?cefs=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DatasetVersionServiceImpl.java | 6 +-- .../service/impl/ImageServiceImpl.java | 6 +-- .../service/impl/JupyterServiceImpl.java | 16 +++---- .../service/impl/TensorBoardServiceImpl.java | 14 +++---- .../ruoyi/platform/utils/K8sClientUtil.java | 42 +++++++++---------- .../com/ruoyi/platform/vo/FrameLogPathVo.java | 16 +++---- 6 files changed, 50 insertions(+), 50 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java index 441ea786..4a00ddb4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java @@ -165,9 +165,9 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { .findFirst() .ifPresent(datasetVersion -> { String url = datasetVersion.getUrl(); -// response.put("path", url); - String path = bucketName + '/' + url.substring(0, url.lastIndexOf('/')); - response.put("path", path); + response.put("path", url); +// String path = bucketName + '/' + url.substring(0, url.lastIndexOf('/')); +// response.put("path", path); }); response.put("content", datasetVersionList); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java index faacf8dd..92d2bb45 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java @@ -61,10 +61,10 @@ public class ImageServiceImpl implements ImageService { @Resource private MinioService minioService; -// @Value("${minio.dataReleaseBucketName}") -// private String bucketName; - @Value("${harbor.bucketName}") + @Value("${minio.dataReleaseBucketName}") private String bucketName; +// @Value("${harbor.bucketName}") +// private String bucketName; @Value("${harbor.repository}") private String repository; @Value("${harbor.harborUrl}") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java index 3f2f7c9f..20e1e916 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java @@ -90,25 +90,25 @@ public class JupyterServiceImpl implements JupyterService { // 提取数据集,模型信息,得到数据集模型的path Map dataset = JacksonUtil.parseJSONStr2Map(devEnvironment.getDataset()); - String datasetPath = "argo-workflow" + "/" + dataset.get("path"); -// String datasetPath = (String) dataset.get("path"); +// String datasetPath = "argo-workflow" + "/" + dataset.get("path"); + String datasetPath = (String) dataset.get("path"); Map model = JacksonUtil.parseJSONStr2Map(devEnvironment.getModel()); - String modelPath = "argo-workflow" + "/" + model.get("path"); -// String modelPath = (String) model.get("path"); +// String modelPath = "argo-workflow" + "/" + model.get("path"); + String modelPath = (String) model.get("path"); LoginUser loginUser = SecurityUtils.getLoginUser(); //构造pod名称 String podName = loginUser.getUsername().toLowerCase() + "-editor-pod" + "-" + id; //新建编辑器的pvc - String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; - V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); +// String pvcName = loginUser.getUsername().toLowerCase() + "-editor-pvc"; +// V1PersistentVolumeClaim pvc = k8sClientUtil.createPvc(namespace, pvcName, storage, storageClassName); //TODO 设置镜像可配置,这里先用默认镜像启动pod // 调用修改后的 createPod 方法,传入额外的参数 - Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, pvc, devEnvironment, minioPvcName, datasetPath, modelPath); -// Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, null, devEnvironment, minioPvcName, datasetPath, modelPath); +// Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, pvc, devEnvironment, minioPvcName, datasetPath, modelPath); + Integer podPort = k8sClientUtil.createConfiguredPod(podName, namespace, port, mountPath, null, devEnvironment, minioPvcName, datasetPath, modelPath); String url = masterIp + ":" + podPort; redisService.setCacheObject(podName, masterIp + ":" + podPort); devEnvironment.setStatus("Pending"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java index dca3651d..83b87d82 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/TensorBoardServiceImpl.java @@ -59,17 +59,17 @@ public class TensorBoardServiceImpl implements TensorBoardService { @Override public String runTensorBoard(FrameLogPathVo frameLogPathVo) throws Exception { - if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ - throw new Exception("存储路径或存储为空"); - } -// if (StringUtils.isEmpty(frameLogPathVo.getPath())) { -// throw new Exception("存储路径为空"); +// if (StringUtils.isEmpty(frameLogPathVo.getPath())||StringUtils.isEmpty(frameLogPathVo.getPvcName())){ +// throw new Exception("存储路径或存储为空"); // } + if (StringUtils.isEmpty(frameLogPathVo.getPath())) { + throw new Exception("存储路径为空"); + } LoginUser loginUser = SecurityUtils.getLoginUser(); String podName = loginUser.getUsername().toLowerCase()+"-"+frameLogPathVo.getPath().split("/")[2]+ "-tensorboard-pod"; - Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); -// Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image); +// Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), frameLogPathVo.getPvcName(), image); + Integer podPort = k8sClientUtil.createPodWithSubPath(podName, StringUtils.isEmpty(frameLogPathVo.getNamespace()) ? "default" : frameLogPathVo.getNamespace(), port, mountPath, frameLogPathVo.getPath(), image); redisService.setCacheObject(podName, masterIp + ":" + podPort); return masterIp + ":" + podPort; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 49d56853..024298d8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -34,8 +34,8 @@ import java.util.*; @Component public class K8sClientUtil { -// @Value("${jupyter.hostPath}") -// private String hostPath; + @Value("${jupyter.hostPath}") + private String hostPath; private String http; private String token; @@ -314,8 +314,8 @@ public class K8sClientUtil { * @param image 镜像 * @return 创建成功的pod,的nodePort端口 */ - public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String pvcName, String image) { -// public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String image) { +// public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String pvcName, String image) { + public Integer createPodWithSubPath(String podName, String namespace, Integer port, String mountPath, String subPath, String image) { Map selector = new LinkedHashMap<>(); selector.put("k8s-jupyter", podName); @@ -366,8 +366,8 @@ public class K8sClientUtil { .endContainer() .addNewVolume() .withName("workspace") -// .withHostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate")) - .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) + .withHostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate")) +// .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) .endVolume() .withTerminationGracePeriodSeconds(14400L) .endSpec() @@ -449,25 +449,25 @@ public class K8sClientUtil { } } - // 配置卷和卷挂载 -// List volumeMounts = new ArrayList<>(); -// volumeMounts.add(new V1VolumeMount().name("workspace").mountPath("/opt/notebooks")); -// volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/dataset").subPath(datasetPath).readOnly(true)); -// volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/model").subPath(modelPath).readOnly(true)); -// -// List volumes = new ArrayList<>(); -// volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/notebooks").type("DirectoryOrCreate"))); -// volumes.add(new V1Volume().name("data").hostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate"))); - // 配置卷和卷挂载 List volumeMounts = new ArrayList<>(); - volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); - volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); - volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("workspace").mountPath("/opt/notebooks")); + volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/dataset").subPath(datasetPath).readOnly(true)); + volumeMounts.add(new V1VolumeMount().name("data").mountPath("/opt/model").subPath(modelPath).readOnly(true)); List volumes = new ArrayList<>(); - volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); - volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); + volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/notebooks").type("DirectoryOrCreate"))); + volumes.add(new V1Volume().name("data").hostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate"))); + + // 配置卷和卷挂载 +// List volumeMounts = new ArrayList<>(); +// volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); +// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/data").subPath(datasetPath).readOnly(true)); +// volumeMounts.add(new V1VolumeMount().name("minio-pvc").mountPath("/opt/model").subPath(modelPath).readOnly(true)); +// +// List volumes = new ArrayList<>(); +// volumes.add(new V1Volume().name("workspace").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvc.getMetadata().getName()))); +// volumes.add(new V1Volume().name("minio-pvc").persistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(dataPvcName))); //配置资源 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java index e4c8bd26..da32b84d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/FrameLogPathVo.java @@ -10,7 +10,7 @@ public class FrameLogPathVo implements Serializable { String path; String namespace; - String pvcName; +// String pvcName; public String getPath() { return path; } @@ -27,11 +27,11 @@ public class FrameLogPathVo implements Serializable { this.namespace = namespace; } - public String getPvcName() { - return pvcName; - } - - public void setPvcName(String pvcName) { - this.pvcName = pvcName; - } +// public String getPvcName() { +// return pvcName; +// } +// +// public void setPvcName(String pvcName) { +// this.pvcName = pvcName; +// } } From 6266261b22cc7d1317274c58cbbcba12aa371c31 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 10:07:10 +0800 Subject: [PATCH 344/381] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=87=E6=A0=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index a5298747..283a0288 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -65,6 +65,7 @@ public class ExperimentInstanceStatusTask { for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics = expTrainInfo.getMetrics(); trainMetricValue.putAll(metrics); + trainMetricValue.put("run_hash",expTrainInfo.getRunId()); } } } @@ -79,6 +80,7 @@ public class ExperimentInstanceStatusTask { for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics = expTrainInfo.getMetrics(); evaluateMetricValue.putAll(metrics); + evaluateMetricValue.put("run_hash",expTrainInfo.getRunId()); } } } From c02a0f01500022ae20e288329c5fe52ec08350b2 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 14:18:18 +0800 Subject: [PATCH 345/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=94=AF=E6=8C=81jui?= =?UTF-8?q?cefs=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/template-yaml/k8s-7management.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/k8s/template-yaml/k8s-7management.yaml b/k8s/template-yaml/k8s-7management.yaml index 4fcddb15..edc1c621 100644 --- a/k8s/template-yaml/k8s-7management.yaml +++ b/k8s/template-yaml/k8s-7management.yaml @@ -26,10 +26,11 @@ spec: volumeMounts: - name: resource-volume mountPath: /home/resource/ + subPath: mini-model-platform-data volumes: - name: resource-volume - persistentVolumeClaim: - claimName: platform-data-pvc-nfs + hostPath: + path: /platform-data --- apiVersion: v1 kind: Service From 3002e7b0c59a6e5a54b7561a3710aba55e991010 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 15:37:39 +0800 Subject: [PATCH 346/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/aim/AimController.java | 16 ++-- .../ExperimentInstanceStatusTask.java | 16 ++-- .../ruoyi/platform/service/AimService.java | 2 + .../platform/service/impl/AimServiceImpl.java | 93 ++++++++++++++++++- 4 files changed, 109 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java index 31a6cba1..28632dcb 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java @@ -24,19 +24,19 @@ public class AimController extends BaseController { @GetMapping("/getExpTrainInfos/{experiment_id}") @ApiOperation("获取当前实验的模型训练指标信息") @ApiResponse - public GenericsAjaxResult> getExpTrainInfos(@RequestParam(value = "offset", required = false) String offset, - @RequestParam(value = "limit") int limit, - @PathVariable("experiment_id") Integer experimentId) throws Exception { - return genericsSuccess(aimService.getExpTrainInfos(experimentId, offset, limit)); + public GenericsAjaxResult> getExpTrainInfos(@RequestParam(value = "page") int page, + @RequestParam(value = "size") int size, + @PathVariable("experiment_id") Integer experimentId) { + return genericsSuccess(aimService.getExpInfos(true, experimentId, page, size)); } @GetMapping("/getExpEvaluateInfos/{experiment_id}") @ApiOperation("获取当前实验的模型推理指标信息") @ApiResponse - public GenericsAjaxResult> getExpEvaluateInfos(@RequestParam(value = "offset", required = false) String offset, - @RequestParam(value = "limit") int limit, - @PathVariable("experiment_id") Integer experimentId) throws Exception { - return genericsSuccess(aimService.getExpEvaluateInfos(experimentId, offset, limit)); + public GenericsAjaxResult> getExpEvaluateInfos(@RequestParam(value = "page") int page, + @RequestParam(value = "size") int size, + @PathVariable("experiment_id") Integer experimentId) { + return genericsSuccess(aimService.getExpInfos(false, experimentId, page, size)); } @PostMapping("/getExpMetrics") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 283a0288..59d8bf47 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -53,11 +53,12 @@ public class ExperimentInstanceStatusTask { List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); HashMap metricValue = new HashMap<>(); - HashMap trainMetricValue = new HashMap<>(); - HashMap evaluateMetricValue = new HashMap<>(); + HashMap trainMetricValues = new HashMap<>(); + HashMap evaluateMetricValues = new HashMap<>(); if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { for (Map trainMetricRecord : trainMetricRecords) { + HashMap trainMetricValue = new HashMap<>(); String taskId = (String) trainMetricRecord.get("task_id"); if (taskId.startsWith("model-train")) { String runId = (String) trainMetricRecord.get("run_id"); @@ -65,14 +66,16 @@ public class ExperimentInstanceStatusTask { for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics = expTrainInfo.getMetrics(); trainMetricValue.putAll(metrics); - trainMetricValue.put("run_hash",expTrainInfo.getRunId()); + trainMetricValue.put("run_hash", expTrainInfo.getRunId()); } } + trainMetricValues.put(taskId, trainMetricValue); } } if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { for (Map evaluateMetricRecord : evaluateMetricRecords) { + HashMap evaluateMetricValue = new HashMap<>(); String taskId = (String) evaluateMetricRecord.get("task_id"); if (taskId.startsWith("model-evaluate")) { String runId = (String) evaluateMetricRecord.get("run_id"); @@ -80,13 +83,14 @@ public class ExperimentInstanceStatusTask { for (InsMetricInfoVo expTrainInfo : expTrainInfos) { Map metrics = expTrainInfo.getMetrics(); evaluateMetricValue.putAll(metrics); - evaluateMetricValue.put("run_hash",expTrainInfo.getRunId()); + evaluateMetricValue.put("run_hash", expTrainInfo.getRunId()); } } + evaluateMetricValues.put(taskId, evaluateMetricValue); } } - metricValue.put("train", trainMetricValue); - metricValue.put("evaluate", evaluateMetricValue); + metricValue.put("train", trainMetricValues); + metricValue.put("evaluate", evaluateMetricValues); experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); } experimentIns.setUpdateTime(new Date()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java index 699d0036..abcbc645 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java @@ -12,6 +12,8 @@ public interface AimService { List getExpEvaluateInfos(Integer experimentId, String offset, int limit) throws Exception; + List getExpInfos(boolean isTrain, Integer experimentId, int page, int size); + List getExpInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception; String getExpMetrics(List runIds) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 3bae116b..1bfdb77d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -1,7 +1,10 @@ package com.ruoyi.platform.service.impl; import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.platform.domain.ExperimentIns; +import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.service.AimService; import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.utils.AIM64EncoderUtil; @@ -24,6 +27,8 @@ import java.util.stream.Collectors; public class AimServiceImpl implements AimService { @Resource private ExperimentInsService experimentInsService; + @Resource + private ExperimentInsDao experimentInsDao; @Value("${aim.url}") private String aimUrl; @@ -146,10 +151,56 @@ public class AimServiceImpl implements AimService { return aimRunInfoList; } -// private List getExpInfos(Integer experimentId, int page, int size){ -// PageRequest pageRequest = PageRequest.of(page,size); -// -// } + public List getExpInfos(boolean isTrain, Integer experimentId, int page, int size) { + PageRequest pageRequest = PageRequest.of(page, size); + ExperimentIns query = new ExperimentIns(); + query.setExperimentId(experimentId); + List experimentInsList = experimentInsDao.queryAllByLimit(query, pageRequest); + if (experimentInsList == null || experimentInsList.size() == 0) { + return new ArrayList<>(); + } + List aimRunInfoList = new ArrayList<>(); + for (ExperimentIns experimentIns : experimentInsList) { + InsMetricInfoVo aimRunInfo = new InsMetricInfoVo(); + aimRunInfo.setExperimentInsId(experimentIns.getId()); + aimRunInfo.setStartTime(experimentIns.getCreateTime()); + aimRunInfo.setStatus(experimentIns.getStatus()); + + //解析参数 + JSONArray params = JSON.parseArray(experimentIns.getGlobalParam()); + HashMap paramsMap = new HashMap<>(); + List paramsNames = new ArrayList<>(); + + for (int i = 0; i < params.size(); i++) { + JSONObject jsonObject = params.getJSONObject(i); + String paramName = jsonObject.getString("param_name"); + String paramValue = jsonObject.getString("param_value"); + paramsMap.put(paramName, paramValue); + paramsNames.add(paramName); + } + aimRunInfo.setParams(paramsMap); + aimRunInfo.setParamsNames(paramsNames); + + //解析数据集 + Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); + if (isTrain) { + aimRunInfo.setDataset(getDataset("train", metricRecord)); + } else { + aimRunInfo.setDataset(getDataset("evaluate", metricRecord)); + } + + //解析指标 + Map metricValue = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricValue()); + if (isTrain) { + setMetricValue("train",metricValue,aimRunInfo); + } else { + setMetricValue("evaluate",metricValue,aimRunInfo); + } + aimRunInfoList.add(aimRunInfo); + } + return aimRunInfoList; + } + @Override public List getExpInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception { @@ -240,6 +291,40 @@ public class AimServiceImpl implements AimService { return aimRunInfoList; } + private List getDataset(String isTrain, Map metricRecord) { + List datasetList = new ArrayList<>(); + List> trainMetricRecords = (List>) metricRecord.get(isTrain); + for (Map trainMetricRecord : trainMetricRecords) { + String taskId = (String) trainMetricRecord.get("task_id"); + if (taskId.startsWith("model-" + isTrain)) { + List> datasets = (List>) trainMetricRecord.get("datasets"); + for (Map dataset : datasets) { + String datasetName = dataset.get("dataset_name") + ":" + dataset.get("dataset_version"); + datasetList.add(datasetName); + } + } + } + return datasetList; + } + + private void setMetricValue(String isTrain, Map metricValue, InsMetricInfoVo aimRunInfo){ + Map metricValues = (Map) metricValue.get(isTrain); + + HashMap metrics = new HashMap<>(); + List metricsNames = new ArrayList<>(); + for (String key : metricValues.keySet()) { + Map valueMap = (Map) metricValues.get(key); + aimRunInfo.setRunId((String) valueMap.get("run_hash")); + + metrics.putAll(valueMap.entrySet().stream().filter(entry -> !entry.getKey().equals("run_hash")).collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue + ))); + metricsNames.addAll(valueMap.keySet().stream().filter(entry -> !entry.equals("run_hash")).collect(Collectors.toList())); + } + aimRunInfo.setMetrics(metrics); + aimRunInfo.setMetricsNames(metricsNames); + } private List getTrainDateSet(List> records, String aimrunId) { List datasetList = new ArrayList<>(); From 9fe35a2979496888cf7303167023fa289c098a21 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 16:37:25 +0800 Subject: [PATCH 347/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=AF=B9=E6=AF=94bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/service/impl/ModelsVersionServiceImpl.java | 4 +--- .../com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java index c4dafa96..274b3c1d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java @@ -43,9 +43,7 @@ public class ModelsVersionServiceImpl implements ModelsVersionService { @Resource @Lazy private ModelDependencyService modelDependencyService; - // 固定存储桶名 - @Value("${minio.dataReleaseBucketName}") - private String bucketName; + /** * 通过ID查询单条数据 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 36e0ef08..5cd35fb7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -167,7 +167,7 @@ public class ServiceServiceImpl implements ServiceService { com.ruoyi.platform.domain.Service service = serviceDao.getServiceById(serviceVersion1.getServiceId()); ServiceVersionVo serviceVersionVo1 = getServiceVersionVo(serviceVersion1); - ServiceVersionVo serviceVersionVo2 = getServiceVersionVo(serviceVersion1); + ServiceVersionVo serviceVersionVo2 = getServiceVersionVo(serviceVersion2); serviceVersionVo1.setServiceName(service.getServiceName()); serviceVersionVo2.setServiceName(service.getServiceName()); From 3a7eda377baa8b228b00bfbe838c581719dc96e8 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 17:00:02 +0800 Subject: [PATCH 348/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=94=AF=E6=8C=81jui?= =?UTF-8?q?cefs=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/platform/utils/K8sClientUtil.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index ca3fe694..14d4c795 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -341,6 +341,9 @@ public class K8sClientUtil { } } + int lastIndex = hostPath.lastIndexOf('/'); + String newPath = hostPath.substring(0, lastIndex); + V1Pod pod = new V1PodBuilder() .withNewMetadata() .withName(podName) @@ -368,7 +371,7 @@ public class K8sClientUtil { .endContainer() .addNewVolume() .withName("workspace") - .withHostPath(new V1HostPathVolumeSource().path(hostPath).type("DirectoryOrCreate")) + .withHostPath(new V1HostPathVolumeSource().path(newPath).type("DirectoryOrCreate")) // .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) .endVolume() .withTerminationGracePeriodSeconds(14400L) From 7a59ed2ff571e3d5657079f3c1b45f206604b3d6 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 22 Oct 2024 17:30:45 +0800 Subject: [PATCH 349/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=AF=B9=E6=AF=94bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/utils/ConvertUtil.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java index 52c89dd3..95bb18cd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/ConvertUtil.java @@ -159,6 +159,17 @@ public class ConvertUtil { return sb.toString(); } + private static String toSnakeCase(String camelCase) { + return camelCase.replaceAll( + String.format("%s|%s|%s", + "(?<=[a-z])(?=[A-Z])", // 小写字母后接大写字母 + "(?<=[^A-Z])(?=[A-Z][a-z])", // 非大写字母后接大写字母开头的小写字母 + "(?<=[A-Z])(?=[A-Z][a-z][0-9])" // 大写字母后接另一个大写字母开头的小写字母和数字(可选,根据需求调整) + ), + "_" + ).toLowerCase(); + } + public static Map compareObjects(Object obj1, Object obj2) throws IllegalAccessException { Map differences = new HashMap<>(); @@ -176,7 +187,7 @@ public class ConvertUtil { // Compare the field values if ((value1 !=null && !value1.equals(value2)) || (value2 !=null && !value2.equals(value1))) { - differences.put(field.getName(), "Field " + field.getName() + " differs: " + value1 + " vs " + value2); + differences.put(toSnakeCase(field.getName()), "Field " + field.getName() + " differs: " + value1 + " vs " + value2); } } From fc1c3fe2b438f49bde7c4e96ea8aa3ab1aeed47e Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 23 Oct 2024 08:52:06 +0800 Subject: [PATCH 350/381] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=89=93=E5=8C=85?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/MinioUtil.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java index 7bd5951b..f311065a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/MinioUtil.java @@ -394,21 +394,24 @@ public class MinioUtil { for (Result result : results) { Item item = result.get(); String objectName = item.objectName(); - InputStream objectStream = minioClient.getObject( - GetObjectArgs.builder().bucket(bucketName).object(objectName).build()); - - // Create a zip entry for each object - ZipEntry zipEntry = new ZipEntry(objectName); - zip.putNextEntry(zipEntry); - - // Write object data to zip stream - byte[] buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = objectStream.read(buffer)) != -1) { - zip.write(buffer, 0, bytesRead); + if (!objectName.contains(".git")) { + InputStream objectStream = minioClient.getObject( + GetObjectArgs.builder().bucket(bucketName).object(objectName).build()); + + + // Create a zip entry for each object + ZipEntry zipEntry = new ZipEntry(objectName); + zip.putNextEntry(zipEntry); + + // Write object data to zip stream + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = objectStream.read(buffer)) != -1) { + zip.write(buffer, 0, bytesRead); + } + zip.closeEntry(); + objectStream.close(); } - zip.closeEntry(); - objectStream.close(); } zip.finish(); From 1dbf028d50ac032535069a6d5b0fcdf28eaaf710 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 23 Oct 2024 09:42:07 +0800 Subject: [PATCH 351/381] =?UTF-8?q?dvc=E8=BF=9C=E7=A8=8B=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/AimServiceImpl.java | 6 +++--- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++-- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 1bfdb77d..34e938d5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -192,9 +192,9 @@ public class AimServiceImpl implements AimService { //解析指标 Map metricValue = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricValue()); if (isTrain) { - setMetricValue("train",metricValue,aimRunInfo); + setMetricValue("train", metricValue, aimRunInfo); } else { - setMetricValue("evaluate",metricValue,aimRunInfo); + setMetricValue("evaluate", metricValue, aimRunInfo); } aimRunInfoList.add(aimRunInfo); } @@ -307,7 +307,7 @@ public class AimServiceImpl implements AimService { return datasetList; } - private void setMetricValue(String isTrain, Map metricValue, InsMetricInfoVo aimRunInfo){ + private void setMetricValue(String isTrain, Map metricValue, InsMetricInfoVo aimRunInfo) { Map metricValues = (Map) metricValue.get(isTrain); HashMap metrics = new HashMap<>(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index ff053e78..3eb50725 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -654,7 +654,7 @@ public class ModelsServiceImpl implements ModelsService { try { dvcUtils.dvcInit(rootPath); // 配置远程S3地址 - String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName; + String s3Path = "data/mini-model-management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName; dvcUtils.dvcRemoteAdd(rootPath, s3Path); dvcUtils.dvcConfigS3Credentials(rootPath, endpoint); dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); @@ -826,7 +826,7 @@ public class ModelsServiceImpl implements ModelsService { } // 配置远程S3地址 - String s3Path = "management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; + String s3Path = "data/mini-model-management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; dvcUtils.dvcRemoteAdd(rootPath, s3Path); dvcUtils.dvcConfigS3Credentials(rootPath, endpoint); dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index a27ff01d..2fb84d2d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -123,7 +123,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 命令行操作 git clone 项目地址 dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; + String s3Path = "data/mini-model-management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath); @@ -216,7 +216,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.dvcCheckout(localPath); // 准备数据 - String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; + String s3Path = "data/mini-model-management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); From 02a3952d0bfa5ca2e1eb1663586f2027e1724b4c Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 23 Oct 2024 10:18:55 +0800 Subject: [PATCH 352/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/AimServiceImpl.java | 12 ++++++----- .../ExperimentInsDaoMapper.xml | 21 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 34e938d5..5c07567f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -190,11 +190,13 @@ public class AimServiceImpl implements AimService { } //解析指标 - Map metricValue = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricValue()); - if (isTrain) { - setMetricValue("train", metricValue, aimRunInfo); - } else { - setMetricValue("evaluate", metricValue, aimRunInfo); + if (StringUtils.isNotEmpty(experimentIns.getMetricValue())) { + Map metricValue = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricValue()); + if (isTrain) { + setMetricValue("train", metricValue, aimRunInfo); + } else { + setMetricValue("evaluate", metricValue, aimRunInfo); + } } aimRunInfoList.add(aimRunInfo); } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 3ee4bd28..ef87ed63 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -13,6 +13,7 @@ + @@ -25,7 +26,7 @@ - select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, global_param,metric_record, start_time, finish_time, create_by, create_time, update_by, update_time, state + select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs, global_param,metric_record,metric_value, start_time, finish_time, create_by, create_time, update_by, update_time, state from experiment_ins where experiment_id = #{experiment_id} and state = 1 order by update_time DESC @@ -69,7 +70,7 @@ select - id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param,metric_record, start_time, finish_time, create_by, create_time, update_by, update_time, state + id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status,nodes_result, nodes_logs,global_param,metric_record,metric_value, start_time, finish_time, create_by, create_time, update_by, update_time, state from experiment_ins state = 1 @@ -135,7 +136,7 @@ - insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,start_time,finish_time,create_by,create_time,update_by,update_time,state) - values (#{experimentIns.experimentId},#{experimentIns.argoInsName},#{experimentIns.argoInsNs},#{experimentIns.status},#{experimentIns.nodesStatus},#{experimentIns.nodesResult},#{experimentIns.nodesLogs},#{experimentIns.globalParam},#{experimentIns.metricRecord},#{experimentIns.startTime},#{experimentIns.finishTime},#{experimentIns.createBy},#{experimentIns.createTime},#{experimentIns.updateBy},#{experimentIns.updateTime},#{experimentIns.state}) + insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,metric_value,start_time,finish_time,create_by,create_time,update_by,update_time,state) + values (#{experimentIns.experimentId},#{experimentIns.argoInsName},#{experimentIns.argoInsNs},#{experimentIns.status},#{experimentIns.nodesStatus},#{experimentIns.nodesResult},#{experimentIns.nodesLogs},#{experimentIns.globalParam},#{experimentIns.metricRecord},#{experimentIns.metricValue},#{experimentIns.startTime},#{experimentIns.finishTime},#{experimentIns.createBy},#{experimentIns.createTime},#{experimentIns.updateBy},#{experimentIns.updateTime},#{experimentIns.state}) insert into - experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,start_time,finish_time,create_by,create_time,update_by,update_time,state) + experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,metric_value,start_time,finish_time,create_by,create_time,update_by,update_time,state) values - (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesResult},#{entity.nodesLogs},#{entity.globalParam},#{entity.metricRecord},#{entity.startTime},#{entity.finishTime},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) + (#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesResult},#{entity.nodesLogs},#{entity.globalParam},#{entity.metricRecord},#{entity.metricValue},#{entity.startTime},#{entity.finishTime},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state}) From 1451f50c46985c319983f962f8972d536fa60b88 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 23 Oct 2024 10:31:30 +0800 Subject: [PATCH 353/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/aim/AimController.java | 13 ++++---- .../ruoyi/platform/service/AimService.java | 3 +- .../platform/service/impl/AimServiceImpl.java | 31 ++++++++++--------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java index 28632dcb..9390e156 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/aim/AimController.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.controller.aim; import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.service.AimService; import com.ruoyi.platform.vo.InsMetricInfoVo; @@ -24,19 +25,19 @@ public class AimController extends BaseController { @GetMapping("/getExpTrainInfos/{experiment_id}") @ApiOperation("获取当前实验的模型训练指标信息") @ApiResponse - public GenericsAjaxResult> getExpTrainInfos(@RequestParam(value = "page") int page, - @RequestParam(value = "size") int size, - @PathVariable("experiment_id") Integer experimentId) { - return genericsSuccess(aimService.getExpInfos(true, experimentId, page, size)); + public AjaxResult getExpTrainInfos(@RequestParam(value = "page") int page, + @RequestParam(value = "size") int size, + @PathVariable("experiment_id") Integer experimentId) { + return AjaxResult.success(aimService.getExpInfos(true, experimentId, page, size)); } @GetMapping("/getExpEvaluateInfos/{experiment_id}") @ApiOperation("获取当前实验的模型推理指标信息") @ApiResponse - public GenericsAjaxResult> getExpEvaluateInfos(@RequestParam(value = "page") int page, + public AjaxResult getExpEvaluateInfos(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size, @PathVariable("experiment_id") Integer experimentId) { - return genericsSuccess(aimService.getExpInfos(false, experimentId, page, size)); + return AjaxResult.success(aimService.getExpInfos(false, experimentId, page, size)); } @PostMapping("/getExpMetrics") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java index abcbc645..c7e383e3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AimService.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.InsMetricInfoVo; +import org.springframework.data.domain.Page; import java.util.HashMap; import java.util.List; @@ -12,7 +13,7 @@ public interface AimService { List getExpEvaluateInfos(Integer experimentId, String offset, int limit) throws Exception; - List getExpInfos(boolean isTrain, Integer experimentId, int page, int size); + Page getExpInfos(boolean isTrain, Integer experimentId, int page, int size); List getExpInfos1(boolean isTrain, Integer experimentId, String runId) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 5c07567f..a2e912e4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -14,6 +14,8 @@ import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.vo.InsMetricInfoVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; @@ -151,14 +153,12 @@ public class AimServiceImpl implements AimService { return aimRunInfoList; } - public List getExpInfos(boolean isTrain, Integer experimentId, int page, int size) { + public Page getExpInfos(boolean isTrain, Integer experimentId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); ExperimentIns query = new ExperimentIns(); query.setExperimentId(experimentId); + long count = experimentInsDao.count(query); List experimentInsList = experimentInsDao.queryAllByLimit(query, pageRequest); - if (experimentInsList == null || experimentInsList.size() == 0) { - return new ArrayList<>(); - } List aimRunInfoList = new ArrayList<>(); for (ExperimentIns experimentIns : experimentInsList) { InsMetricInfoVo aimRunInfo = new InsMetricInfoVo(); @@ -200,7 +200,7 @@ public class AimServiceImpl implements AimService { } aimRunInfoList.add(aimRunInfo); } - return aimRunInfoList; + return new PageImpl<>(aimRunInfoList, pageRequest, count); } @@ -314,15 +314,18 @@ public class AimServiceImpl implements AimService { HashMap metrics = new HashMap<>(); List metricsNames = new ArrayList<>(); - for (String key : metricValues.keySet()) { - Map valueMap = (Map) metricValues.get(key); - aimRunInfo.setRunId((String) valueMap.get("run_hash")); - - metrics.putAll(valueMap.entrySet().stream().filter(entry -> !entry.getKey().equals("run_hash")).collect(Collectors.toMap( - Map.Entry::getKey, - Map.Entry::getValue - ))); - metricsNames.addAll(valueMap.keySet().stream().filter(entry -> !entry.equals("run_hash")).collect(Collectors.toList())); + + if(metricValues != null){ + for (String key : metricValues.keySet()) { + Map valueMap = (Map) metricValues.get(key); + aimRunInfo.setRunId((String) valueMap.get("run_hash")); + + metrics.putAll(valueMap.entrySet().stream().filter(entry -> !entry.getKey().equals("run_hash")).collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue + ))); + metricsNames.addAll(valueMap.keySet().stream().filter(entry -> !entry.equals("run_hash")).collect(Collectors.toList())); + } } aimRunInfo.setMetrics(metrics); aimRunInfo.setMetricsNames(metricsNames); From 2d14a96e345bca0647e68a4c36b32e6bdcaceb12 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 23 Oct 2024 11:01:24 +0800 Subject: [PATCH 354/381] =?UTF-8?q?=E4=BC=98=E5=8C=96dvc=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/service/impl/ModelsServiceImpl.java | 4 ++-- .../ruoyi/platform/service/impl/NewDatasetServiceImpl.java | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 3eb50725..a39905a4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -654,7 +654,7 @@ public class ModelsServiceImpl implements ModelsService { try { dvcUtils.dvcInit(rootPath); // 配置远程S3地址 - String s3Path = "data/mini-model-management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName; + String s3Path = bucketName + "/mini-model-management-platform-files/" + ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/" + branchName; dvcUtils.dvcRemoteAdd(rootPath, s3Path); dvcUtils.dvcConfigS3Credentials(rootPath, endpoint); dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); @@ -826,7 +826,7 @@ public class ModelsServiceImpl implements ModelsService { } // 配置远程S3地址 - String s3Path = "data/mini-model-management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; + String s3Path = bucketName + "/mini-model-management-platform-files/" + ci4sUsername + "/model/" + modelsVo.getId() + "/" + repositoryName + "/" + branchName; dvcUtils.dvcRemoteAdd(rootPath, s3Path); dvcUtils.dvcConfigS3Credentials(rootPath, endpoint); dvcUtils.dvcConfigS3Credentials2(rootPath, accessKeyId); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 2fb84d2d..6c2b8c6b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -63,6 +63,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { String endpoint; @Value("${git.endpoint}") String gitendpoint; + @Value("${minio.dataReleaseBucketName}") + private String bucketName; @Value("${git.localPath}") String localPathlocal; @Resource @@ -123,7 +125,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 命令行操作 git clone 项目地址 dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); - String s3Path = "data/mini-model-management-platform-files" + "/" + relatePath + "/" + branchName; + String s3Path = bucketName + "/mini-model-management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath); @@ -216,7 +218,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.dvcCheckout(localPath); // 准备数据 - String s3Path = "data/mini-model-management-platform-files" + "/" + relatePath + "/" + branchName; + String s3Path = bucketName + "/mini-model-management-platform-files" + "/" + relatePath + "/" + branchName; //干掉目标文件夹 dvcUtils.deleteDirectory(datasetPath); From f62736ce09e7c16f51e2a00cc192dd4f91c90f25 Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 14:49:28 +0800 Subject: [PATCH 355/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/AimServiceImpl.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index a2e912e4..9eba931a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -296,13 +296,15 @@ public class AimServiceImpl implements AimService { private List getDataset(String isTrain, Map metricRecord) { List datasetList = new ArrayList<>(); List> trainMetricRecords = (List>) metricRecord.get(isTrain); - for (Map trainMetricRecord : trainMetricRecords) { - String taskId = (String) trainMetricRecord.get("task_id"); - if (taskId.startsWith("model-" + isTrain)) { - List> datasets = (List>) trainMetricRecord.get("datasets"); - for (Map dataset : datasets) { - String datasetName = dataset.get("dataset_name") + ":" + dataset.get("dataset_version"); - datasetList.add(datasetName); + if (trainMetricRecords != null) { + for (Map trainMetricRecord : trainMetricRecords) { + String taskId = (String) trainMetricRecord.get("task_id"); + if (taskId.startsWith("model-" + isTrain)) { + List> datasets = (List>) trainMetricRecord.get("datasets"); + for (Map dataset : datasets) { + String datasetName = dataset.get("dataset_name") + ":" + dataset.get("dataset_version"); + datasetList.add(datasetName); + } } } } @@ -315,7 +317,7 @@ public class AimServiceImpl implements AimService { HashMap metrics = new HashMap<>(); List metricsNames = new ArrayList<>(); - if(metricValues != null){ + if (metricValues != null) { for (String key : metricValues.keySet()) { Map valueMap = (Map) metricValues.get(key); aimRunInfo.setRunId((String) valueMap.get("run_hash")); From 9987c3b9fd7edb1addcce53bb13585907c980db3 Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 14:51:33 +0800 Subject: [PATCH 356/381] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts index 35232b47..93f990c1 100644 --- a/react-ui/config/proxy.ts +++ b/react-ui/config/proxy.ts @@ -20,7 +20,7 @@ export default { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { // 要代理的地址 - target: 'http://172.20.32.185:31213', // 开发环境 + target: 'http://172.20.32.181:31213', // 开发环境 // target: 'http://172.20.32.98:8082', // target: 'http://172.20.32.150:8082', // 配置了这个可以从 http 代理到 https From 7cd2b6d16654d5511250d99375ca9c1b61c6abd0 Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 15:51:29 +0800 Subject: [PATCH 357/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/mapper/ExperimentInsDao.java | 3 ++- .../platform/service/impl/AimServiceImpl.java | 14 ++++++++++++-- .../managementPlatform/ExperimentInsDaoMapper.xml | 13 +++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java index 58642324..c9ef05bf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java @@ -39,6 +39,8 @@ public interface ExperimentInsDao { */ long count(@Param("experimentIns") ExperimentIns experimentIns); + long countTorE(@Param("experimentId") Integer experimentId, @Param("isTrain") Boolean isTrain); + /* 统计实验实例总数 @@ -100,7 +102,6 @@ public interface ExperimentInsDao { List getLatestInsList(); - List queryByExperiment(@Param("experimentIns") ExperimentIns experimentIns); List queryByExperimentId(Integer id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index 9eba931a..b63fe369 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -157,10 +157,20 @@ public class AimServiceImpl implements AimService { PageRequest pageRequest = PageRequest.of(page, size); ExperimentIns query = new ExperimentIns(); query.setExperimentId(experimentId); - long count = experimentInsDao.count(query); + long count = experimentInsDao.countTorE(experimentId, isTrain); List experimentInsList = experimentInsDao.queryAllByLimit(query, pageRequest); + + List collect = experimentInsList.stream().filter(ins -> { + Map metricRecord = JacksonUtil.parseJSONStr2Map(ins.getMetricRecord()); + if (isTrain) { + return metricRecord.get("train") != null; + } else { + return metricRecord.get("evaluate") != null; + } + }).collect(Collectors.toList()); + List aimRunInfoList = new ArrayList<>(); - for (ExperimentIns experimentIns : experimentInsList) { + for (ExperimentIns experimentIns : collect) { InsMetricInfoVo aimRunInfo = new InsMetricInfoVo(); aimRunInfo.setExperimentInsId(experimentIns.getId()); aimRunInfo.setStartTime(experimentIns.getCreateTime()); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index ef87ed63..87d06752 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -250,6 +250,19 @@ where experiment_id = #{id} and state = 1 + + insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,metric_value,start_time,finish_time,create_by,create_time,update_by,update_time,state) From 49a338e999edb69b677d9d565336af5d442f0e09 Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 16:34:38 +0800 Subject: [PATCH 358/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/scheduling/ExperimentInstanceStatusTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 59d8bf47..df339f73 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -47,7 +47,7 @@ public class ExperimentInstanceStatusTask { experimentIns.setStatus("Failed"); } //运行成功的实验实例记录指标数值 - if (Constant.Succeeded.equals(experimentIns.getStatus())) { +// if (Constant.Succeeded.equals(experimentIns.getStatus())) { Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); List> trainMetricRecords = (List>) metricRecord.get("train"); List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); @@ -92,7 +92,7 @@ public class ExperimentInstanceStatusTask { metricValue.put("train", trainMetricValues); metricValue.put("evaluate", evaluateMetricValues); experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); - } +// } experimentIns.setUpdateTime(new Date()); // 线程安全的添加操作 synchronized (experimentIds) { From c0b74fafd2b742965504b88956daf26d45924bba Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 16:57:01 +0800 Subject: [PATCH 359/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/mapper/ExperimentInsDao.java | 2 + .../ExperimentInstanceStatusTask.java | 75 ++++++++++--------- .../platform/service/impl/AimServiceImpl.java | 15 +--- .../ExperimentInsDaoMapper.xml | 16 ++++ 4 files changed, 59 insertions(+), 49 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java index c9ef05bf..478d0f28 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java @@ -41,6 +41,8 @@ public interface ExperimentInsDao { long countTorE(@Param("experimentId") Integer experimentId, @Param("isTrain") Boolean isTrain); + List queryTorE(@Param("experimentId") Integer experimentId, @Param("isTrain") Boolean isTrain, @Param("pageable") Pageable pageable); + /* 统计实验实例总数 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index df339f73..fb72bc65 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -1,6 +1,5 @@ package com.ruoyi.platform.scheduling; -import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.mapper.ExperimentDao; @@ -48,50 +47,54 @@ public class ExperimentInstanceStatusTask { } //运行成功的实验实例记录指标数值 // if (Constant.Succeeded.equals(experimentIns.getStatus())) { - Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); - List> trainMetricRecords = (List>) metricRecord.get("train"); - List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); + Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); + List> trainMetricRecords = (List>) metricRecord.get("train"); + List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); - HashMap metricValue = new HashMap<>(); - HashMap trainMetricValues = new HashMap<>(); - HashMap evaluateMetricValues = new HashMap<>(); + HashMap metricValue = new HashMap<>(); + HashMap trainMetricValues = new HashMap<>(); + HashMap evaluateMetricValues = new HashMap<>(); - if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { - for (Map trainMetricRecord : trainMetricRecords) { - HashMap trainMetricValue = new HashMap<>(); - String taskId = (String) trainMetricRecord.get("task_id"); - if (taskId.startsWith("model-train")) { - String runId = (String) trainMetricRecord.get("run_id"); - List expTrainInfos = aimService.getExpInfos1(true, experimentIns.getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics = expTrainInfo.getMetrics(); - trainMetricValue.putAll(metrics); - trainMetricValue.put("run_hash", expTrainInfo.getRunId()); - } + if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { + for (Map trainMetricRecord : trainMetricRecords) { + HashMap trainMetricValue = new HashMap<>(); + String taskId = (String) trainMetricRecord.get("task_id"); + if (taskId.startsWith("model-train")) { + String runId = (String) trainMetricRecord.get("run_id"); + List expTrainInfos = aimService.getExpInfos1(true, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + trainMetricValue.putAll(metrics); + trainMetricValue.put("run_hash", expTrainInfo.getRunId()); + } + if (trainMetricValue.size() > 0) { + trainMetricValues.put(taskId, trainMetricValue); } - trainMetricValues.put(taskId, trainMetricValue); } } + } - if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { - for (Map evaluateMetricRecord : evaluateMetricRecords) { - HashMap evaluateMetricValue = new HashMap<>(); - String taskId = (String) evaluateMetricRecord.get("task_id"); - if (taskId.startsWith("model-evaluate")) { - String runId = (String) evaluateMetricRecord.get("run_id"); - List expTrainInfos = aimService.getExpInfos1(false, experimentIns.getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics = expTrainInfo.getMetrics(); - evaluateMetricValue.putAll(metrics); - evaluateMetricValue.put("run_hash", expTrainInfo.getRunId()); - } + if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { + for (Map evaluateMetricRecord : evaluateMetricRecords) { + HashMap evaluateMetricValue = new HashMap<>(); + String taskId = (String) evaluateMetricRecord.get("task_id"); + if (taskId.startsWith("model-evaluate")) { + String runId = (String) evaluateMetricRecord.get("run_id"); + List expTrainInfos = aimService.getExpInfos1(false, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + evaluateMetricValue.putAll(metrics); + evaluateMetricValue.put("run_hash", expTrainInfo.getRunId()); + } + if (evaluateMetricValue.size() > 0) { + evaluateMetricValues.put(taskId, evaluateMetricValue); } - evaluateMetricValues.put(taskId, evaluateMetricValue); } } - metricValue.put("train", trainMetricValues); - metricValue.put("evaluate", evaluateMetricValues); - experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); + } + metricValue.put("train", trainMetricValues); + metricValue.put("evaluate", evaluateMetricValues); + experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); // } experimentIns.setUpdateTime(new Date()); // 线程安全的添加操作 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index b63fe369..70915655 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -155,22 +155,11 @@ public class AimServiceImpl implements AimService { public Page getExpInfos(boolean isTrain, Integer experimentId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); - ExperimentIns query = new ExperimentIns(); - query.setExperimentId(experimentId); long count = experimentInsDao.countTorE(experimentId, isTrain); - List experimentInsList = experimentInsDao.queryAllByLimit(query, pageRequest); - - List collect = experimentInsList.stream().filter(ins -> { - Map metricRecord = JacksonUtil.parseJSONStr2Map(ins.getMetricRecord()); - if (isTrain) { - return metricRecord.get("train") != null; - } else { - return metricRecord.get("evaluate") != null; - } - }).collect(Collectors.toList()); + List experimentInsList = experimentInsDao.queryTorE(experimentId, isTrain, pageRequest); List aimRunInfoList = new ArrayList<>(); - for (ExperimentIns experimentIns : collect) { + for (ExperimentIns experimentIns : experimentInsList) { InsMetricInfoVo aimRunInfo = new InsMetricInfoVo(); aimRunInfo.setExperimentInsId(experimentIns.getId()); aimRunInfo.setStartTime(experimentIns.getCreateTime()); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 87d06752..9930093d 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -263,6 +263,22 @@ + + insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,metric_value,start_time,finish_time,create_by,create_time,update_by,update_time,state) From b3596a73424b79baece37781b062e628fdaae0d0 Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 17:11:48 +0800 Subject: [PATCH 360/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduling/ExperimentInstanceStatusTask.java | 14 ++++++++++---- .../managementPlatform/ExperimentInsDaoMapper.xml | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index fb72bc65..55ed5a45 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -46,7 +46,6 @@ public class ExperimentInstanceStatusTask { experimentIns.setStatus("Failed"); } //运行成功的实验实例记录指标数值 -// if (Constant.Succeeded.equals(experimentIns.getStatus())) { Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); List> trainMetricRecords = (List>) metricRecord.get("train"); List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); @@ -92,10 +91,17 @@ public class ExperimentInstanceStatusTask { } } } - metricValue.put("train", trainMetricValues); - metricValue.put("evaluate", evaluateMetricValues); + if (trainMetricValues.size() > 0) { + metricValue.put("train", trainMetricValues); + } else { + metricValue.put("train", null); + } + if (evaluateMetricValues.size() > 0) { + metricValue.put("evaluate", evaluateMetricValues); + } else { + metricValue.put("evaluate", null); + } experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); -// } experimentIns.setUpdateTime(new Date()); // 线程安全的添加操作 synchronized (experimentIds) { diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 9930093d..e46da649 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -256,10 +256,10 @@ where state = 1 and experiment_id = #{experimentId} - and not JSON_CONTAINS(metric_record, 'null', '$.train') + and not JSON_CONTAINS(metric_value, 'null', '$.train') - and not JSON_CONTAINS(metric_record, 'null', '$.evaluate') + and not JSON_CONTAINS(metric_value, 'null', '$.evaluate') @@ -272,10 +272,10 @@ where state = 1 and experiment_id = #{experimentId} - and not JSON_CONTAINS(metric_record, 'null', '$.train') + and not JSON_CONTAINS(metric_value, 'null', '$.train') - and not JSON_CONTAINS(metric_record, 'null', '$.evaluate') + and not JSON_CONTAINS(metric_value, 'null', '$.evaluate') From bb8daeac880109b61407707c424c5d6baa7aa77c Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 24 Oct 2024 14:04:49 +0800 Subject: [PATCH 361/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 19 ------------------- k8s/build_and_deploy.sh | 28 +++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/k8s/build.sh b/k8s/build.sh index a84e56f1..e8f19b3c 100755 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -41,25 +41,6 @@ fi baseDir="/home/somuns/ci4s" cd ${baseDir} -# 拉取指定分支的最新代码 -echo "Checking out and pulling branch $branch..." - -git stash -git checkout $branch -if [ $? -ne 0 ]; then - echo "切换到分支 $branch 失败,请检查分支名称是否正确!" - exit 1 -fi - -git stash -git pull origin $branch -if [ $? -ne 0 ]; then - echo "拉取代码失败,请检查网络或联系管理员!" - exit 1 -fi - -chmod +777 ${baseDir}/k8s/*.sh - # 创建目录 mkdir -p ${baseDir}/k8s/dockerfiles/jar mkdir -p ${baseDir}/k8s/dockerfiles/html diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index eacc9c6b..8a9aee0d 100755 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -3,11 +3,6 @@ #记录开始时间 startTime=$(date +%s) -# 登录到目标环境 -baseDir="/home/somuns/ci4s" -cd ${baseDir} - - #build # 默认参数 branch="master" @@ -50,6 +45,29 @@ if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then exit 1 fi +# 拉取指定分支的最新代码 +echo "Checking out and pulling branch $branch..." + +git stash +git checkout $branch +if [ $? -ne 0 ]; then + echo "切换到分支 $branch 失败,请检查分支名称是否正确!" + exit 1 +fi + +git stash +git pull origin $branch +if [ $? -ne 0 ]; then + echo "拉取代码失败,请检查网络或联系管理员!" + exit 1 +fi + +chmod +777 ${baseDir}/k8s/*.sh + +# 登录到目标环境 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + echo "start build" sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service} if [ $? -ne 0 ]; then From e355ae69dfc5b45121c2137d17194ecb996a91d9 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 29 Oct 2024 13:57:53 +0800 Subject: [PATCH 362/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build_and_deploy.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index 8a9aee0d..ef582cf3 100755 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -3,6 +3,10 @@ #记录开始时间 startTime=$(date +%s) +# 登录到目标环境 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + #build # 默认参数 branch="master" @@ -64,10 +68,6 @@ fi chmod +777 ${baseDir}/k8s/*.sh -# 登录到目标环境 -baseDir="/home/somuns/ci4s" -cd ${baseDir} - echo "start build" sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service} if [ $? -ne 0 ]; then From 7206d8a838e715692ffcdd8cda06de9edc08035e Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 29 Oct 2024 14:33:29 +0800 Subject: [PATCH 363/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=9D=E5=A7=8B=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 5cd35fb7..6075f9bc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -116,6 +116,7 @@ public class ServiceServiceImpl implements ServiceService { LoginUser loginUser = SecurityUtils.getLoginUser(); serviceVersion.setCreateBy(loginUser.getUsername()); serviceVersion.setUpdateBy(loginUser.getUsername()); + serviceVersion.setRunState(Constant.Pending); serviceDao.insertServiceVersion(serviceVersion); runServiceVersion(serviceVersion.getId()); return serviceVersion; From fb84e83c3df1de0db8de94c5a6ec6f018a92ffd4 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 30 Oct 2024 09:31:27 +0800 Subject: [PATCH 364/381] =?UTF-8?q?=E4=BF=AE=E6=94=B9docker=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/platform/utils/K8sClientUtil.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 14d4c795..e89b2e87 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.DevEnvironment; import com.ruoyi.platform.mapper.ComputingResourceDao; +import io.fabric8.kubernetes.api.model.SecurityContext; +import io.fabric8.kubernetes.api.model.SecurityContextBuilder; import io.kubernetes.client.Exec; import io.kubernetes.client.custom.IntOrString; import io.kubernetes.client.custom.Quantity; @@ -624,7 +626,10 @@ public class K8sClientUtil { public V1Pod createPodWithEnv(String podName, String namespace, String proxyUrl, String mountPath, String pvcName, String image) { CoreV1Api api = new CoreV1Api(apiClient); - V1PodList v1PodList = null; + + V1SecurityContext v1SecurityContext = new V1SecurityContext(); + v1SecurityContext.setPrivileged(true); + V1Pod pod = new V1PodBuilder() .withNewMetadata() .withName(podName) @@ -633,6 +638,7 @@ public class K8sClientUtil { .addNewContainer() .withName(podName) .withImage(image) // 替换为您实际要使用的镜像名称 + .withSecurityContext(v1SecurityContext) .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath)) .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() .addNewEnv() From b2f1e6b24fcef3dafb020ed795fbf42c1f92567b Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 30 Oct 2024 15:43:33 +0800 Subject: [PATCH 365/381] =?UTF-8?q?=E9=9B=86=E7=BE=A4=E5=86=85=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=AE=BF=E9=97=AEk8s=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/utils/K8sClientUtil.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index e89b2e87..fae8b0bf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -4,8 +4,6 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.DevEnvironment; import com.ruoyi.platform.mapper.ComputingResourceDao; -import io.fabric8.kubernetes.api.model.SecurityContext; -import io.fabric8.kubernetes.api.model.SecurityContextBuilder; import io.kubernetes.client.Exec; import io.kubernetes.client.custom.IntOrString; import io.kubernetes.client.custom.Quantity; @@ -15,6 +13,7 @@ import io.kubernetes.client.openapi.apis.AppsV1Api; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.*; import io.kubernetes.client.util.ClientBuilder; +import io.kubernetes.client.util.Config; import io.kubernetes.client.util.credentials.AccessTokenAuthentication; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -64,9 +63,10 @@ public class K8sClientUtil { this.http = http; this.token = token; try { - this.apiClient = new ClientBuilder(). - setBasePath(http).setVerifyingSsl(false). - setAuthentication(new AccessTokenAuthentication(token)).build(); +// this.apiClient = new ClientBuilder(). +// setBasePath(http).setVerifyingSsl(false). +// setAuthentication(new AccessTokenAuthentication(token)).build(); + this.apiClient = Config.fromCluster(); } catch (Exception e) { log.error("构建K8s-Client异常", e); throw new RuntimeException("构建K8s-Client异常"); From fc34a27fa9ff12b6c93b191417d45812dd429234 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 30 Oct 2024 16:25:25 +0800 Subject: [PATCH 366/381] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=94=AF=E6=8C=81jui?= =?UTF-8?q?cefs=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/platform/utils/K8sClientUtil.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index fae8b0bf..34975688 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -12,9 +12,7 @@ import io.kubernetes.client.openapi.ApiException; import io.kubernetes.client.openapi.apis.AppsV1Api; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.*; -import io.kubernetes.client.util.ClientBuilder; import io.kubernetes.client.util.Config; -import io.kubernetes.client.util.credentials.AccessTokenAuthentication; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.json.JSONObject; @@ -630,6 +628,13 @@ public class K8sClientUtil { V1SecurityContext v1SecurityContext = new V1SecurityContext(); v1SecurityContext.setPrivileged(true); + // 配置卷和卷挂载 + List volumeMounts = new ArrayList<>(); + volumeMounts.add(new V1VolumeMount().name("workspace").mountPath(mountPath)); + + List volumes = new ArrayList<>(); + volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/" + podName + "/" + mountPath).type("DirectoryOrCreate"))); + V1Pod pod = new V1PodBuilder() .withNewMetadata() .withName(podName) @@ -639,7 +644,8 @@ public class K8sClientUtil { .withName(podName) .withImage(image) // 替换为您实际要使用的镜像名称 .withSecurityContext(v1SecurityContext) - .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath)) +// .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath)) + .withVolumeMounts(volumeMounts) .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() .addNewEnv() .withName("HTTP_PROXY") @@ -654,9 +660,10 @@ public class K8sClientUtil { .withValue("localhost,kubernetes.default.svc") .endEnv() .endContainer() - .addNewVolume() - .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) - .endVolume() +// .addNewVolume() +// .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) +// .endVolume() + .withVolumes(volumes) .endSpec() .build(); try { From a57a16f678c31d154eaa0c95a083b7f8b1af312d Mon Sep 17 00:00:00 2001 From: liuhuazhong Date: Tue, 5 Nov 2024 14:35:17 +0800 Subject: [PATCH 367/381] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/config/Oauth2ClientProperties.java | 25 ++++ .../auth/controller/TokenController.java | 79 +++++++++++- .../com/ruoyi/auth/form/AccessTokenVo.java | 119 ++++++++++++++++++ .../ruoyi/auth/service/SysLoginService.java | 59 +++++++++ ruoyi-auth/src/main/resources/bootstrap.yml | 22 +++- .../src/main/resources/bootstrap.yml | 12 +- .../src/main/resources/bootstrap.yml | 6 +- 7 files changed, 309 insertions(+), 13 deletions(-) create mode 100644 ruoyi-auth/src/main/java/com/ruoyi/auth/config/Oauth2ClientProperties.java create mode 100644 ruoyi-auth/src/main/java/com/ruoyi/auth/form/AccessTokenVo.java diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/config/Oauth2ClientProperties.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/config/Oauth2ClientProperties.java new file mode 100644 index 00000000..848f2fee --- /dev/null +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/config/Oauth2ClientProperties.java @@ -0,0 +1,25 @@ +package com.ruoyi.auth.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "oauth2") +@Getter +@Setter +public class Oauth2ClientProperties { + + private String clientId; + private String clientSecret; + private String scope; + private String userAuthorizationUri; + private String accessTokenUri; + private String redirectUri; + private String logoutUri; + private String checkTokenUri; + private String loginPage; +} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java index c53e91a3..4681a385 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java @@ -2,12 +2,19 @@ package com.ruoyi.auth.controller; import javax.servlet.http.HttpServletRequest; +import com.alibaba.fastjson2.JSON; +import com.ruoyi.auth.config.Oauth2ClientProperties; +import com.ruoyi.auth.form.AccessTokenVo; import com.ruoyi.auth.form.LoginKeyBody; +import com.ruoyi.common.core.exception.ServiceException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.*; import com.ruoyi.auth.form.LoginBody; import com.ruoyi.auth.form.RegisterBody; import com.ruoyi.auth.service.SysLoginService; @@ -18,6 +25,9 @@ import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.model.LoginUser; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; /** * token 控制 @@ -33,6 +43,9 @@ public class TokenController @Autowired private SysLoginService sysLoginService; + @Autowired + private Oauth2ClientProperties oauth2ClientProperties; + @PostMapping("login") public R login(@RequestBody LoginBody form) { @@ -51,6 +64,64 @@ public class TokenController return R.ok(tokenService.createToken(userInfo)); } + @PostMapping("loginByOauth2") + public R loginByOauth2(@RequestBody Map params) + /** + * { + * "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiZGVtby1hcHAiXSwiZXhwIjoxNzI5MTU0MTExLCJ1c2VyX25hbWUiOiJhZG1pbiIsImp0aSI6IjQzNGVkNmI0LWIzN2MtNDliMS04NTczLWZhNmU4YTg5YTUxYSIsImNsaWVudF9pZCI6IkFCQyIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdfQ.U591q4fUaUBtBt5Ex-S2daM7DIl9-Ov0MsveymNfHxI", + * "token_type": "bearer", + * "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiZGVtby1hcHAiXSwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiYXRpIjoiNDM0ZWQ2YjQtYjM3Yy00OWIxLTg1NzMtZmE2ZThhODlhNTFhIiwiZXhwIjoxNzMxNjQ5OTY4LCJqdGkiOiJiODFhNmJkMC02ZDQzLTQ4M2QtOThmMy1hZWIxNDcyZDUwNzciLCJjbGllbnRfaWQiOiJBQkMifQ.0uMYVqW1G7j0chwxIdWGwpjDr12ogZPcD1iQfPsAs5k", + * "expires_in": 7198, + * "scope": "read write", + * "account_info": { + * "id": 1, + * "clientId": "ABC", + * "username": "admin", + * "mobile": "1232378743", + * "email": "abc@123.com" + * } + * } + */ + { + if (params.containsKey("code") && StringUtils.isNotBlank(params.get("code"))){ + RestTemplate restTemplate = new RestTemplate(); + String url = oauth2ClientProperties.getAccessTokenUri(); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + MultiValueMap map= new LinkedMultiValueMap<>(); + map.add("grant_type", "authorization_code"); + map.add("code", params.get("code")); + map.add("redirect_uri", oauth2ClientProperties.getRedirectUri()); + map.add("client_id", oauth2ClientProperties.getClientId()); + map.add("client_secret", oauth2ClientProperties.getClientSecret()); + + HttpEntity> request = new HttpEntity<>(map, headers); + ResponseEntity response = restTemplate.postForEntity(url, request, String.class); + String body = response.getBody(); + + AccessTokenVo accessTokenVo = JSON.parseObject(body, AccessTokenVo.class); + String accessToken = accessTokenVo.getAccess_token(); + AccessTokenVo.Account_info accountInfo = accessTokenVo.getAccount_info(); + + // 用户登录 + LoginUser userInfo = sysLoginService.login(accountInfo); + // 获取登录token + Map token = tokenService.createToken(userInfo); + token.put("checkTokenUri",oauth2ClientProperties.getCheckTokenUri()); + token.put("logoutUri",oauth2ClientProperties.getLogoutUri()); + token.put("oauth2AccessToken",accessToken); + return R.ok(token); + } + + throw new ServiceException("用户信息获取失败"); + } + + + @GetMapping("oauth2ClientInfo") + public R getClientInfo() { + return R.ok(JSON.toJSON(oauth2ClientProperties)); + } + @DeleteMapping("logout") public R logout(HttpServletRequest request) { diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/AccessTokenVo.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/AccessTokenVo.java new file mode 100644 index 00000000..2d47e1fc --- /dev/null +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/AccessTokenVo.java @@ -0,0 +1,119 @@ +package com.ruoyi.auth.form; + +import java.io.Serializable; +import java.lang.Integer; +import java.lang.String; + +public class AccessTokenVo implements Serializable { + private String access_token; + + private String refresh_token; + + private String scope; + + private Account_info account_info; + + private String token_type; + + private Integer expires_in; + + public String getAccess_token() { + return this.access_token; + } + + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + + public String getRefresh_token() { + return this.refresh_token; + } + + public void setRefresh_token(String refresh_token) { + this.refresh_token = refresh_token; + } + + public String getScope() { + return this.scope; + } + + public void setScope(String scope) { + this.scope = scope; + } + + public Account_info getAccount_info() { + return this.account_info; + } + + public void setAccount_info(Account_info account_info) { + this.account_info = account_info; + } + + public String getToken_type() { + return this.token_type; + } + + public void setToken_type(String token_type) { + this.token_type = token_type; + } + + public Integer getExpires_in() { + return this.expires_in; + } + + public void setExpires_in(Integer expires_in) { + this.expires_in = expires_in; + } + + public static class Account_info implements Serializable { + private String clientId; + + private String mobile; + + private Integer id; + + private String email; + + private String username; + + public String getClientId() { + return this.clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getMobile() { + return this.mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public Integer getId() { + return this.id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getUsername() { + return this.username; + } + + public void setUsername(String username) { + this.username = username; + } + } +} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java index 1bf324a3..2e1a57e8 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java @@ -1,5 +1,6 @@ package com.ruoyi.auth.service; +import com.ruoyi.auth.form.AccessTokenVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.core.constant.CacheConstants; @@ -193,4 +194,62 @@ public class SysLoginService } return userInfo; } + + public LoginUser login(AccessTokenVo.Account_info accountInfo) { + + String username = accountInfo.getUsername(); + + // 用户名或密码为空 错误 + if (StringUtils.isAnyBlank(username)) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); + throw new ServiceException("用户/密码必须填写"); + } + + // 用户名不在指定范围内 错误 + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); + throw new ServiceException("用户名不在指定范围"); + } + // IP黑名单校验 + String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); + throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); + } + // 查询用户信息 + R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); + throw new ServiceException("登录用户:" + username + " 不存在"); + // register(username, "123456"); +// userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + } + + if (R.FAIL == userResult.getCode()) + { + throw new ServiceException(userResult.getMsg()); + } + + LoginUser userInfo = userResult.getData(); + SysUser user = userResult.getData().getSysUser(); + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); + throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); + throw new ServiceException("对不起,您的账号:" + username + " 已停用"); + } + + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + return userInfo; + } } diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 95a9dfdd..625b9b8f 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -13,17 +13,19 @@ spring: cloud: nacos: discovery: + namespace: cc149503-5508-4da9-a735-9505e2a91363 # 服务注册地址 - server-addr: nacos-ci4s.argo.svc:8848 + server-addr: 172.20.32.181:31203 username: nacos password: h1n2x3j4y5@ retry: enabled: true config: + namespace: cc149503-5508-4da9-a735-9505e2a91363 username: nacos password: h1n2x3j4y5@ # 配置中心地址 - server-addr: nacos-ci4s.argo.svc:8848 + server-addr: 172.20.32.181:31203 # 配置文件格式 file-extension: yml # 共享配置 @@ -36,6 +38,18 @@ spring: refresh: true redis: - host: 172.20.32.150 + host: 172.20.32.88 port: 6379 - password: \ No newline at end of file + password: + +oauth2: + url: http://172.20.32.106:8080 +# url: http://110.41.62.43:8088 + client-id: ci4s + client-secret: 123456 + user-authorization-uri: ${oauth2.url}/oauth/authorize + access-token-uri: ${oauth2.url}/oauth/token + logout-uri: ${oauth2.url}/logout + redirect-uri: http://172.20.32.83:8002/authorize + check-token-uri: ${oauth2.url}/oauth/check_token + login-page: ${oauth2.url}/login.html diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index d389a43a..7f060cdc 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -3,7 +3,11 @@ server: port: 8082 # Spring -spring: +spring: + redis: + host: 172.20.32.88 + port: 6379 + password: application: # 应用名称 name: ruoyi-gateway @@ -14,16 +18,18 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.argo.svc:8848 + server-addr: 172.20.32.181:31203 username: nacos password: h1n2x3j4y5@ retry: enabled: true + namespace: cc149503-5508-4da9-a735-9505e2a91363 config: + namespace: cc149503-5508-4da9-a735-9505e2a91363 username: nacos password: h1n2x3j4y5@ # 配置中心地址 - server-addr: nacos-ci4s.argo.svc:8848 + server-addr: 172.20.32.181:31203 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index 4172ade8..e69f69d3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -14,14 +14,16 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: nacos-ci4s.argo.svc:8848 + namespace: cc149503-5508-4da9-a735-9505e2a91363 + server-addr: 172.20.32.181:31203 username: nacos password: h1n2x3j4y5@ config: + namespace: cc149503-5508-4da9-a735-9505e2a91363 username: nacos password: h1n2x3j4y5@ # 配置中心地址 - server-addr: nacos-ci4s.argo.svc:8848 + server-addr: 172.20.32.181:31203 # 配置文件格式 file-extension: yml # 共享配置 From bb48515532df143774c3eb9586c641a6fb7cd5da Mon Sep 17 00:00:00 2001 From: cp3hnu Date: Tue, 5 Nov 2024 15:25:36 +0800 Subject: [PATCH 368/381] feat: oauth2.0 --- react-ui/config/routes.ts | 10 + react-ui/src/app.tsx | 19 +- react-ui/src/components/IFramePage/index.tsx | 3 + .../RightContent/AvatarDropdown.tsx | 7 + react-ui/src/pages/Authorize/index.less | 0 react-ui/src/pages/Authorize/index.tsx | 50 ++++ react-ui/src/pages/GitLink/index.tsx | 7 + react-ui/src/pages/User/Login/index.tsx | 275 ++++++++++-------- react-ui/src/services/auth/index.js | 16 + react-ui/src/types.ts | 12 + react-ui/src/utils/sessionStorage.ts | 2 + react-ui/src/utils/ui.tsx | 13 +- 12 files changed, 277 insertions(+), 137 deletions(-) create mode 100644 react-ui/src/pages/Authorize/index.less create mode 100644 react-ui/src/pages/Authorize/index.tsx create mode 100644 react-ui/src/pages/GitLink/index.tsx create mode 100644 react-ui/src/services/auth/index.js diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts index 66de518b..0639985b 100644 --- a/react-ui/config/routes.ts +++ b/react-ui/config/routes.ts @@ -27,6 +27,16 @@ export default [ }, ], }, + { + path: '/authorize', + layout: false, + component: './Authorize/index', + }, + { + path: '/gitlink', + layout: true, + component: './GitLink/index', + }, { path: '/user', layout: false, diff --git a/react-ui/src/app.tsx b/react-ui/src/app.tsx index 4f911013..c018253e 100644 --- a/react-ui/src/app.tsx +++ b/react-ui/src/app.tsx @@ -7,7 +7,6 @@ import defaultSettings from '../config/defaultSettings'; import '../public/fonts/font.css'; import { getAccessToken } from './access'; import './dayjsConfig'; -import { PageEnum } from './enums/pagesEnums'; import './global.less'; import { removeAllPageCacheState } from './hooks/pageCacheState'; import { @@ -23,6 +22,7 @@ export { requestConfig as request } from './requestConfig'; import { type GlobalInitialState } from '@/types'; import { menuItemRender } from '@/utils/menuRender'; import ErrorBoundary from './components/ErrorBoundary'; +import { needAuth } from './utils'; import { gotoLoginPage } from './utils/ui'; /** @@ -40,14 +40,17 @@ export async function getInitialState(): Promise { roleNames: response.user.roles, } as API.CurrentUser; } catch (error) { - console.error(error); + console.error('1111', error); gotoLoginPage(); } return undefined; }; + // 如果不是登录页面,执行 const { location } = history; - if (location.pathname !== PageEnum.LOGIN) { + + console.log('getInitialState', needAuth(location.pathname)); + if (needAuth(location.pathname)) { const currentUser = await fetchUserInfo(); return { fetchUserInfo, @@ -94,7 +97,7 @@ export const layout: RuntimeConfig['layout'] = ({ initialState }) => { onPageChange: () => { const { location } = history; // 如果没有登录,重定向到 login - if (!initialState?.currentUser && location.pathname !== PageEnum.LOGIN) { + if (!initialState?.currentUser && needAuth(location.pathname)) { gotoLoginPage(); } }, @@ -159,8 +162,8 @@ export const layout: RuntimeConfig['layout'] = ({ initialState }) => { export const onRouteChange: RuntimeConfig['onRouteChange'] = async (e) => { const { location } = e; const menus = getRemoteMenu(); - // console.log('onRouteChange', e); - if (menus === null && location.pathname !== PageEnum.LOGIN) { + console.log('onRouteChange', menus); + if (menus === null && needAuth(location.pathname)) { history.go(0); } }; @@ -170,12 +173,12 @@ export const patchRoutes: RuntimeConfig['patchRoutes'] = (e) => { }; export const patchClientRoutes: RuntimeConfig['patchClientRoutes'] = (e) => { - //console.log('patchClientRoutes', e); + console.log('patchClientRoutes', e); patchRouteWithRemoteMenus(e.routes); }; export function render(oldRender: () => void) { - // console.log('render'); + console.log('render'); const token = getAccessToken(); if (!token || token?.length === 0) { oldRender(); diff --git a/react-ui/src/components/IFramePage/index.tsx b/react-ui/src/components/IFramePage/index.tsx index c4ab9d3f..ce3e1c48 100644 --- a/react-ui/src/components/IFramePage/index.tsx +++ b/react-ui/src/components/IFramePage/index.tsx @@ -12,6 +12,7 @@ export enum IframePageType { DatasetAnnotation = 'DatasetAnnotation', // 数据标注 AppDevelopment = 'AppDevelopment', // 应用开发 DevEnv = 'DevEnv', // 开发环境 + GitLink = 'GitLink', } const getRequestAPI = (type: IframePageType): (() => Promise) => { @@ -26,6 +27,8 @@ const getRequestAPI = (type: IframePageType): (() => Promise) => { code: 200, data: SessionStorage.getItem(SessionStorage.editorUrlKey) || '', }); + case IframePageType.GitLink: + return () => Promise.resolve({ code: 200, data: 'http://172.20.32.201:4000' }); } }; diff --git a/react-ui/src/components/RightContent/AvatarDropdown.tsx b/react-ui/src/components/RightContent/AvatarDropdown.tsx index 5f8d639a..d93d4f74 100644 --- a/react-ui/src/components/RightContent/AvatarDropdown.tsx +++ b/react-ui/src/components/RightContent/AvatarDropdown.tsx @@ -1,6 +1,8 @@ import { clearSessionToken } from '@/access'; import { setRemoteMenu } from '@/services/session'; import { logout } from '@/services/system/auth'; +import { ClientInfo } from '@/types'; +import SessionStorage from '@/utils/sessionStorage'; import { gotoLoginPage } from '@/utils/ui'; import { LogoutOutlined, UserOutlined } from '@ant-design/icons'; import { setAlpha } from '@ant-design/pro-components'; @@ -64,6 +66,11 @@ const AvatarDropdown: React.FC = ({ menu }) => { clearSessionToken(); setRemoteMenu(null); gotoLoginPage(); + const clientInfo: ClientInfo = SessionStorage.getItem(SessionStorage.clientInfoKey, true); + if (clientInfo) { + const { logoutUri } = clientInfo; + location.replace(logoutUri); + } }; const actionClassName = useEmotionCss(({ token }) => { return { diff --git a/react-ui/src/pages/Authorize/index.less b/react-ui/src/pages/Authorize/index.less new file mode 100644 index 00000000..e69de29b diff --git a/react-ui/src/pages/Authorize/index.tsx b/react-ui/src/pages/Authorize/index.tsx new file mode 100644 index 00000000..f3624f32 --- /dev/null +++ b/react-ui/src/pages/Authorize/index.tsx @@ -0,0 +1,50 @@ +import { setSessionToken } from '@/access'; +import { loginByOauth2Req } from '@/services/auth'; +import { to } from '@/utils/promise'; +import { history, useModel, useSearchParams } from '@umijs/max'; +import { message } from 'antd'; +import { useEffect } from 'react'; +import { flushSync } from 'react-dom'; +import styles from './index.less'; + +function Authorize() { + const { initialState, setInitialState } = useModel('@@initialState'); + const [searchParams] = useSearchParams(); + const code = searchParams.get('code'); + const redirect = searchParams.get('redirect'); + useEffect(() => { + loginByOauth2(); + }, []); + + // 登录 + const loginByOauth2 = async () => { + const params = { + code, + }; + const [res] = await to(loginByOauth2Req(params)); + debugger; + if (res && res.data) { + const { access_token, expires_in } = res.data; + setSessionToken(access_token, access_token, expires_in); + message.success('登录成功!'); + await fetchUserInfo(); + history.push(redirect || '/'); + } + }; + + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + if (userInfo) { + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + })); + }); + } + }; + + return
; +} + +export default Authorize; diff --git a/react-ui/src/pages/GitLink/index.tsx b/react-ui/src/pages/GitLink/index.tsx new file mode 100644 index 00000000..8646926d --- /dev/null +++ b/react-ui/src/pages/GitLink/index.tsx @@ -0,0 +1,7 @@ +import IframePage, { IframePageType } from '@/components/IFramePage'; + +function GitLink() { + return ; +} + +export default GitLink; diff --git a/react-ui/src/pages/User/Login/index.tsx b/react-ui/src/pages/User/Login/index.tsx index 9ef18148..86d56ff6 100644 --- a/react-ui/src/pages/User/Login/index.tsx +++ b/react-ui/src/pages/User/Login/index.tsx @@ -1,11 +1,12 @@ import { clearSessionToken, setSessionToken } from '@/access'; +import { getClientInfoReq } from '@/services/auth'; import { getCaptchaImg, login } from '@/services/system/auth'; -import { parseJsonText } from '@/utils'; -import { safeInvoke } from '@/utils/functional'; import LocalStorage from '@/utils/localStorage'; import { to } from '@/utils/promise'; +import SessionStorage from '@/utils/sessionStorage'; +import { gotoOAuth2 } from '@/utils/ui'; import { history, useModel } from '@umijs/max'; -import { Button, Checkbox, Flex, Form, Image, Input, message, type InputRef } from 'antd'; +import { Form, message, type InputRef } from 'antd'; import CryptoJS from 'crypto-js'; import { useEffect, useRef, useState } from 'react'; import { flushSync } from 'react-dom'; @@ -31,25 +32,35 @@ const Login = () => { const captchaInputRef = useRef(null); useEffect(() => { - getCaptchaCode(); - const autoLogin = LocalStorage.getItem(LocalStorage.rememberPasswordKey) ?? 'false'; - if (autoLogin === 'true') { - const userStorage = LocalStorage.getItem(LocalStorage.loginUserKey); - const userJson = safeInvoke((text: string) => - CryptoJS.AES.decrypt(text, AESKEY).toString(CryptoJS.enc.Utf8), - )(userStorage); - const user = safeInvoke(parseJsonText)(userJson); - if (user && typeof user === 'object' && user.version === VERSION) { - const { username, password } = user; - form.setFieldsValue({ username: username, password: password, autoLogin: true }); - } else { - form.setFieldsValue({ username: '', password: '', autoLogin: true }); - LocalStorage.removeItem(LocalStorage.loginUserKey); - } - } else { - form.setFieldsValue({ username: '', password: '', autoLogin: false }); - } + // getCaptchaCode(); + // const autoLogin = LocalStorage.getItem(LocalStorage.rememberPasswordKey) ?? 'false'; + // if (autoLogin === 'true') { + // const userStorage = LocalStorage.getItem(LocalStorage.loginUserKey); + // const userJson = safeInvoke((text: string) => + // CryptoJS.AES.decrypt(text, AESKEY).toString(CryptoJS.enc.Utf8), + // )(userStorage); + // const user = safeInvoke(parseJsonText)(userJson); + // if (user && typeof user === 'object' && user.version === VERSION) { + // const { username, password } = user; + // form.setFieldsValue({ username: username, password: password, autoLogin: true }); + // } else { + // form.setFieldsValue({ username: '', password: '', autoLogin: true }); + // LocalStorage.removeItem(LocalStorage.loginUserKey); + // } + // } else { + // form.setFieldsValue({ username: '', password: '', autoLogin: false }); + // } + getClientInfo(); }, []); + const getClientInfo = async () => { + const [res] = await to(getClientInfoReq()); + if (res && res.data) { + const clientInfo = res.data; + SessionStorage.setItem(SessionStorage.clientInfoKey, clientInfo, true); + gotoOAuth2(); + } + }; + const getCaptchaCode = async () => { const [res] = await to(getCaptchaImg()); if (res) { @@ -71,6 +82,12 @@ const Login = () => { } }; + const handleSubmit2 = async (values: API.LoginParams) => { + const url = + 'http://172.20.32.106:8080/oauth/authorize?client_id=ci4s&response_type=code&grant_type=authorization_code'; + window.location.href = url; + }; + // 登录 const handleSubmit = async (values: API.LoginParams) => { const [res, error] = await to(login({ ...values, uuid })); @@ -109,113 +126,115 @@ const Login = () => { } }; - return ( -
-
-
- - 智能材料科研平台 -
-
- 智能材料科研平台 - -
-
- 大语言模型运维 统一管理平台 -
- -
-
-
-
- 欢迎登录 - 智能材料科研平台 -
-
-
账号登录
-
-
- - } - allowClear - /> - - - - } - allowClear - /> - - - -
- - - } - ref={captchaInputRef} - allowClear - /> - -
- 验证码 getCaptchaCode()} - /> -
- - - 记住密码 - - - - - -
-
-
-
-
-
- ); + return
; + + // return ( + //
+ //
+ //
+ // + // 智能材料科研平台 + //
+ //
+ // 智能材料科研平台 + // + //
+ //
+ // 大语言模型运维 统一管理平台 + //
+ // + //
+ //
+ //
+ //
+ // 欢迎登录 + // 智能材料科研平台 + //
+ //
+ //
账号登录
+ //
+ //
+ // + // } + // allowClear + // /> + // + + // + // } + // allowClear + // /> + // + + // + //
+ // + // + // } + // ref={captchaInputRef} + // allowClear + // /> + // + //
+ // 验证码 getCaptchaCode()} + // /> + //
+ + // + // 记住密码 + // + + // + // + // + //
+ //
+ //
+ //
+ //
+ //
+ // ); }; export default Login; diff --git a/react-ui/src/services/auth/index.js b/react-ui/src/services/auth/index.js new file mode 100644 index 00000000..853ad6ab --- /dev/null +++ b/react-ui/src/services/auth/index.js @@ -0,0 +1,16 @@ +import { request } from '@umijs/max'; + +// 单点登录 +export function loginByOauth2Req(data) { + return request(`/api/auth/loginByOauth2`, { + method: 'POST', + data, + }); +} + +// 登录获取客户端信息 +export function getClientInfoReq() { + return request(`/api/auth/oauth2ClientInfo`, { + method: 'GET', + }); +} \ No newline at end of file diff --git a/react-ui/src/types.ts b/react-ui/src/types.ts index 40348fab..a7df0561 100644 --- a/react-ui/src/types.ts +++ b/react-ui/src/types.ts @@ -7,6 +7,17 @@ import { ExperimentStatus, TensorBoardStatus } from '@/enums'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; +export type ClientInfo = { + accessTokenUri: string; + checkTokenUri: string; + clientId: string; + clientSecret: string; + loginPage: string; + logoutUri: string; + redirectUri: string; + userAuthorizationUri: string; +}; + // 全局初始状态类型 export type GlobalInitialState = { settings?: Partial; @@ -14,6 +25,7 @@ export type GlobalInitialState = { fetchUserInfo?: () => Promise; loading?: boolean; collapsed?: boolean; + clientInfo?: ClientInfo; }; // 流水线全局参数 diff --git a/react-ui/src/utils/sessionStorage.ts b/react-ui/src/utils/sessionStorage.ts index 41117e1e..8ffa8836 100644 --- a/react-ui/src/utils/sessionStorage.ts +++ b/react-ui/src/utils/sessionStorage.ts @@ -9,6 +9,8 @@ export default class SessionStorage { static readonly serviceVersionInfoKey = 'service-version-info'; // 编辑器 url static readonly editorUrlKey = 'editor-url'; + // 客户端信息 + static readonly clientInfoKey = 'client-info'; static getItem(key: string, isObject: boolean = false) { const jsonStr = sessionStorage.getItem(key); diff --git a/react-ui/src/utils/ui.tsx b/react-ui/src/utils/ui.tsx index 9034a67b..12f013f2 100644 --- a/react-ui/src/utils/ui.tsx +++ b/react-ui/src/utils/ui.tsx @@ -6,9 +6,11 @@ import { PageEnum } from '@/enums/pagesEnums'; import { removeAllPageCacheState } from '@/hooks/pageCacheState'; import themes from '@/styles/theme.less'; +import { type ClientInfo } from '@/types'; import { history } from '@umijs/max'; import { Modal, message, type ModalFuncProps, type UploadFile } from 'antd'; import { closeAllModals } from './modal'; +import SessionStorage from './sessionStorage'; type ModalConfirmProps = ModalFuncProps & { isDelete?: boolean; @@ -75,7 +77,7 @@ export const gotoLoginPage = (toHome: boolean = true) => { const { pathname, search } = location; const urlParams = new URLSearchParams(); urlParams.append('redirect', pathname + search); - const newSearch = toHome && pathname !== '/' ? '' : urlParams.toString(); + const newSearch = toHome || pathname === '/' ? '' : urlParams.toString(); // console.log('pathname', pathname); // console.log('search', search); if (pathname !== PageEnum.LOGIN) { @@ -88,6 +90,15 @@ export const gotoLoginPage = (toHome: boolean = true) => { } }; +export const gotoOAuth2 = () => { + const clientInfo = SessionStorage.getItem(SessionStorage.clientInfoKey, true) as ClientInfo; + if (clientInfo) { + const { clientId, userAuthorizationUri } = clientInfo; + const url = `${userAuthorizationUri}?client_id=${clientId}&response_type=code&grant_type=authorization_code`; + location.replace(url); + } +}; + /** * 验证文件上传 * From 09b6a37a55a9707b8e790b969581142221ce78d3 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Tue, 5 Nov 2024 16:58:16 +0800 Subject: [PATCH 369/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/service/impl/ImageServiceImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java index 92d2bb45..8eb6ab68 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java @@ -63,7 +63,7 @@ public class ImageServiceImpl implements ImageService { private MinioService minioService; @Value("${minio.dataReleaseBucketName}") private String bucketName; -// @Value("${harbor.bucketName}") + // @Value("${harbor.bucketName}") // private String bucketName; @Value("${harbor.repository}") private String repository; @@ -184,12 +184,14 @@ public class ImageServiceImpl implements ImageService { // } List imageVersions = imageVersionService.queryByImageId(id); - for (ImageVersion imageVersion :imageVersions) { - dockerClientUtil.removeImage(imageVersion.getUrl(), imageVersion.getHostIp()); + for (ImageVersion imageVersion : imageVersions) { + if (StringUtils.isNotEmpty(imageVersion.getHostIp())) { + dockerClientUtil.removeImage(imageVersion.getUrl(), imageVersion.getHostIp()); + } } image.setState(0); - return this.imageDao.update(image) > 0 ? "删除成功" : "删除失败"; + return this.imageDao.update(image) > 0 ? "删除成功" : "删除失败"; } @@ -376,10 +378,10 @@ public class ImageServiceImpl implements ImageService { if (oldImage != null) { List oldImageVersions = imageVersionDao.queryByImageId(oldImage.getId()); for (ImageVersion oldImageVersion : oldImageVersions) { - if(oldImageVersion.getTagName().equals(imageVo.getTagName())){ + if (oldImageVersion.getTagName().equals(imageVo.getTagName())) { throw new IllegalStateException("镜像tag不能重复"); } - } + } } LoginUser loginUser = SecurityUtils.getLoginUser(); From e571fe6f423fa15736fb5360ffcffc4829acb30f Mon Sep 17 00:00:00 2001 From: liuhuazhong Date: Wed, 6 Nov 2024 14:42:45 +0800 Subject: [PATCH 370/381] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 22 ++++--------------- .../src/main/resources/bootstrap.yml | 10 ++------- .../src/main/resources/bootstrap.yml | 6 ++--- 3 files changed, 8 insertions(+), 30 deletions(-) diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 625b9b8f..95a9dfdd 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -13,19 +13,17 @@ spring: cloud: nacos: discovery: - namespace: cc149503-5508-4da9-a735-9505e2a91363 # 服务注册地址 - server-addr: 172.20.32.181:31203 + server-addr: nacos-ci4s.argo.svc:8848 username: nacos password: h1n2x3j4y5@ retry: enabled: true config: - namespace: cc149503-5508-4da9-a735-9505e2a91363 username: nacos password: h1n2x3j4y5@ # 配置中心地址 - server-addr: 172.20.32.181:31203 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -38,18 +36,6 @@ spring: refresh: true redis: - host: 172.20.32.88 + host: 172.20.32.150 port: 6379 - password: - -oauth2: - url: http://172.20.32.106:8080 -# url: http://110.41.62.43:8088 - client-id: ci4s - client-secret: 123456 - user-authorization-uri: ${oauth2.url}/oauth/authorize - access-token-uri: ${oauth2.url}/oauth/token - logout-uri: ${oauth2.url}/logout - redirect-uri: http://172.20.32.83:8002/authorize - check-token-uri: ${oauth2.url}/oauth/check_token - login-page: ${oauth2.url}/login.html + password: \ No newline at end of file diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index 7f060cdc..bcfd24d8 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -4,10 +4,6 @@ server: # Spring spring: - redis: - host: 172.20.32.88 - port: 6379 - password: application: # 应用名称 name: ruoyi-gateway @@ -18,18 +14,16 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 172.20.32.181:31203 + server-addr: nacos-ci4s.argo.svc:8848 username: nacos password: h1n2x3j4y5@ retry: enabled: true - namespace: cc149503-5508-4da9-a735-9505e2a91363 config: - namespace: cc149503-5508-4da9-a735-9505e2a91363 username: nacos password: h1n2x3j4y5@ # 配置中心地址 - server-addr: 172.20.32.181:31203 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index e69f69d3..4172ade8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -14,16 +14,14 @@ spring: nacos: discovery: # 服务注册地址 - namespace: cc149503-5508-4da9-a735-9505e2a91363 - server-addr: 172.20.32.181:31203 + server-addr: nacos-ci4s.argo.svc:8848 username: nacos password: h1n2x3j4y5@ config: - namespace: cc149503-5508-4da9-a735-9505e2a91363 username: nacos password: h1n2x3j4y5@ # 配置中心地址 - server-addr: 172.20.32.181:31203 + server-addr: nacos-ci4s.argo.svc:8848 # 配置文件格式 file-extension: yml # 共享配置 From c3763d1a4217a41cc173f5c6635de44642ca39d5 Mon Sep 17 00:00:00 2001 From: cp3hnu Date: Wed, 6 Nov 2024 15:23:39 +0800 Subject: [PATCH 371/381] =?UTF-8?q?feat:=20=E4=BF=9D=E7=95=99=E4=B8=80?= =?UTF-8?q?=E4=BB=BD=E5=8E=9F=E6=9C=89=E7=9A=84=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/src/pages/User/Login/login.tsx | 221 ++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 react-ui/src/pages/User/Login/login.tsx diff --git a/react-ui/src/pages/User/Login/login.tsx b/react-ui/src/pages/User/Login/login.tsx new file mode 100644 index 00000000..9ef18148 --- /dev/null +++ b/react-ui/src/pages/User/Login/login.tsx @@ -0,0 +1,221 @@ +import { clearSessionToken, setSessionToken } from '@/access'; +import { getCaptchaImg, login } from '@/services/system/auth'; +import { parseJsonText } from '@/utils'; +import { safeInvoke } from '@/utils/functional'; +import LocalStorage from '@/utils/localStorage'; +import { to } from '@/utils/promise'; +import { history, useModel } from '@umijs/max'; +import { Button, Checkbox, Flex, Form, Image, Input, message, type InputRef } from 'antd'; +import CryptoJS from 'crypto-js'; +import { useEffect, useRef, useState } from 'react'; +import { flushSync } from 'react-dom'; +import styles from './login.less'; + +const VERSION = 1; +const AESKEY = 'OPENSOURCETECHNOLOGYCENTER'; + +const LoginInputPrefix = ({ icon }: { icon: string }) => { + return ( +
+ +
+
+ ); +}; + +const Login = () => { + const { initialState, setInitialState } = useModel('@@initialState'); + const [captchaCode, setCaptchaCode] = useState(''); + const [uuid, setUuid] = useState(''); + const [form] = Form.useForm(); + const captchaInputRef = useRef(null); + + useEffect(() => { + getCaptchaCode(); + const autoLogin = LocalStorage.getItem(LocalStorage.rememberPasswordKey) ?? 'false'; + if (autoLogin === 'true') { + const userStorage = LocalStorage.getItem(LocalStorage.loginUserKey); + const userJson = safeInvoke((text: string) => + CryptoJS.AES.decrypt(text, AESKEY).toString(CryptoJS.enc.Utf8), + )(userStorage); + const user = safeInvoke(parseJsonText)(userJson); + if (user && typeof user === 'object' && user.version === VERSION) { + const { username, password } = user; + form.setFieldsValue({ username: username, password: password, autoLogin: true }); + } else { + form.setFieldsValue({ username: '', password: '', autoLogin: true }); + LocalStorage.removeItem(LocalStorage.loginUserKey); + } + } else { + form.setFieldsValue({ username: '', password: '', autoLogin: false }); + } + }, []); + const getCaptchaCode = async () => { + const [res] = await to(getCaptchaImg()); + if (res) { + const imgdata = `data:image/png;base64,${res.img}`; + setCaptchaCode(imgdata); + setUuid(res.uuid); + } + }; + + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + if (userInfo) { + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + })); + }); + } + }; + + // 登录 + const handleSubmit = async (values: API.LoginParams) => { + const [res, error] = await to(login({ ...values, uuid })); + if (res && res.data) { + const current = new Date(); + const expireTime = current.setTime(current.getTime() + 1000 * 12 * 60 * 60); + const { access_token } = res.data; + setSessionToken(access_token, access_token, expireTime); + message.success('登录成功!'); + + LocalStorage.setItem(LocalStorage.rememberPasswordKey, values.autoLogin ? 'true' : 'false'); + if (values.autoLogin) { + const user = { + username: values.username, + password: values.password, + version: VERSION, + }; + const encrypted = CryptoJS.AES.encrypt(JSON.stringify(user), AESKEY).toString(); + LocalStorage.setItem(LocalStorage.loginUserKey, encrypted); + } else { + LocalStorage.removeItem(LocalStorage.loginUserKey); + } + + await fetchUserInfo(); + const urlParams = new URL(window.location.href).searchParams; + history.push(urlParams.get('redirect') || '/'); + } else { + if (error?.data?.code === 500 && error?.data?.msg === '验证码错误') { + captchaInputRef.current?.focus({ + cursor: 'all', + }); + } + + clearSessionToken(); + getCaptchaCode(); + } + }; + + return ( +
+
+
+ + 智能材料科研平台 +
+
+ 智能材料科研平台 + +
+
+ 大语言模型运维 统一管理平台 +
+ +
+
+
+
+ 欢迎登录 + 智能材料科研平台 +
+
+
账号登录
+
+
+ + } + allowClear + /> + + + + } + allowClear + /> + + + +
+ + + } + ref={captchaInputRef} + allowClear + /> + +
+ 验证码 getCaptchaCode()} + /> +
+ + + 记住密码 + + + + + +
+
+
+
+
+
+ ); +}; + +export default Login; From afe3650e9eeb8b642642d723645f6b8969fc80ee Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 09:31:10 +0800 Subject: [PATCH 372/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 8 +++++++- k8s/build.sh | 12 +++++++++--- k8s/build_and_deploy.sh | 2 +- k8s/deploy.sh | 23 +++++++++++++++++++++-- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/k8s/build-java.sh b/k8s/build-java.sh index 7bb2180b..313f7bdf 100755 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -6,8 +6,14 @@ baseDir="/home/somuns/ci4s" #判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块 if [ "$1" == "all" ]; then buildDir=$baseDir -else +elif [ "$1" == "manage"] buildDir="$baseDir/ruoyi-modules/management-platform" +elif [ "$1" == "auth"] + buildDir="$baseDir/ruoyi-auth" +elif [ "$1" == "gateway"] + buildDir="$baseDir/ruoyi-gateway" +elif [ "$1" == "system"] + buildDir="$baseDir/ruoyi-modules/ruoyi-system" fi echo "Building $buildDir" diff --git a/k8s/build.sh b/k8s/build.sh index e8f19b3c..929393d1 100755 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -30,7 +30,7 @@ done echo "branch: $branch" echo "service: $service" -valid_services=("manage-front" "manage" "front" "all") +valid_services=("manage-front" "manage" "front" "all" "auth" "gateway" "system") if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then echo "Invalid service name: $service" >&2 echo "Valid services are: ${valid_services[*]}" @@ -107,13 +107,19 @@ compile_java() { fi } -if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then +if [ "$service" == "front" ]; then # 编译前端 compile_front fi +if [ "$service" == "manage-front" ]; then + # 编译前端 + compile_front + # 编译java + compile_java "manage" +fi -if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then +if [ "$service" != "manage-front" ] || [ "$service" != "all" ] || [ "$service" != "front" ]; then # 编译java compile_java $service fi diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index ef582cf3..93f329c2 100755 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -35,7 +35,7 @@ while getopts "b:s:e:h" opt; do esac done -valid_services=("manage-front" "manage" "front" "all") +valid_services=("manage-front" "manage" "front" "all" "auth" "gateway" "system") if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then echo "Invalid service name: $service" >&2 echo "Valid services are: ${valid_services[*]}" diff --git a/k8s/deploy.sh b/k8s/deploy.sh index 5b3f7887..d8b5e3e7 100755 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -129,15 +129,34 @@ build_and_deploy() { deploy_service ${yaml_file} } +if [ "$service" == "front" ]; then + build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" +fi + # 构建和部署 manage 服务 -if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then +if [ "$service" == "manage" ]; then build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" fi +if [ "$service" == "auth" ]; then + #部署认证中心 + build_and_deploy "auth-dockerfile" "172.20.32.187/ci4s/ci4s-auth:${tag}" "k8s-5auth.yaml" +fi + +if [ "$service" == "gateway" ]; then + #部署网关 + build_and_deploy "gateway-dockerfile" "172.20.32.187/ci4s/ci4s-gateway:${tag}" "k8s-4gateway.yaml" +fi + +if [ "$service" == "system" ]; then + #部署系统服务 + build_and_deploy "system-dockerfile" "172.20.32.187/ci4s/ci4s-system:${tag}" "k8s-6system.yaml" +fi # 构建和部署 front 服务 -if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then +if [ "$service" == "manage-front" ]; then build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml" + build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml" fi From 5e2df58a10849c8c79a01dff2ad9d1d59794c443 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 09:37:30 +0800 Subject: [PATCH 373/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/deploy.sh b/k8s/deploy.sh index d8b5e3e7..d06c05d9 100755 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -27,7 +27,7 @@ done echo "Deploy service: $service, environment: $env" -valid_services=("manage-front" "manage" "front" "all") +valid_services=("manage-front" "manage" "front" "all" "auth" "gateway" "system") if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then echo "Invalid service name: $service" >&2 echo "Valid services are: ${valid_services[*]}" From 19681ccca1757f1adc476a447d417df4a60b7199 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 09:39:36 +0800 Subject: [PATCH 374/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build_and_deploy.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh index 93f329c2..44ea23fa 100755 --- a/k8s/build_and_deploy.sh +++ b/k8s/build_and_deploy.sh @@ -35,20 +35,6 @@ while getopts "b:s:e:h" opt; do esac done -valid_services=("manage-front" "manage" "front" "all" "auth" "gateway" "system") -if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then - echo "Invalid service name: $service" >&2 - echo "Valid services are: ${valid_services[*]}" - exit 1 -fi - -valid_envs=("dev" "test") -if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then - echo "Invalid environment: $env" >&2 - echo "Valid environments are: ${valid_envs[*]}" - exit 1 -fi - # 拉取指定分支的最新代码 echo "Checking out and pulling branch $branch..." @@ -68,6 +54,20 @@ fi chmod +777 ${baseDir}/k8s/*.sh +valid_services=("manage-front" "manage" "front" "all" "auth" "gateway" "system") +if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then + echo "Invalid service name: $service" >&2 + echo "Valid services are: ${valid_services[*]}" + exit 1 +fi + +valid_envs=("dev" "test") +if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then + echo "Invalid environment: $env" >&2 + echo "Valid environments are: ${valid_envs[*]}" + exit 1 +fi + echo "start build" sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service} if [ $? -ne 0 ]; then From ab5252a056db5ef432b8e61d8a8b651e1ace2232 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 10:08:47 +0800 Subject: [PATCH 375/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/build-java.sh b/k8s/build-java.sh index 313f7bdf..59544f42 100755 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -12,7 +12,7 @@ elif [ "$1" == "auth"] buildDir="$baseDir/ruoyi-auth" elif [ "$1" == "gateway"] buildDir="$baseDir/ruoyi-gateway" -elif [ "$1" == "system"] +else buildDir="$baseDir/ruoyi-modules/ruoyi-system" fi From 4f23f78f17053d09219facb1ad059f2a44f3b93f Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 10:10:47 +0800 Subject: [PATCH 376/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/k8s/build-java.sh b/k8s/build-java.sh index 59544f42..808beea2 100755 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -6,13 +6,13 @@ baseDir="/home/somuns/ci4s" #判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块 if [ "$1" == "all" ]; then buildDir=$baseDir -elif [ "$1" == "manage"] +elif [ "$1" == "manage"]; then buildDir="$baseDir/ruoyi-modules/management-platform" -elif [ "$1" == "auth"] +elif [ "$1" == "auth"]; then buildDir="$baseDir/ruoyi-auth" -elif [ "$1" == "gateway"] +elif [ "$1" == "gateway"]; then buildDir="$baseDir/ruoyi-gateway" -else +elif [ "$1" == "system"]; then buildDir="$baseDir/ruoyi-modules/ruoyi-system" fi From 2e6c47ccabce9adb196b7f696cb8774e77e30001 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 10:21:52 +0800 Subject: [PATCH 377/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build-java.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/k8s/build-java.sh b/k8s/build-java.sh index 808beea2..bb0884a3 100755 --- a/k8s/build-java.sh +++ b/k8s/build-java.sh @@ -6,13 +6,13 @@ baseDir="/home/somuns/ci4s" #判断$1是否为all,如果是,则编译所有模块,否则只编译management-platform模块 if [ "$1" == "all" ]; then buildDir=$baseDir -elif [ "$1" == "manage"]; then +elif [ "$1" == "manage" ]; then buildDir="$baseDir/ruoyi-modules/management-platform" -elif [ "$1" == "auth"]; then +elif [ "$1" == "auth" ]; then buildDir="$baseDir/ruoyi-auth" -elif [ "$1" == "gateway"]; then +elif [ "$1" == "gateway" ]; then buildDir="$baseDir/ruoyi-gateway" -elif [ "$1" == "system"]; then +elif [ "$1" == "system" ]; then buildDir="$baseDir/ruoyi-modules/ruoyi-system" fi From 1295ba0813b5d22e0be857e6c387153d6ef0555d Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 10:54:41 +0800 Subject: [PATCH 378/381] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/build.sh b/k8s/build.sh index 929393d1..13298d60 100755 --- a/k8s/build.sh +++ b/k8s/build.sh @@ -119,7 +119,7 @@ if [ "$service" == "manage-front" ]; then compile_java "manage" fi -if [ "$service" != "manage-front" ] || [ "$service" != "all" ] || [ "$service" != "front" ]; then +if [ "$service" != "manage-front" ] && [ "$service" != "all" ] && [ "$service" != "front" ]; then # 编译java compile_java $service fi From 5a479704225a971009d8caa40003b3bfc7d7c8f6 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 11:41:27 +0800 Subject: [PATCH 379/381] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=97=B6=E5=81=9C=E6=AD=A2jupyter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/platform/service/DevEnvironmentService.java | 2 +- .../ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java index 055b60dc..4562c7d4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java @@ -54,5 +54,5 @@ public interface DevEnvironmentService { */ boolean deleteById(Integer id); - String removeById(Integer id); + String removeById(Integer id) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java index 7992f089..606d35aa 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java @@ -138,7 +138,7 @@ public class DevEnvironmentServiceImpl implements DevEnvironmentService { } @Override - public String removeById(Integer id) { + public String removeById(Integer id) throws Exception { DevEnvironment devEnvironment = this.devEnvironmentDao.queryById(id); if (devEnvironment == null){ return "开发环境信息不存在"; @@ -152,6 +152,7 @@ public class DevEnvironmentServiceImpl implements DevEnvironmentService { return "无权限删除该开发环境"; } + jupyterService.stopJupyterService(id); devEnvironment.setState(0); return this.devEnvironmentDao.update(devEnvironment)>0?"删除成功":"删除失败"; } From a4478f591497aea39e705347cbfff3716bfa573d Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 7 Nov 2024 11:49:20 +0800 Subject: [PATCH 380/381] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=97=B6=E5=81=9C=E6=AD=A2jupyter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/devEnvironment/DevEnvironmentController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java index 7667f1ce..0a3b608d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java @@ -83,7 +83,7 @@ public class DevEnvironmentController extends BaseController { * @return 删除是否成功 */ @DeleteMapping("{id}") - public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) { + public GenericsAjaxResult deleteById(@PathVariable("id") Integer id) throws Exception { return genericsSuccess(this.devEnvironmentService.removeById(id)); } From 1492af2fab731c3308f17ea3aa8e2affa33aebe7 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Sat, 16 Nov 2024 16:23:10 +0800 Subject: [PATCH 381/381] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 95a9dfdd..4dfb267d 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -33,9 +33,4 @@ spring: refresh: true - data-id: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} group: DEFAULT_GROUP - refresh: true - - redis: - host: 172.20.32.150 - port: 6379 - password: \ No newline at end of file + refresh: true \ No newline at end of file