mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-21 11:43:56 +00:00
fix: emb page cannot save lng;feat: Add classify error log (#3367)
* fix: emb page cannot save lng * perf: i18n check
This commit is contained in:
@@ -18,6 +18,7 @@ import { chatValue2RuntimePrompt } from '@fastgpt/global/core/chat/adapt';
|
||||
import { getHandleId } from '@fastgpt/global/core/workflow/utils';
|
||||
import { loadRequestMessages } from '../../../chat/utils';
|
||||
import { llmCompletionsBodyFormat } from '../../../ai/utils';
|
||||
import { addLog } from '../../../../common/system/log';
|
||||
|
||||
type Props = ModuleDispatchProps<{
|
||||
[NodeInputKeyEnum.aiModel]: string;
|
||||
@@ -65,7 +66,7 @@ export const dispatchClassifyQuestion = async (props: Props): Promise<CQResponse
|
||||
return {
|
||||
[NodeOutputKeyEnum.cqResult]: result.value,
|
||||
[DispatchNodeResponseKeyEnum.skipHandleId]: agents
|
||||
.filter((item) => item.key !== arg?.type)
|
||||
.filter((item) => item.key !== result.key)
|
||||
.map((item) => getHandleId(nodeId, 'source', item.key)),
|
||||
[DispatchNodeResponseKeyEnum.nodeResponse]: {
|
||||
totalPoints: user.openaiAccount?.key ? 0 : totalPoints,
|
||||
@@ -142,6 +143,10 @@ const completions = async ({
|
||||
agents.find((item) => answer.includes(item.value))?.key ||
|
||||
'';
|
||||
|
||||
if (!id) {
|
||||
addLog.warn('Classify error', { answer });
|
||||
}
|
||||
|
||||
return {
|
||||
tokens: await countMessagesTokens(messages),
|
||||
arg: { type: id }
|
||||
|
@@ -1,15 +1,27 @@
|
||||
import Cookies, { CookieAttributes } from 'js-cookie';
|
||||
import Cookies from 'js-cookie';
|
||||
import { useTranslation } from 'next-i18next';
|
||||
import { LangEnum } from '../../../projects/app/src/web/common/utils/i18n';
|
||||
|
||||
const setCookie = (key: string, value: string, options?: CookieAttributes) => {
|
||||
Cookies.set(key, value, options);
|
||||
};
|
||||
const getCookie = (key: string) => {
|
||||
return Cookies.get(key);
|
||||
};
|
||||
|
||||
const LANG_KEY = 'NEXT_LOCALE';
|
||||
const isInIframe = () => {
|
||||
try {
|
||||
return window.self !== window.top;
|
||||
} catch (e) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
const setLang = (value: string) => {
|
||||
if (isInIframe()) {
|
||||
localStorage.setItem(LANG_KEY, value);
|
||||
} else {
|
||||
// 不在 iframe 中,同时使用 Cookie 和 localStorage
|
||||
Cookies.set(LANG_KEY, value, { expires: 30 });
|
||||
localStorage.setItem(LANG_KEY, value);
|
||||
}
|
||||
};
|
||||
const getLang = () => {
|
||||
return localStorage.getItem(LANG_KEY) || Cookies.get(LANG_KEY);
|
||||
};
|
||||
|
||||
export const useI18nLng = () => {
|
||||
const { i18n } = useTranslation();
|
||||
@@ -26,23 +38,19 @@ export const useI18nLng = () => {
|
||||
|
||||
const onChangeLng = async (lng: string) => {
|
||||
const lang = languageMap[lng] || 'en';
|
||||
const prevLang = getLang();
|
||||
|
||||
setCookie(LANG_KEY, lang, {
|
||||
expires: 30
|
||||
});
|
||||
|
||||
const currentLng = i18n?.language;
|
||||
if (!currentLng) return;
|
||||
setLang(lang);
|
||||
|
||||
await i18n?.changeLanguage?.(lang);
|
||||
if (currentLng !== lang) {
|
||||
if (prevLang && prevLang !== lang) {
|
||||
window?.location?.reload?.();
|
||||
}
|
||||
};
|
||||
|
||||
const setUserDefaultLng = () => {
|
||||
if (!navigator || !localStorage) return;
|
||||
if (getCookie(LANG_KEY)) return onChangeLng(getCookie(LANG_KEY) as string);
|
||||
if (getLang()) return onChangeLng(getLang() as string);
|
||||
|
||||
const lang = languageMap[navigator.language] || 'en';
|
||||
|
||||
|
Reference in New Issue
Block a user