From 6d613483886841db9e82d25999b6b2287bf91a34 Mon Sep 17 00:00:00 2001 From: hhhhsc701 <56435672+hhhhsc701@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:35:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20deer-flow=E9=80=9A=E8=BF=87gateway?= =?UTF-8?q?=E8=BD=AC=E5=8F=91=20(#193)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 14 +----- .../gateway/ApiGatewayApplication.java | 10 ++++ .../datamate/backend-with-deer-flow.conf | 49 ------------------- deployment/docker/datamate/backend.conf | 31 ++++++++++++ deployment/docker/datamate/docker-compose.yml | 2 +- .../charts/frontend/templates/configmap.yaml | 45 ++++------------- deployment/helm/datamate/values.yaml | 2 - frontend/src/pages/Home/Home.tsx | 3 +- 8 files changed, 53 insertions(+), 103 deletions(-) delete mode 100644 deployment/docker/datamate/backend-with-deer-flow.conf diff --git a/Makefile b/Makefile index 9e34676..09b5e16 100644 --- a/Makefile +++ b/Makefile @@ -257,16 +257,11 @@ VALID_SERVICE_TARGETS := datamate backend frontend runtime mineru "deer-flow" mi elif [ "$*" = "mineru" ]; then \ REGISTRY=$(REGISTRY) && docker compose -f deployment/docker/datamate/docker-compose.yml up -d datamate-mineru; \ elif [ "$*" = "datamate" ]; then \ - if docker compose ls --filter name=deer-flow | grep -q deer-flow; then \ - (NGINX_CONF="./backend-with-deer-flow.conf" REGISTRY=$(REGISTRY) docker compose -f deployment/docker/datamate/docker-compose.yml up -d); \ - else \ - (REGISTRY=$(REGISTRY) docker compose -f deployment/docker/datamate/docker-compose.yml up -d); \ - fi; \ + REGISTRY=$(REGISTRY) docker compose -f deployment/docker/datamate/docker-compose.yml up -d; \ elif [ "$*" = "deer-flow" ]; then \ cp runtime/deer-flow/.env deployment/docker/deer-flow/.env; \ cp runtime/deer-flow/conf.yaml deployment/docker/deer-flow/conf.yaml; \ REGISTRY=$(REGISTRY) docker compose -f deployment/docker/deer-flow/docker-compose.yml up -d; \ - NGINX_CONF="./backend-with-deer-flow.conf" REGISTRY=$(REGISTRY) docker compose -f deployment/docker/datamate/docker-compose.yml up -d; \ elif [ "$*" = "milvus" ]; then \ docker compose -f deployment/docker/milvus/docker-compose.yml up -d; \ else \ @@ -300,9 +295,6 @@ VALID_SERVICE_TARGETS := datamate backend frontend runtime mineru "deer-flow" mi fi; \ elif [ "$*" = "deer-flow" ]; then \ docker compose -f deployment/docker/deer-flow/docker-compose.yml down; \ - if docker compose ls --filter name=datamate | grep -q datamate; then \ - REGISTRY=$(REGISTRY) docker compose -f deployment/docker/datamate/docker-compose.yml up -d; \ - fi; \ elif [ "$*" = "milvus" ]; then \ if [ "$(DELETE_VOLUMES_CHOICE)" = "1" ]; then \ docker compose -f deployment/docker/milvus/docker-compose.yml down -v; \ @@ -337,7 +329,6 @@ VALID_K8S_TARGETS := mineru datamate deer-flow milvus label-studio cp runtime/deer-flow/.env deployment/helm/deer-flow/charts/public/.env; \ cp runtime/deer-flow/conf.yaml deployment/helm/deer-flow/charts/public/conf.yaml; \ helm upgrade deer-flow deployment/helm/deer-flow -n $(NAMESPACE) --install --set global.image.repository=$(REGISTRY); \ - helm upgrade datamate deployment/helm/datamate/ -n $(NAMESPACE) --install --set global.deerFlow.enable=true --set global.image.repository=$(REGISTRY); \ elif [ "$*" = "milvus" ]; then \ helm upgrade milvus deployment/helm/milvus -n $(NAMESPACE) --install; \ fi @@ -359,9 +350,6 @@ VALID_K8S_TARGETS := mineru datamate deer-flow milvus label-studio helm uninstall datamate -n $(NAMESPACE) --ignore-not-found; \ elif [ "$*" = "deer-flow" ]; then \ helm uninstall deer-flow -n $(NAMESPACE) --ignore-not-found; \ - if helm ls -n $(NAMESPACE) --filter datamate | grep -q datamate; then \ - helm upgrade datamate deployment/helm/datamate/ -n $(NAMESPACE) --set global.deerFlow.enable=false; \ - fi; \ elif [ "$*" = "milvus" ]; then \ helm uninstall milvus -n $(NAMESPACE) --ignore-not-found; \ fi diff --git a/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java b/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java index 0d954f0..c9b0f3b 100644 --- a/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java +++ b/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java @@ -33,6 +33,16 @@ public class ApiGatewayApplication { .route("data-evaluation", r -> r.path("/api/evaluation/**") .uri("http://datamate-backend-python:18000")) + .route("deer-flow-frontend", r -> r.path("/chat/**") + .uri("http://deer-flow-frontend:3000")) + + .route("deer-flow-static", r -> r.path("/_next/**") + .uri("http://deer-flow-frontend:3000")) + + .route("deer-flow-backend", r -> r.path("/deer-flow-backend/**") + .filters(f -> f.stripPrefix(1).prefixPath("/api")) + .uri("http://deer-flow-backend:8000")) + // 其他后端服务 .route("default", r -> r.path("/api/**") .uri("http://datamate-backend:8080")) diff --git a/deployment/docker/datamate/backend-with-deer-flow.conf b/deployment/docker/datamate/backend-with-deer-flow.conf deleted file mode 100644 index ad3ca5b..0000000 --- a/deployment/docker/datamate/backend-with-deer-flow.conf +++ /dev/null @@ -1,49 +0,0 @@ -server { - listen 80; - server_name 0.0.0.0; - - access_log /var/log/datamate/frontend/access.log main; - error_log /var/log/datamate/frontend/error.log notice; - - client_max_body_size 1024M; - - add_header Set-Cookie "NEXT_LOCALE=zh"; - - location /api/ { - proxy_pass http://datamate-gateway:8080/api/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location /chat { - proxy_pass http://deer-flow-frontend:3000/chat; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location /_next { - proxy_pass http://deer-flow-frontend:3000/_next; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location /deer-flow-backend/ { - proxy_pass http://deer-flow-backend:8000/api/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location / { - if ($query_string ~* "_rsc=pmmii") { - proxy_pass http://deer-flow-frontend:3000; - break; - } - - root /opt/frontend; - try_files $uri $uri/ /index.html; - } -} diff --git a/deployment/docker/datamate/backend.conf b/deployment/docker/datamate/backend.conf index d73e8ca..a687944 100644 --- a/deployment/docker/datamate/backend.conf +++ b/deployment/docker/datamate/backend.conf @@ -7,6 +7,8 @@ server { client_max_body_size 1024M; + add_header Set-Cookie "NEXT_LOCALE=zh"; + location /api/ { proxy_pass http://datamate-gateway:8080/api/; proxy_set_header Host $host; @@ -14,6 +16,35 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } + location /chat { + proxy_pass http://datamate-gateway:8080/chat; + 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_intercept_errors on; + error_page 500 501 502 503 504 =200 @static_fallback; + } + + location /_next { + proxy_pass http://datamate-gateway:8080/_next; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /deer-flow-backend { + proxy_pass http://datamate-gateway:8080/deer-flow-backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location @static_fallback { + root /opt/frontend; + try_files $uri $uri/ /index.html; + } + location / { root /opt/frontend; try_files $uri $uri/ /index.html; diff --git a/deployment/docker/datamate/docker-compose.yml b/deployment/docker/datamate/docker-compose.yml index d6972c2..cc32413 100644 --- a/deployment/docker/datamate/docker-compose.yml +++ b/deployment/docker/datamate/docker-compose.yml @@ -47,7 +47,7 @@ services: - "30000:80" # nodePort → hostPort volumes: - frontend_log_volume:/var/log/datamate/frontend - - ${NGINX_CONF:-./backend.conf}:/etc/nginx/conf.d/backend.conf + - ./backend.conf:/etc/nginx/conf.d/backend.conf networks: [ datamate ] depends_on: - datamate-backend diff --git a/deployment/helm/datamate/charts/frontend/templates/configmap.yaml b/deployment/helm/datamate/charts/frontend/templates/configmap.yaml index c629834..09d33e9 100644 --- a/deployment/helm/datamate/charts/frontend/templates/configmap.yaml +++ b/deployment/helm/datamate/charts/frontend/templates/configmap.yaml @@ -1,4 +1,3 @@ -{{- if .Values.global.deerFlow.enable }} apiVersion: v1 kind: ConfigMap metadata: @@ -24,62 +23,36 @@ data: } location /chat { - proxy_pass http://deer-flow-frontend:3000/chat; + proxy_pass http://datamate-gateway:8080/chat; 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_intercept_errors on; + error_page 500 501 502 503 504 =200 @static_fallback; } location /_next { - proxy_pass http://deer-flow-frontend:3000/_next; + proxy_pass http://datamate-gateway:8080/_next; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - location /deer-flow-backend/ { - proxy_pass http://deer-flow-backend:8000/api/; + location /deer-flow-backend { + proxy_pass http://datamate-gateway:8080/deer-flow-backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - location / { - if ($query_string ~* "_rsc=pmmii") { - proxy_pass http://deer-flow-frontend:3000; - break; - } - + location @static_fallback { root /opt/frontend; try_files $uri $uri/ /index.html; } - } -{{- else }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: datamate-nginx-conf -data: - backend.conf: | - server { - listen 80; - server_name 0.0.0.0; - - access_log /var/log/datamate/frontend/access.log main; - error_log /var/log/datamate/frontend/error.log notice; - - client_max_body_size 1024M; - - location /api/ { - proxy_pass http://datamate-gateway:8080/api/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } location / { root /opt/frontend; try_files $uri $uri/ /index.html; } - } -{{- end }} + } \ No newline at end of file diff --git a/deployment/helm/datamate/values.yaml b/deployment/helm/datamate/values.yaml index 2162e84..2adf629 100644 --- a/deployment/helm/datamate/values.yaml +++ b/deployment/helm/datamate/values.yaml @@ -4,8 +4,6 @@ global: namespace: datamate - deerFlow: - enable: false image: repository: "ghcr.io/modelengine-group/" pullPolicy: "IfNotPresent" diff --git a/frontend/src/pages/Home/Home.tsx b/frontend/src/pages/Home/Home.tsx index f324181..4f5b120 100644 --- a/frontend/src/pages/Home/Home.tsx +++ b/frontend/src/pages/Home/Home.tsx @@ -31,8 +31,7 @@ export default function WelcomePage() { }); // 检查 HTTP 状态码在 200-299 范围内 - const contentType = response.headers.get("content-type"); - if (contentType && contentType.includes('application/json')) { + if (response.ok) { return true; } } catch (error) {