🐛 fix(external-sql): 修复外部 SQL 文件丢失后标签无法关闭

- 后端读取 SQL 文件失败时返回 file_not_found 结构化错误码
- 前端识别文件被删除或移动的场景,允许用户确认关闭标签
- 保留权限、网络盘异常等非缺失错误的关闭拦截,避免误丢草稿
- 补充前后端测试覆盖缺失文件识别与标签关闭提示
Close #566
This commit is contained in:
Syngnat
2026-06-16 08:48:43 +08:00
parent c70eb7157f
commit 0816702084
6 changed files with 175 additions and 52 deletions

View File

@@ -208,6 +208,11 @@ describe('TabManager hover info', () => {
const source = readFileSync(new URL('./TabManager.tsx', import.meta.url), 'utf8');
expect(source).toContain('ReadSQLFile(filePath)');
expect(source).toContain('isSQLFileMissingReadResult(res)');
expect(source).toContain('isSQLFileMissingErrorMessage(errorMessage)');
expect(source).toContain("title: '关闭已丢失的 SQL 文件标签?'");
expect(source).toContain('关闭后将丢弃标签内的本地草稿');
expect(source).toContain('confirmDirtyTabsOrClose();');
expect(source).toContain("getSQLFileTabDraft(tab.id, String(tab.query ?? ''))");
expect(source).toContain('hasSQLFileTabUnsavedChanges({ ...tab, query: draft }, normalizeSQLFileReadContent(res.data))');
expect(source).toContain("title: '保存 SQL 文件修改?'");