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; llmInfo: IThirdAiModelCollection; myLlmList: Record; factoryList: IFactory[]; userInfo: IUserInfo; } const model: DvaModel = { 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; // const userInfo = { // avatar: res.avatar, // name: res.nickname, // email: res.email, // }; // authorizationUtil.setUserInfo(userInfo); if (retcode === 0) { i18n.changeLanguage( LanguageTranslationMap[ res.language as keyof typeof LanguageTranslationMap ], ); yield put({ type: 'setUserInfo', payload: res }); // localStorage.setItem('userInfo',res.) } }, *getTenantInfo({ payload = {} }, { call, put }) { const { data } = yield call(userService.get_tenant_info, payload); const { retcode, data: res } = data; // llm_id 对应chat_id // asr_id 对应speech2txt 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; }, *delete_llm({ payload = {} }, { call, put }) { const { data } = yield call(userService.delete_llm, payload); const { retcode } = data; if (retcode === 0) { message.success(i18n.t('message.deleted')); yield put({ type: 'my_llm' }); yield put({ type: 'factories_list' }); } return retcode; }, }, }; export default model;