|
import { LanguageTranslationMap } from '@/constants/common'; |
|
import { ITenantInfo } from '@/interfaces/database/knowledge'; |
|
import { |
|
IFactory, |
|
IMyLlmValue, |
|
IThirdOAIModelCollection as IThirdAiModelCollection, |
|
} from '@/interfaces/database/llm'; |
|
import { IUserInfo } from '@/interfaces/database/userSetting'; |
|
import i18n from '@/locales/config'; |
|
import userService from '@/services/userService'; |
|
import { message } from 'antd'; |
|
import { DvaModel } from 'umi'; |
|
|
|
export interface SettingModelState { |
|
llm_factory: string; |
|
tenantIfo: Nullable<ITenantInfo>; |
|
llmInfo: IThirdAiModelCollection; |
|
myLlmList: Record<string, IMyLlmValue>; |
|
factoryList: IFactory[]; |
|
userInfo: IUserInfo; |
|
} |
|
|
|
const model: DvaModel<SettingModelState> = { |
|
namespace: 'settingModel', |
|
state: { |
|
llm_factory: '', |
|
tenantIfo: null, |
|
llmInfo: {}, |
|
myLlmList: {}, |
|
factoryList: [], |
|
userInfo: {} as IUserInfo, |
|
}, |
|
reducers: { |
|
updateState(state, { payload }) { |
|
return { |
|
...state, |
|
...payload, |
|
}; |
|
}, |
|
setUserInfo(state, { payload }) { |
|
return { |
|
...state, |
|
userInfo: payload, |
|
}; |
|
}, |
|
}, |
|
effects: { |
|
*setting({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.setting, payload); |
|
const { retcode } = data; |
|
if (retcode === 0) { |
|
message.success(i18n.t('message.modified')); |
|
|
|
yield put({ |
|
type: 'getUserInfo', |
|
}); |
|
} |
|
}, |
|
*getUserInfo({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.user_info, payload); |
|
const { retcode, data: res } = data; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (retcode === 0) { |
|
i18n.changeLanguage( |
|
LanguageTranslationMap[ |
|
res.language as keyof typeof LanguageTranslationMap |
|
], |
|
); |
|
yield put({ type: 'setUserInfo', payload: res }); |
|
|
|
} |
|
}, |
|
*getTenantInfo({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.get_tenant_info, payload); |
|
const { retcode, data: res } = data; |
|
|
|
|
|
|
|
if (retcode === 0) { |
|
res.chat_id = res.llm_id; |
|
res.speech2text_id = res.asr_id; |
|
yield put({ |
|
type: 'updateState', |
|
payload: { |
|
tenantIfo: res, |
|
}, |
|
}); |
|
} |
|
}, |
|
*set_tenant_info({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.set_tenant_info, payload); |
|
const { retcode } = data; |
|
if (retcode === 0) { |
|
message.success(i18n.t('message.modified')); |
|
|
|
yield put({ |
|
type: 'getTenantInfo', |
|
}); |
|
} |
|
return retcode; |
|
}, |
|
|
|
*factories_list({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.factories_list); |
|
const { retcode, data: res } = data; |
|
if (retcode === 0) { |
|
yield put({ |
|
type: 'updateState', |
|
payload: { |
|
factoryList: res, |
|
}, |
|
}); |
|
} |
|
}, |
|
*llm_list({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.llm_list, payload); |
|
const { retcode, data: res } = data; |
|
if (retcode === 0) { |
|
yield put({ |
|
type: 'updateState', |
|
payload: { |
|
llmInfo: res, |
|
}, |
|
}); |
|
} |
|
}, |
|
*my_llm({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.my_llm); |
|
const { retcode, data: res } = data; |
|
if (retcode === 0) { |
|
yield put({ |
|
type: 'updateState', |
|
payload: { |
|
myLlmList: res, |
|
}, |
|
}); |
|
} |
|
}, |
|
*set_api_key({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.set_api_key, payload); |
|
const { retcode } = data; |
|
if (retcode === 0) { |
|
message.success(i18n.t('message.modified')); |
|
|
|
yield put({ type: 'my_llm' }); |
|
yield put({ type: 'factories_list' }); |
|
yield put({ |
|
type: 'updateState', |
|
}); |
|
} |
|
return retcode; |
|
}, |
|
*add_llm({ payload = {} }, { call, put }) { |
|
const { data } = yield call(userService.add_llm, payload); |
|
const { retcode } = data; |
|
if (retcode === 0) { |
|
message.success(i18n.t('message.modified')); |
|
|
|
yield put({ type: 'my_llm' }); |
|
yield put({ type: 'factories_list' }); |
|
} |
|
return retcode; |
|
}, |
|
}, |
|
}; |
|
export default model; |
|
|