From 2d008c8174fafd4d186a7fcdbbafc969dabacf55 Mon Sep 17 00:00:00 2001 From: actiontech-zihan Date: Tue, 1 Sep 2026 18:27:57 +0800 Subject: [PATCH 1/5] feat: expand SQL manage export columns with rule_name Map list audit_result to audit_level, rule_name, rule_desc for export_column_keys. Relates to https://github.com/actiontech/sqle-ee/issues/3127 Co-authored-by: Cursor --- .../component/SQLEEIndex/exportColumnKeys.test.ts | 15 ++++++++++++++- .../component/SQLEEIndex/exportColumnKeys.ts | 4 +++- .../component/SQLEEIndex/index.test.tsx | 4 ++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.test.ts b/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.test.ts index bef38c670..515f95478 100644 --- a/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.test.ts +++ b/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.test.ts @@ -33,6 +33,7 @@ describe('page/SqlManagement/SQLEEIndex/exportColumnKeys', () => { 'sql', 'source', 'audit_level', + 'rule_name', 'rule_desc', 'object_name', 'instance_name', @@ -68,6 +69,7 @@ describe('page/SqlManagement/SQLEEIndex/exportColumnKeys', () => { 'sql', 'sql_fingerprint', 'audit_level', + 'rule_name', 'rule_desc', 'object_name', 'instance_name', @@ -116,7 +118,18 @@ describe('page/SqlManagement/SQLEEIndex/exportColumnKeys', () => { const keys = getSqlManagementExportColumnKeys(columns, 'admin'); expect(keys).not.toContain('audit_result'); expect(keys).toEqual( - expect.arrayContaining(['audit_level', 'rule_desc', 'object_name']) + expect.arrayContaining([ + 'audit_level', + 'rule_name', + 'rule_desc', + 'object_name' + ]) + ); + expect(keys.indexOf('rule_name')).toBeGreaterThan( + keys.indexOf('audit_level') + ); + expect(keys.indexOf('rule_desc')).toBeGreaterThan( + keys.indexOf('rule_name') ); }); diff --git a/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.ts b/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.ts index 22f6e8f07..1b2204727 100644 --- a/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.ts +++ b/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/exportColumnKeys.ts @@ -7,6 +7,7 @@ export const SQL_MANAGEMENT_TABLE_NAME = 'sql_management_list'; const LIST_AUDIT_RESULT_COLUMN_KEY = 'audit_result'; const AUDIT_LEVEL_EXPORT_KEY = 'audit_level'; +const RULE_NAME_EXPORT_KEY = 'rule_name'; const RULE_DESC_EXPORT_KEY = 'rule_desc'; const OBJECT_NAME_EXPORT_KEY = 'object_name'; @@ -15,6 +16,7 @@ const SQL_MANAGEMENT_EXPORT_COLUMN_KEYS = [ 'sql', 'source', AUDIT_LEVEL_EXPORT_KEY, + RULE_NAME_EXPORT_KEY, RULE_DESC_EXPORT_KEY, OBJECT_NAME_EXPORT_KEY, 'instance_name', @@ -83,7 +85,7 @@ const isExportableColumnKey = ( const expandListColumnKeyToExportKeys = (columnKey: string): string[] => { if (columnKey === LIST_AUDIT_RESULT_COLUMN_KEY) { - return [AUDIT_LEVEL_EXPORT_KEY, RULE_DESC_EXPORT_KEY]; + return [AUDIT_LEVEL_EXPORT_KEY, RULE_NAME_EXPORT_KEY, RULE_DESC_EXPORT_KEY]; } return [columnKey]; diff --git a/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/index.test.tsx b/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/index.test.tsx index 2a18affce..fc0c9b35f 100644 --- a/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/index.test.tsx +++ b/packages/sqle/src/page/SqlManagement/component/SQLEEIndex/index.test.tsx @@ -283,7 +283,7 @@ describe('page/SqlManagement/SQLEEIndex', () => { filter_assignee: mockCurrentUserReturn.uid, filter_priority: exportSqlManageV1FilterPriorityEnum.high, export_column_keys: - 'sql_fingerprint,sql,source,audit_level,rule_desc,object_name,instance_name,schema_name,priority,fp_count,first_appear_timestamp,last_receive_timestamp,assignees,endpoints,status,remark' + 'sql_fingerprint,sql,source,audit_level,rule_name,rule_desc,object_name,instance_name,schema_name,priority,fp_count,first_appear_timestamp,last_receive_timestamp,assignees,endpoints,status,remark' }, { responseType: 'blob' @@ -345,7 +345,7 @@ describe('page/SqlManagement/SQLEEIndex', () => { filter_status: 'unhandled', fuzzy_search_sql_fingerprint: searchText, export_column_keys: - 'sql,sql_fingerprint,audit_level,rule_desc,object_name,instance_name,schema_name,priority,endpoints,status,fp_count,first_appear_timestamp,last_receive_timestamp' + 'sql,sql_fingerprint,audit_level,rule_name,rule_desc,object_name,instance_name,schema_name,priority,endpoints,status,fp_count,first_appear_timestamp,last_receive_timestamp' }), { responseType: 'blob' From 4efe2a2ef8b34630492390b79deed6294d46ef33 Mon Sep 17 00:00:00 2001 From: actiontech-zihan Date: Tue, 1 Sep 2026 18:27:58 +0800 Subject: [PATCH 2/5] test: stabilize AuditResultList pagination mock for CI Slice mock data by page and cap rows to keep the suite within timeout. Co-authored-by: Cursor --- .../AuditResultList/__tests__/index.test.tsx | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx b/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx index 2ba926c51..04ab626db 100644 --- a/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx +++ b/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx @@ -11,6 +11,7 @@ import { IAuditTaskSQLResV2 } from '@actiontech/shared/lib/api/sqle/service/comm import { createSpySuccessResponse } from '@actiontech/shared/lib/testUtil/mockApi'; import { getAllBySelector } from '@actiontech/shared/lib/testUtil/customQuery'; import execWorkflow from '../../../../../testUtils/mockApi/execWorkflow'; +import rule_template from '../../../../../testUtils/mockApi/rule_template'; import { mockUseCurrentProject } from '@actiontech/shared/lib/testUtil/mockHook/mockUseCurrentProject'; import { UtilsConsoleErrorStringsEnum, @@ -65,6 +66,7 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { mockUseCurrentUser(); jest.useFakeTimers(); execWorkflow.mockAllApi(); + rule_template.getRuleList(); requestGetAuditTaskSQLs = execWorkflow.getAuditTaskSQLs(); mockUseCurrentProject(); }); @@ -93,9 +95,11 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { expect(baseElement).toMatchSnapshot(); }); + // 全量 CI 下该用例墙钟常贴近默认 60s:mock 按页切片,避免每次渲染 40+ 行;超时放宽兜底 it('render expect page index set 1 when change exec status & duplicate', async () => { + const PAGE_SIZE = 20; const taskSQLsData: IAuditTaskSQLResV2[] = []; - for (let i = 0; i < 50; i++) { + for (let i = 0; i < 41; i++) { const index = i + 1; taskSQLsData.push({ number: index, @@ -108,11 +112,16 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { description: '' }); } - requestGetAuditTaskSQLs.mockImplementation(() => - createSpySuccessResponse({ - data: taskSQLsData, - total_nums: taskSQLsData.length - }) + requestGetAuditTaskSQLs.mockImplementation( + (params?: { page_index?: string; page_size?: string }) => { + const pageIndex = Number(params?.page_index ?? 1); + const pageSize = Number(params?.page_size ?? PAGE_SIZE); + const start = (pageIndex - 1) * pageSize; + return createSpySuccessResponse({ + data: taskSQLsData.slice(start, start + pageSize), + total_nums: taskSQLsData.length + }); + } ); const { baseElement } = customRender({ tasks: tasksData @@ -170,5 +179,5 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { page_size: '20', task_id: '1' }); - }); + }, 120000); }); From 9fd0206b3e50826c065da6c86c28ff8fae2866e2 Mon Sep 17 00:00:00 2001 From: actiontech-zihan Date: Tue, 1 Sep 2026 18:27:58 +0800 Subject: [PATCH 3/5] chore: sync UI_VERSION to dms-ui/feat-3127 tip Co-authored-by: Cursor --- .../test/__snapshots__/BasicVersionModal.test.tsx.snap | 4 ++-- .../VersionModal/test/__snapshots__/index.ce.test.tsx.snap | 4 ++-- .../Modal/VersionModal/test/__snapshots__/index.test.tsx.snap | 4 ++-- packages/base/src/scripts/version.ts | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap b/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap index d860f4107..0c5c0b7bf 100644 --- a/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap +++ b/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap @@ -110,7 +110,7 @@ exports[`base/Nav/SideMenu/UserMenu/BasicVersionModal render snap when open is t class="ant-typography css-dev-only-do-not-override-txh9fw" > UI: - dev-zjrc-sql-manage-rule-filter-memberof bdf1f7ff3 + dev-zjrc-sql-manage-export-skip-parsesql 267c91729
UI: - dev-zjrc-sql-manage-rule-filter-memberof bdf1f7ff3 + dev-zjrc-sql-manage-export-skip-parsesql 267c91729
UI: - dev-zjrc-sql-manage-rule-filter-memberof bdf1f7ff3 + dev-zjrc-sql-manage-export-skip-parsesql 267c91729
UI: - dev-zjrc-sql-manage-rule-filter-memberof bdf1f7ff3 + dev-zjrc-sql-manage-export-skip-parsesql 267c91729
UI: - dev-zjrc-sql-manage-rule-filter-memberof bdf1f7ff3 + dev-zjrc-sql-manage-export-skip-parsesql 267c91729
UI: - dev-zjrc-sql-manage-rule-filter-memberof bdf1f7ff3 + dev-zjrc-sql-manage-export-skip-parsesql 267c91729
Date: Wed, 2 Sep 2026 12:26:54 +0800 Subject: [PATCH 4/5] test: drop unrelated AuditResultList rule_template mock from export PR Keep pagination coverage with full mock data and CI timeout guard while removing rule_template setup that is unrelated to SQL manage export work. Co-authored-by: Cursor --- .../AuditResultList/__tests__/index.test.tsx | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx b/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx index 04ab626db..cba24d7b8 100644 --- a/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx +++ b/packages/sqle/src/page/SqlExecWorkflow/Common/AuditResultList/__tests__/index.test.tsx @@ -11,7 +11,6 @@ import { IAuditTaskSQLResV2 } from '@actiontech/shared/lib/api/sqle/service/comm import { createSpySuccessResponse } from '@actiontech/shared/lib/testUtil/mockApi'; import { getAllBySelector } from '@actiontech/shared/lib/testUtil/customQuery'; import execWorkflow from '../../../../../testUtils/mockApi/execWorkflow'; -import rule_template from '../../../../../testUtils/mockApi/rule_template'; import { mockUseCurrentProject } from '@actiontech/shared/lib/testUtil/mockHook/mockUseCurrentProject'; import { UtilsConsoleErrorStringsEnum, @@ -66,7 +65,6 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { mockUseCurrentUser(); jest.useFakeTimers(); execWorkflow.mockAllApi(); - rule_template.getRuleList(); requestGetAuditTaskSQLs = execWorkflow.getAuditTaskSQLs(); mockUseCurrentProject(); }); @@ -95,10 +93,10 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { expect(baseElement).toMatchSnapshot(); }); - // 全量 CI 下该用例墙钟常贴近默认 60s:mock 按页切片,避免每次渲染 40+ 行;超时放宽兜底 + // Full CI serial/maxWorkers=2 can exceed Jest 60s default (~70s observed). it('render expect page index set 1 when change exec status & duplicate', async () => { - const PAGE_SIZE = 20; const taskSQLsData: IAuditTaskSQLResV2[] = []; + // page_size=20 → need >40 rows for 3 pagination items for (let i = 0; i < 41; i++) { const index = i + 1; taskSQLsData.push({ @@ -112,16 +110,11 @@ describe('sqle/ExecWorkflow/Common/AuditResultList', () => { description: '' }); } - requestGetAuditTaskSQLs.mockImplementation( - (params?: { page_index?: string; page_size?: string }) => { - const pageIndex = Number(params?.page_index ?? 1); - const pageSize = Number(params?.page_size ?? PAGE_SIZE); - const start = (pageIndex - 1) * pageSize; - return createSpySuccessResponse({ - data: taskSQLsData.slice(start, start + pageSize), - total_nums: taskSQLsData.length - }); - } + requestGetAuditTaskSQLs.mockImplementation(() => + createSpySuccessResponse({ + data: taskSQLsData, + total_nums: taskSQLsData.length + }) ); const { baseElement } = customRender({ tasks: tasksData From 7ad2d75f00aee02c831c77381a8252780922eeeb Mon Sep 17 00:00:00 2001 From: actiontech-zihan Date: Wed, 2 Sep 2026 12:38:18 +0800 Subject: [PATCH 5/5] chore: sync UI_VERSION to dms-ui/feat-3127 tip Refresh VersionModal snapshots after branch tip moves past review cleanup. Co-authored-by: Cursor --- .../test/__snapshots__/BasicVersionModal.test.tsx.snap | 4 ++-- .../VersionModal/test/__snapshots__/index.ce.test.tsx.snap | 4 ++-- .../Modal/VersionModal/test/__snapshots__/index.test.tsx.snap | 4 ++-- packages/base/src/scripts/version.ts | 3 +-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap b/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap index 0c5c0b7bf..eb95d5253 100644 --- a/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap +++ b/packages/base/src/page/Nav/SideMenu/UserMenu/Modal/VersionModal/test/__snapshots__/BasicVersionModal.test.tsx.snap @@ -110,7 +110,7 @@ exports[`base/Nav/SideMenu/UserMenu/BasicVersionModal render snap when open is t class="ant-typography css-dev-only-do-not-override-txh9fw" > UI: - dev-zjrc-sql-manage-export-skip-parsesql 267c91729 + dms-ui/feat-3127 9e4430d27
UI: - dev-zjrc-sql-manage-export-skip-parsesql 267c91729 + dms-ui/feat-3127 9e4430d27
UI: - dev-zjrc-sql-manage-export-skip-parsesql 267c91729 + dms-ui/feat-3127 9e4430d27
UI: - dev-zjrc-sql-manage-export-skip-parsesql 267c91729 + dms-ui/feat-3127 9e4430d27
UI: - dev-zjrc-sql-manage-export-skip-parsesql 267c91729 + dms-ui/feat-3127 9e4430d27
UI: - dev-zjrc-sql-manage-export-skip-parsesql 267c91729 + dms-ui/feat-3127 9e4430d27