feat: 完善知识库预览功能与配置管理优化

This commit is contained in:
caoxiaozhu
2026-05-09 07:29:49 +00:00
parent d9133193e8
commit 94122fd34b
26 changed files with 20232 additions and 300 deletions

View File

@@ -1,6 +1,10 @@
import assert from 'node:assert/strict'
import { resolveKnowledgePreviewMode } from '../src/views/scripts/knowledgePreviewMode.js'
import {
resolveKnowledgePreviewMode,
shouldRenderOnlyOfficeHost,
shouldRenderOnlyOfficePreview
} from '../src/views/scripts/knowledgePreviewMode.js'
function testPrefersOnlyOfficeForSupportedOfficeFileWhenAvailable() {
const document = {
@@ -29,10 +33,108 @@ function testUsesPreviewKindForNonOnlyOfficeFile() {
assert.equal(resolveKnowledgePreviewMode(document, { onlyOfficeAvailable: false }), 'pdf')
}
function testRendersOnlyOfficeContainerWhileOfficePreviewIsLoading() {
const document = {
extension: 'docx',
previewKind: 'text'
}
assert.equal(
shouldRenderOnlyOfficePreview(document, {
onlyOfficeLoading: true,
onlyOfficeAvailable: false
}),
true
)
}
function testKeepsOnlyOfficeContainerVisibleWhenOfficePreviewHasError() {
const document = {
extension: 'docx',
previewKind: 'text'
}
assert.equal(
shouldRenderOnlyOfficePreview(document, {
onlyOfficeLoading: false,
onlyOfficeAvailable: false,
onlyOfficeError: 'timeout'
}),
true
)
}
function testDoesNotRenderOnlyOfficeContainerAfterFailedMount() {
const document = {
extension: 'xlsx',
previewKind: 'table'
}
assert.equal(
shouldRenderOnlyOfficePreview(document, {
onlyOfficeLoading: false,
onlyOfficeAvailable: false
}),
false
)
}
function testRendersOnlyOfficeHostWhileOfficePreviewIsLoading() {
const document = {
extension: 'pptx',
previewKind: 'slides'
}
assert.equal(
shouldRenderOnlyOfficeHost(document, {
onlyOfficeLoading: true,
onlyOfficeAvailable: false
}),
true
)
}
function testKeepsOnlyOfficeHostVisibleWhenOfficePreviewHasError() {
const document = {
extension: 'xlsx',
previewKind: 'table'
}
assert.equal(
shouldRenderOnlyOfficeHost(document, {
onlyOfficeLoading: false,
onlyOfficeAvailable: false,
onlyOfficeError: 'timeout'
}),
true
)
}
function testDoesNotRenderOnlyOfficeHostForNonOfficeDocuments() {
const document = {
extension: 'pdf',
previewKind: 'pdf'
}
assert.equal(
shouldRenderOnlyOfficeHost(document, {
onlyOfficeLoading: true,
onlyOfficeAvailable: false
}),
false
)
}
function run() {
testPrefersOnlyOfficeForSupportedOfficeFileWhenAvailable()
testFallsBackToStructuredPreviewForOfficeFileWhenOnlyOfficeUnavailable()
testUsesPreviewKindForNonOnlyOfficeFile()
testRendersOnlyOfficeContainerWhileOfficePreviewIsLoading()
testKeepsOnlyOfficeContainerVisibleWhenOfficePreviewHasError()
testDoesNotRenderOnlyOfficeContainerAfterFailedMount()
testRendersOnlyOfficeHostWhileOfficePreviewIsLoading()
testKeepsOnlyOfficeHostVisibleWhenOfficePreviewHasError()
testDoesNotRenderOnlyOfficeHostForNonOfficeDocuments()
console.log('knowledge preview mode tests passed')
}