fix: Bad Request: No valid session ID provided (#405) (#427)

This commit is contained in:
cheestard
2025-11-19 18:17:37 +08:00
committed by GitHub
parent 07adeab036
commit 1869f283ba
12 changed files with 459 additions and 38 deletions

View File

@@ -41,6 +41,7 @@ interface SystemSettings {
smartRouting?: SmartRoutingConfig;
mcpRouter?: MCPRouterConfig;
nameSeparator?: string;
enableSessionRebuild?: boolean;
};
}
@@ -86,6 +87,7 @@ export const useSettingsData = () => {
});
const [nameSeparator, setNameSeparator] = useState<string>('-');
const [enableSessionRebuild, setEnableSessionRebuild] = useState<boolean>(false);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -141,6 +143,9 @@ export const useSettingsData = () => {
if (data.success && data.data?.systemConfig?.nameSeparator !== undefined) {
setNameSeparator(data.data.systemConfig.nameSeparator);
}
if (data.success && data.data?.systemConfig?.enableSessionRebuild !== undefined) {
setEnableSessionRebuild(data.data.systemConfig.enableSessionRebuild);
}
} catch (error) {
console.error('Failed to fetch settings:', error);
setError(error instanceof Error ? error.message : 'Failed to fetch settings');
@@ -420,6 +425,36 @@ export const useSettingsData = () => {
}
};
// Update session rebuild setting
const updateSessionRebuild = async (value: boolean) => {
setLoading(true);
setError(null);
try {
const data = await apiPut('/system-config', {
enableSessionRebuild: value,
});
if (data.success) {
setEnableSessionRebuild(value);
showToast(t('settings.restartRequired'), 'info');
return true;
} else {
showToast(data.message || t('errors.failedToUpdateSystemConfig'));
return false;
}
} catch (error) {
console.error('Failed to update session rebuild setting:', error);
const errorMessage =
error instanceof Error ? error.message : 'Failed to update session rebuild setting';
setError(errorMessage);
showToast(errorMessage);
return false;
} finally {
setLoading(false);
}
};
const exportMCPSettings = async (serverName?: string) => {
setLoading(true);
setError(null);
@@ -456,6 +491,7 @@ export const useSettingsData = () => {
smartRoutingConfig,
mcpRouterConfig,
nameSeparator,
enableSessionRebuild,
loading,
error,
setError,
@@ -469,6 +505,7 @@ export const useSettingsData = () => {
updateMCPRouterConfig,
updateMCPRouterConfigBatch,
updateNameSeparator,
updateSessionRebuild,
exportMCPSettings,
};
};

View File

@@ -59,6 +59,7 @@ const SettingsPage: React.FC = () => {
smartRoutingConfig,
mcpRouterConfig,
nameSeparator,
enableSessionRebuild,
loading,
updateRoutingConfig,
updateRoutingConfigBatch,
@@ -67,6 +68,7 @@ const SettingsPage: React.FC = () => {
updateSmartRoutingConfigBatch,
updateMCPRouterConfig,
updateNameSeparator,
updateSessionRebuild,
exportMCPSettings,
} = useSettingsData()
@@ -599,6 +601,18 @@ const SettingsPage: React.FC = () => {
</button>
</div>
</div>
<div className="flex items-center justify-between p-3 bg-gray-50 rounded-md">
<div>
<h3 className="font-medium text-gray-700">{t('settings.enableSessionRebuild')}</h3>
<p className="text-sm text-gray-500">{t('settings.enableSessionRebuildDescription')}</p>
</div>
<Switch
disabled={loading}
checked={enableSessionRebuild}
onCheckedChange={(checked) => updateSessionRebuild(checked)}
/>
</div>
</div>
)}
</div>