mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-20 23:59:56 +08:00
- 修复自定义连接编辑时已保存 DSN 无法留空沿用的问题 - 重置 AI 供应商编辑态与清空密钥开关,避免关闭后状态残留 - 对齐浏览器 mock 复制连接的 config.id 语义并补充回归测试
93 lines
2.3 KiB
TypeScript
93 lines
2.3 KiB
TypeScript
import type { AIProviderConfig, AIProviderType } from '../types';
|
|
|
|
type ProviderEditorStatus = 'idle' | 'success' | 'error';
|
|
|
|
type ProviderEditorConfig = Partial<AIProviderConfig> & Pick<AIProviderConfig, 'id' | 'type' | 'name' | 'apiKey'> & { presetKey?: string };
|
|
|
|
export interface ProviderEditorSession {
|
|
editingProvider: ProviderEditorConfig | null;
|
|
formValues: Record<string, unknown> | null;
|
|
isEditing: boolean;
|
|
clearProviderSecret: boolean;
|
|
testStatus: ProviderEditorStatus;
|
|
}
|
|
|
|
interface BuildAddProviderEditorSessionInput {
|
|
previousClearProviderSecret?: boolean;
|
|
presetKey?: string;
|
|
presetBackendType: AIProviderType;
|
|
presetBaseUrl: string;
|
|
presetModel: string;
|
|
presetModels?: string[];
|
|
apiFormat?: string;
|
|
}
|
|
|
|
interface BuildEditProviderEditorSessionInput {
|
|
previousClearProviderSecret?: boolean;
|
|
provider: ProviderEditorConfig;
|
|
formValues?: Record<string, unknown>;
|
|
}
|
|
|
|
interface BuildClosedProviderEditorSessionInput {
|
|
previousClearProviderSecret?: boolean;
|
|
}
|
|
|
|
export const buildAddProviderEditorSession = ({
|
|
presetKey = 'openai',
|
|
presetBackendType,
|
|
presetBaseUrl,
|
|
presetModel,
|
|
presetModels = [],
|
|
apiFormat = 'openai',
|
|
}: BuildAddProviderEditorSessionInput): ProviderEditorSession => {
|
|
const editingProvider: ProviderEditorConfig = {
|
|
id: '',
|
|
type: presetBackendType,
|
|
name: '',
|
|
apiKey: '',
|
|
baseUrl: presetBaseUrl,
|
|
model: presetModel,
|
|
models: [...presetModels],
|
|
maxTokens: 4096,
|
|
temperature: 0.7,
|
|
presetKey,
|
|
};
|
|
|
|
return {
|
|
editingProvider,
|
|
formValues: {
|
|
...editingProvider,
|
|
presetKey,
|
|
apiFormat,
|
|
},
|
|
isEditing: true,
|
|
clearProviderSecret: false,
|
|
testStatus: 'idle',
|
|
};
|
|
};
|
|
|
|
export const buildEditProviderEditorSession = ({
|
|
provider,
|
|
formValues,
|
|
}: BuildEditProviderEditorSessionInput): ProviderEditorSession => ({
|
|
editingProvider: provider,
|
|
formValues: formValues || {
|
|
...provider,
|
|
models: provider.models || [],
|
|
presetKey: provider.presetKey,
|
|
apiFormat: provider.apiFormat || 'openai',
|
|
},
|
|
isEditing: true,
|
|
clearProviderSecret: false,
|
|
testStatus: 'idle',
|
|
});
|
|
|
|
export const buildClosedProviderEditorSession = (_input?: BuildClosedProviderEditorSessionInput): ProviderEditorSession => ({
|
|
editingProvider: null,
|
|
formValues: null,
|
|
isEditing: false,
|
|
clearProviderSecret: false,
|
|
testStatus: 'idle',
|
|
});
|
|
|