Skip to content

fix: PathEscape project name in DMS to SQLE URLs - #653

Merged
Seechi-Yolo merged 2 commits into
mainfrom
feat-936-project-chinese-name
Jul 27, 2026
Merged

fix: PathEscape project name in DMS to SQLE URLs#653
Seechi-Yolo merged 2 commits into
mainfrom
feat-936-project-chinese-name

Conversation

@LordofAvernus

@LordofAvernus LordofAvernus commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

User description

Summary

  • PathEscape project_name when DMS builds SQLE URLs that place the name in the path (db_service, CloudBeaver auto workflow, SQL Workbench auto workflow).
  • Enables Chinese project names for downstream SQLE calls from DMS.

Test plan

  • Static scan: all DMS hard-coded project-name SQLE URLs use PathEscape
  • Gateway matrix: FE SQLE family routes with encoded Chinese project_name
  • Chromium wire encode check for Chinese project_name paths
  • Create Chinese-named project via API on quick-deploy

Fixes actiontech/dms-ee#936


Description

  • 使用 url.PathEscape 对项目名称进行编码

  • 更新 Cloudbeaver、DBService 与 Workbench 相关 URL 构建方式

  • 确保中文项目名称在 SQLE 调用中正确传递


Diagram Walkthrough

flowchart LR
  A["“项目名称”未编码"] --> B["调用 url.PathEscape 进行编码"]
  B --> C["生成安全 URL"]
  C --> D["下游 SQLE API 调用"]
Loading

File Walkthrough

Relevant files
Bug fix
cloudbeaver.go
Cloudbeaver 项目名称 URL 编码更新                                                               

internal/dms/biz/cloudbeaver.go

  • 引入 "net/url" 包
  • 使用 url.PathEscape 对 projectName 进行编码
  • 替换变量名从 url 到 reqURL
+3/-2     
db_service.go
DBService 项目名称 URL 编码更新                                                                   

internal/dms/biz/db_service.go

  • 添加 "net/url" 包的引用
  • 使用 url.PathEscape 对 project.Name 编码构建 URL
  • 修复实例审核计划的 URL 构造问题
+2/-1     
workflow_exec.go
SQL Workbench 项目名称 URL 编码更新                                                           

internal/sql_workbench/service/workflow_exec.go

  • 引入 "net/url" 包
  • 采用 url.PathEscape 对 projectName 进行编码
  • 修改变量名从 url 到 reqURL,确保接口调用正常
+3/-2     

Encode project name path segments so Chinese project names work when
DMS calls SQLE APIs that use project_name in the URL.

Fixes actiontech/dms-ee#936
@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown

PR Reviewer Guide 🔍

(Review updated until commit 69f9067)

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected

@github-actions

Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
检查项目名称有效性

建议在使用 url.PathEscape(projectName) 前,先验证 projectName 是否为空或无效,避免生成错误的 URL
并导致后续网络请求失败。该检查可防止因空字符串引起的不符合预期的行为。

internal/dms/biz/cloudbeaver.go [2345-2351]

+if projectName == "" {
+    return nil, fmt.Errorf("project name is empty")
+}
 reqURL := fmt.Sprintf("%s/v1/projects/%s/workflows/auto_create_and_execute", sqleUrl, url.PathEscape(projectName))
 if err := pkgHttp.Call(ctx, http.MethodPost, reqURL, headers, writer.FormDataContentType(), requestBody.Bytes(), &reply); err != nil {
Suggestion importance[1-10]: 7

__

Why: 该建议在生成请求 URL 前增加对 projectName 为空的校验,有助于提前捕获错误并防止后续网络请求失败,但改动幅度较小。

Medium
校验项目名称非空

建议在使用 url.PathEscape(project.Name) 前,先验证 project.Name 是否为空或无效,确保生成的 URL
格式正确。这样可以有效防止因空值导致的请求异常。

internal/dms/biz/db_service.go [421]

+if project.Name == "" {
+    return fmt.Errorf("project name is empty")
+}
 sqleAddr := fmt.Sprintf("%s/v2/projects/%s/instance_audit_plans", target.URL.String(), url.PathEscape(project.Name))
Suggestion importance[1-10]: 7

__

Why: 此建议在 URL 拼接前验证 project.Name 是否为空,从而提高了错误处理的稳健性,不过影响范围相对有限。

Medium

Encode project_name when calling auto_create_and_execute so Chinese
project names work for ODC/SQL Workbench non-DQL workflow execution.

Fixes actiontech/dms-ee#936
@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit 69f9067

@Seechi-Yolo
Seechi-Yolo merged commit 30c7c6a into main Jul 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants