## 新增功能 - 支持用户上传的 Word(.docx)、PDF、Excel(.xlsx/.csv)、PPT(.pptx)、 图像(png/jpg/svg/webp等)、纯文本/代码文件的在线高保真预览 - 预览与受控工作流文档严格隔离:上传文档走 FilePreviewPanel, 工作流/对话入库文档继续走 BlockRenderer,互不干扰 ## 核心 Bug 修复 - 修复页面刷新后上传文件无法预览/下载的根本问题 - 根因:File 对象无法 JSON 序列化,刷新后内存引用丢失 - 方案:新增 fileStore.ts,使用 IndexedDB 持久化文件二进制内容 - App 启动时自动 restoreFileRawToDeliverables() 从 IndexedDB 恢复 fileRaw - 上传时 saveFile() 同步写入 IndexedDB(fire-and-forget) ## 下载按钮修复 - 优先从内存 File 对象动态创建 blob URL,避免依赖已 revoke 的旧 URL - 文件内容不可用时按钮禁用并显示 tooltip 说明 ## 存储层改进 - saveDeliverables() 序列化前剔除 fileRaw(不可持久化)和 blob: URL 避免 localStorage 保存损坏的空对象 ## 新增文件 - web/src/data/fileStore.ts — IndexedDB 封装(saveFile/getFile/restore) - web/src/components/doc/preview/FilePreviewPanel.tsx — 预览面板主组件 - web/src/components/doc/preview/renderers/DocxViewer.tsx — Word 预览 - web/src/components/doc/preview/renderers/PdfViewer.tsx — PDF 预览 - web/src/components/doc/preview/renderers/ExcelViewer.tsx — Excel 预览 - web/src/components/doc/preview/renderers/PptViewer.tsx — PPT 预览 - web/src/components/doc/preview/renderers/ImageViewer.tsx — 图像预览 - web/src/components/doc/preview/renderers/TextViewer.tsx — 文本预览 - web/src/tests/file-preview.test.ts — 预览功能单元测试
36 lines
917 B
JSON
36 lines
917 B
JSON
{
|
|
"name": "shuimu-workbench",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"preview": "vite preview",
|
|
"test": "tsx --test \"src/**/!(*InteractiveCard*).test.ts\" && vitest run src/components/chat/InteractiveCard.test.ts"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-virtual": "^3.14.11",
|
|
"docx": "^9.7.1",
|
|
"docx-preview": "^0.4.0",
|
|
"katex": "^0.18.7",
|
|
"lucide-react": "^1.16.0",
|
|
"mathml2omml": "^0.5.0",
|
|
"mermaid": "^11.17.2",
|
|
"react": "^19.2.0",
|
|
"react-dom": "^19.2.0",
|
|
"xlsx": "^0.18.5"
|
|
},
|
|
"devDependencies": {
|
|
"@types/katex": "^0.16.8",
|
|
"@types/node": "^24.10.1",
|
|
"@types/react": "^19.2.7",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitejs/plugin-react": "^5.1.0",
|
|
"tsx": "^4.23.13",
|
|
"typescript": "~5.9.3",
|
|
"vite": "^7.1.14",
|
|
"vitest": "^5.0.0"
|
|
}
|
|
}
|