🐛 fix(topic): use responseLanguage for topic/thread title summarization (#12627)

This commit is contained in:
YuTengjing
2026-03-03 18:52:29 +08:00
committed by GitHub
parent 58fb45d251
commit b44f79857b
7 changed files with 40 additions and 8 deletions

View File

@@ -79,6 +79,9 @@ vi.mock('@/store/user/selectors', () => ({
systemAgentSelectors: {
thread: vi.fn(() => ({})),
},
userGeneralSettingsSelectors: {
responseLanguage: vi.fn(() => undefined),
},
userProfileSelectors: {
userAvatar: vi.fn(() => 'avatar-url'),
},

View File

@@ -18,7 +18,7 @@ import { type ChatStore } from '@/store/chat/store';
import { globalHelpers } from '@/store/global/helpers';
import { type StoreSetter } from '@/store/types';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
import { systemAgentSelectors, userGeneralSettingsSelectors } from '@/store/user/selectors';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
@@ -202,7 +202,14 @@ export class ChatThreadActionImpl {
internal_updateThreadTitleInSummary(threadId, output);
},
params: merge(threadConfig, chainSummaryTitle(messages, globalHelpers.getCurrentLanguage())),
params: merge(
threadConfig,
chainSummaryTitle(
messages,
userGeneralSettingsSelectors.responseLanguage(useUserStore.getState()) ||
globalHelpers.getCurrentLanguage(),
),
),
});
};

View File

@@ -20,7 +20,7 @@ import { useGlobalStore } from '@/store/global';
import { globalHelpers } from '@/store/global/helpers';
import { type StoreSetter } from '@/store/types';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
import { systemAgentSelectors, userGeneralSettingsSelectors } from '@/store/user/selectors';
import { type ChatTopic, type CreateTopicParams } from '@/types/topic';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
@@ -221,7 +221,14 @@ export class ChatTopicActionImpl {
internal_updateTopicTitleInSummary(topicId, output);
},
params: merge(topicConfig, chainSummaryTitle(messages, globalHelpers.getCurrentLanguage())),
params: merge(
topicConfig,
chainSummaryTitle(
messages,
userGeneralSettingsSelectors.responseLanguage(useUserStore.getState()) ||
globalHelpers.getCurrentLanguage(),
),
),
trace: this.#get().getCurrentTracePayload({
traceName: TraceNameMap.SummaryTopicTitle,
topicId,

View File

@@ -47,6 +47,9 @@ vi.mock('@/store/user/selectors', () => ({
provider: 'openai',
}),
},
userGeneralSettingsSelectors: {
responseLanguage: vi.fn(() => undefined),
},
}));
beforeEach(() => {

View File

@@ -10,7 +10,7 @@ import { generationTopicService } from '@/services/generationTopic';
import { globalHelpers } from '@/store/global/helpers';
import { type StoreSetter } from '@/store/types';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
import { systemAgentSelectors, userGeneralSettingsSelectors } from '@/store/user/selectors';
import { type ImageGenerationTopic } from '@/types/generation';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
@@ -108,7 +108,12 @@ export class GenerationTopicActionImpl {
await chatService.fetchPresetTaskResult({
params: merge(
generationTopicAgentConfig,
chainSummaryGenerationTitle(prompts, 'image', globalHelpers.getCurrentLanguage()),
chainSummaryGenerationTitle(
prompts,
'image',
userGeneralSettingsSelectors.responseLanguage(useUserStore.getState()) ||
globalHelpers.getCurrentLanguage(),
),
),
onError: async () => {
const fallbackTitle = generateFallbackTitle();

View File

@@ -17,6 +17,7 @@ const contextMenuMode = (s: UserStore) => {
if (config !== undefined) return config;
return isDesktop ? 'default' : 'disabled';
};
const responseLanguage = (s: UserStore) => generalConfig(s).responseLanguage;
const telemetry = (s: UserStore) => generalConfig(s).telemetry;
const enableAutoScrollOnStreaming = (s: UserStore) =>
generalConfig(s).enableAutoScrollOnStreaming ?? true;
@@ -31,6 +32,7 @@ export const userGeneralSettingsSelectors = {
mermaidTheme,
neutralColor,
primaryColor,
responseLanguage,
telemetry,
transitionMode,
};

View File

@@ -10,7 +10,7 @@ import { chatService } from '@/services/chat';
import { generationTopicService } from '@/services/generationTopic';
import { globalHelpers } from '@/store/global/helpers';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
import { systemAgentSelectors, userGeneralSettingsSelectors } from '@/store/user/selectors';
import { type ImageGenerationTopic } from '@/types/generation';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
@@ -252,7 +252,12 @@ export const createGenerationTopicSlice: StateCreator<
},
params: merge(
generationTopicAgentConfig,
chainSummaryGenerationTitle(prompts, 'video', globalHelpers.getCurrentLanguage()),
chainSummaryGenerationTitle(
prompts,
'video',
userGeneralSettingsSelectors.responseLanguage(useUserStore.getState()) ||
globalHelpers.getCurrentLanguage(),
),
),
});