🐛 fix(driver-manager/mongodb): 恢复旧版 MongoDB 连接兼容

- 默认版本:将 MongoDB 推荐 driver-agent 切到 1.17.9
- 安装策略:v1 兼容驱动优先尝试发布资产,不再强制源码构建
- 状态提示:已安装 2.x 时提示重装以兼容 MongoDB 4.0
- 前端交互:重装驱动优先选择推荐兼容版本
- 测试覆盖:补充版本选择、下载候选和重装传参回归
This commit is contained in:
Syngnat
2026-06-12 15:18:57 +08:00
parent c3a3387ee3
commit c99cdb5d0d
5 changed files with 165 additions and 29 deletions

View File

@@ -230,4 +230,62 @@ describe('DriverManagerModal toolbar actions', () => {
vi.useRealTimers();
}
});
it('reinstalls stale MongoDB v2 drivers with the v1 compatibility default', async () => {
vi.useFakeTimers({ shouldAdvanceTime: true });
try {
vi.setSystemTime(new Date(Date.now() + 2 * 60 * 1000));
backendApp.GetDriverStatusList.mockResolvedValue({
success: true,
data: {
downloadDir: 'D:/drivers',
drivers: [
{
type: 'mongodb',
name: 'MongoDB',
builtIn: false,
pinnedVersion: '1.17.9',
installedVersion: '2.5.0',
runtimeAvailable: true,
packageInstalled: true,
connectable: true,
needsUpdate: true,
defaultDownloadUrl: 'builtin://activate/mongodb',
message: '建议重装',
},
],
},
});
backendApp.GetDriverVersionList.mockResolvedValue({
success: true,
data: {
versions: [
{ version: '2.5.0', downloadUrl: 'builtin://activate/mongodb?version=2.5.0' },
{ version: '1.17.9', downloadUrl: 'builtin://activate/mongodb', recommended: true },
],
},
});
backendApp.DownloadDriverPackage.mockResolvedValue({ success: true });
let renderer: ReactTestRenderer;
await act(async () => {
renderer = create(<DriverManagerModal open onClose={vi.fn()} />);
});
await flushPromises();
const reinstallButton = findButton(renderer!, '重装驱动');
await act(async () => {
await reinstallButton.props.onClick();
});
expect(backendApp.DownloadDriverPackage).toHaveBeenCalledWith(
'mongodb',
'1.17.9',
'builtin://activate/mongodb',
'D:/drivers',
);
} finally {
vi.useRealTimers();
}
});
});

View File

@@ -525,6 +525,8 @@ const DriverManagerModal: React.FC<{ open: boolean; onClose: () => void; onOpenG
return prev;
}
const preferred =
(row.needsUpdate ? options.find((option) => option.version === row.pinnedVersion) : undefined) ||
(row.needsUpdate ? options.find((option) => option.recommended) : undefined) ||
options.find((option) => option.version === row.installedVersion) ||
options.find((option) => option.version === row.pinnedVersion) ||
options.find((option) => option.recommended) ||
@@ -712,6 +714,8 @@ const DriverManagerModal: React.FC<{ open: boolean; onClose: () => void; onOpenG
}
const selectedKey = selectedVersionMap[row.type];
const selectedOption =
(row.needsUpdate ? versionOptions.find((item) => item.version === row.pinnedVersion) : undefined) ||
(row.needsUpdate ? versionOptions.find((item) => item.recommended) : undefined) ||
versionOptions.find((item) => buildVersionOptionKey(item) === selectedKey) ||
versionOptions.find((item) => item.recommended) ||
versionOptions[0];
@@ -1033,7 +1037,7 @@ const DriverManagerModal: React.FC<{ open: boolean; onClose: () => void; onOpenG
const selectedKey = selectedVersionMap[row.type];
const selectOptions = buildVersionSelectOptions(options);
const mongoHint = row.type === 'mongodb'
? '当前仅支持 MongoDB 1.17.x 和 2.x更老 1.x 暂不提供安装。'
? 'MongoDB 4.0 请使用 1.17.x 兼容驱动2.x 驱动要求 MongoDB 4.2+。'
: '';
return (
<div className="driver-manager-version-control">