Skip to content

feat: add project-level ops type for data export workflows - #668

Open
LordofAvernus wants to merge 2 commits into
mainfrom
dms/feat-967
Open

feat: add project-level ops type for data export workflows#668
LordofAvernus wants to merge 2 commits into
mainfrom
dms/feat-967

Conversation

@LordofAvernus

@LordofAvernus LordofAvernus commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

User description

关联的 issue

https://github.com/actiontech/dms-ee/issues/967

描述你的变更

  • 新增项目级运维类型字典 CRUD、种子与 dms-common 客户端封装
  • 数据导出工单可选落库 ops_type_uid,列表/详情/Dashboard 展示与筛选

确认项(pr提交后操作)

Tip

请在指定复审人之前,确认并完成以下事项,完成后✅


  • 我已完成自测
  • 我已记录完整日志方便进行诊断
  • 我已在关联的issue里补充了实现方案
  • 我已在关联的issue里补充了测试影响面
  • 我已确认了变更的兼容性,如果不兼容则在issue里标记 not_compatible
  • 我已确认了是否要更新文档,如果要更新则在issue里标记 need_update_doc

Made with Cursor


Description

  • 新增运维类型字典业务逻辑与存储实现

  • 集成数据导出工单中运维类型的创建、展示及筛选功能

  • 添加、更新、删除运维类型 API 接口及前后端路由映射

  • 完善国际化配置与测试用例,确保各层正确交互


Diagram Walkthrough

flowchart LR
  A["用户请求运维类型API"] --> B["Controller"]
  B --> C["Service层"]
  C --> D["Biz逻辑"]
  D --> E["Storage存储"]
  D --> F["数据导出工单关联"]
Loading

File Walkthrough

Relevant files
Tests
1 files
ops_type_test.go
添加运维类型CRUD及权限测试代码                                                                               
+300/-0 
Enhancement
10 files
ops_type.go
实现运维类型字典业务逻辑及默认预置功能                                                                           
+250/-0 
data_export_workflow.go
集成ops_type_uid字段及根据字典解析运维类型名称                                                       
+83/-0   
data_export_workflow.go
更新工单结构,添加运维类型引用及引用统计接口                                                                     
+22/-3   
workflow.go
扩展存储查询与更新,包含ops_type_uid字段过滤                                                         
+53/-1   
ops_type.go
新增运维类型存储接口及实现,包括CRUD操作                                                                     
+122/-0 
ops_type_controller.go
新增运维类型RESTful API控制器实现                                                                     
+148/-0 
ops_type.go
提供运维类型服务接口实现,封装业务调用                                                                           
+101/-0 
project.go
更新项目初始化逻辑,预置运维类型字典项                                                                           
+14/-1   
router.go
更新路由配置,增加ops_type相关接口路由                                                                   
+6/-0     
ops_type.go
新增跨服务调用运维类型字典的工具函数                                                                             
+37/-0   
Documentation
5 files
data_export_workflow.go
修改数据导出工单API,新增运维类型字段定义与筛选                                                               
+27/-11 
ops_type.go
定义运维类型数据模型及API请求/响应结构                                                                       
+25/-0   
message_zh.go
添加运维类型国际化消息与错误提示                                                                                 
+9/-0     
active.zh.toml
更新中文国际化配置,添加运维类型默认名称和错误提示                                                               
+5/-0     
active.en.toml
更新英文国际化配置,添加运维类型默认名称和错误提示                                                               
+5/-0     
Additional files
13 files
ops_type.go +52/-0   
swagger.json +1570/-198
swagger.yaml +1018/-25
dms_controller.go +3/-0     
repo_fields.go +1/-0     
cloudbeaver.go +3/-1     
service.go +6/-2     
convert.go +2/-0     
model.go +10/-0   
sql_workbench_service.go +3/-1     
router.go +5/-0     
workflow.go +3/-0     
data_export_workflow.go +4/-0     

LordofAvernus and others added 2 commits August 15, 2026 04:48
Introduce CRUD APIs, storage, default seeds and dms-common client helpers for ops types, aligned with environment tags.

Co-authored-by: Cursor <cursoragent@cursor.com>
Persist optional ops_type_uid on create, ignore updates, and expose name/filter on list/detail/dashboard paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

PR Reviewer Guide 🔍

⏱️ Estimated effort to review: 5 🔵🔵🔵🔵🔵
🧪 PR contains tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

重复硬编码

在 UpdateWorkflowColumns 方法中直接比较键 "ops_type_uid",如果后续需要修改或确保一致性,建议提取为常量,避免硬编码带来的潜在维护问题。

	return nil
}

// UpdateWorkflowColumns 更新 workflows 行字段;强制忽略 ops_type_uid(创建后不可改)。
func (d *WorkflowRepo) UpdateWorkflowColumns(ctx context.Context, workflowUID string, updates map[string]interface{}) error {
	if updates == nil {
		return nil
	}
	safe := make(map[string]interface{}, len(updates))
	for k, v := range updates {
		if k == "ops_type_uid" {
			continue
		}
		safe[k] = v
	}
	if len(safe) == 0 {
		return nil
	}
	return transaction(d.log, ctx, d.db, func(tx *gorm.DB) error {
		if err := tx.WithContext(ctx).Model(&model.Workflow{}).Where("uid = ?", workflowUID).Updates(safe).Error; err != nil {
			return fmt.Errorf("failed to update workflow columns: %v", err)
		}
		return nil
	})
}
拼写错误

在权限校验相关的错误信息中,使用了 "golobal"(应为 "global")来描述全局运维权限,建议修正该拼写错误以提升用户体验。

if canOpProject, err := uc.opPermissionVerifyUsecase.CanOpProject(ctx, currentUserUID, projectUID, false); err != nil {
	return fmt.Errorf("check user is project admin or golobal op permission failed: %v", err)
} else if !canOpProject {
	return fmt.Errorf("user is not project admin or golobal op permission user")
}

⚠️ Review coverage: The following files were not included in this review because of the token budget:

  • api/swagger.json
  • api/swagger.yaml

@github-actions

Copy link
Copy Markdown

Failed to generate code suggestions for PR

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.

1 participant