feat(data-sync/export): 支持同步与备份后台工作台

- 将数据同步及各级 SQL 备份统一迁入稳定工作区
- 全局保留任务状态、进度和结构化日志,关闭后可重新接回
- 支持从当前任务及历史记录打开 SQL 恢复工作台
- 锁定运行中配置并禁止后台任务分离到独立窗口
This commit is contained in:
Syngnat
2026-07-20 13:43:58 +08:00
parent 19d962d9ba
commit 21e0921b3b
45 changed files with 3043 additions and 647 deletions

View File

@@ -25,4 +25,21 @@ describe('TableOverview v2 context menu', () => {
expect(cardSource).not.toContain('popupRender');
expect(listSource).not.toContain('popupRender');
});
it('routes table backup and INSERT export entries through the retained export workbench', () => {
const source = readFileSync(new URL('./TableOverview.tsx', import.meta.url), 'utf8');
expect(source).toContain('buildBatchTableExportWorkbenchTab({');
expect(source).toContain("const resolvedOptions = mode === 'backup'");
expect(source).toContain('await showSQLExportOptionsDialog()');
expect(source).toContain('initialObjectNames: [normalizedTableName]');
expect(source).toContain('contentMode: mode');
expect(source).toContain('...resolvedOptions');
expect(source).toContain("await openTableSQLExportWorkbench(tableName, 'dataOnly')");
expect(source).toContain("void openTableSQLExportWorkbench(tableName, 'backup')");
expect(source).toContain("onClick: () => openTableSQLExportWorkbench(table.name, 'backup')");
expect(source).not.toContain('ExportTableWithOptions');
expect(source).not.toContain('useExportProgressDialog');
expect(source).not.toContain('{exportProgressModal}');
});
});