fix(knowledge): use native file downloads in app

This commit is contained in:
2026-07-24 14:52:07 +08:00
parent bdc4ffad9f
commit 743d629dc8
2 changed files with 6 additions and 3 deletions
+3 -3
View File
@@ -442,7 +442,7 @@ import { resetPageScroll } from '@/services/navigation';
import { ApiError, authenticatedFileUrl, releaseAuthenticatedFileUrl } from '@/services/api';
import { ensureEmployeePosition, fetchMobileIdentity } from '@/services/position';
import { chooseSpeechAudio, createSpeechPlaybackController, measureAudioDuration, MENTOR_VOICE_PROFILE, transcribeSpeechCapture, transcribeSpeechFile } from '@/services/speech';
import type { SpeechCapture } from '@/services/speech-capture';
import { isNativeAppRuntime, type SpeechCapture } from '@/services/speech-capture';
import { downloadSummaryCardImage } from '@/services/summary-card-image';
import { getMemoryCandidates } from '@/services/personal-assistant';
import { currentAccountKey } from '@/services/request-scope';
@@ -1209,10 +1209,10 @@ const openKnowledgeResource = async (resource: KnowledgeResource) => {
try {
if (resource.type === 'FILE') {
const downloadUrl = await requestKnowledgeResourceDownloadLink(resource.attachmentId);
if (typeof document !== 'undefined') {
if (!isNativeAppRuntime() && typeof document !== 'undefined') {
const link = document.createElement('a');
link.href = downloadUrl;
link.target = '_blank';
link.download = resource.title || '资料文件';
link.rel = 'noreferrer';
document.body.appendChild(link);
link.click();
+3
View File
@@ -29,6 +29,9 @@ test('问师傅支持显式新对话、版本回写和受控原文件或视频
assert.match(page, /releaseAuthenticatedFileUrl\(resource\.localUrl\)/);
assert.match(page, /resource\.type === 'VIDEO' && resource\.localUrl/);
assert.doesNotMatch(page, /link\.href = localUrl/);
assert.match(page, /!isNativeAppRuntime\(\) && typeof document !== 'undefined'/);
assert.match(page, /link\.download = resource\.title \|\| '资料文件'/);
assert.doesNotMatch(page, /link\.target = '_blank'/);
assert.match(page, /link\.rel = 'noreferrer'/);
assert.match(page, /点击下载原文件/);
assert.match(page, /msg\.result\.rewrittenQuery !== msg\.result\.queryText/);