性能、构建体积与依赖优化
状态:archived 类型:bug-fix Owner:web/vite.config.js
问题
模型快照、全量图表依赖和提前挂载的面板增加下载与初始化成本。重复配置读取、重叠轮询和无容量预算的 Markdown 缓存增加运行时开销;任务旧响应还可能覆盖新状态或跨会话回写。文档构建插件兼容问题与无必要的解析依赖产生警告和维护成本。
决策
构建与加载:web/vite.config.js 从锁定模型快照投影展示字段,保持模型覆盖;dashboardCharts.js 只注册实际使用的图表。路由、知识库次级面板与设置内容按需加载,共享 asyncPanel.js 的加载和失败提示。设置弹窗保留已访问页的表单状态,关闭后销毁,重开仅挂载当前项。
请求调度:info.js 合并进行中的配置读取,AppLayout.vue 独立启动无依赖的初始化请求。tasker.js 拥有轮询、请求代次与会话失效;任务提交入口在发送前捕获会话,旧回执不得登记到新会话。轮询在请求完成后调度,失败退避,隐藏页面暂停请求;退出和销毁清理计时器及回写资格。后端仍拥有权限、任务执行和持久状态。
缓存预算:markdownRenderCache.js 按最近使用顺序淘汰,同时限制条数和原文、HTML 的合计字符量,超大条目不缓存。字符预算约束保留的字符串,不代表浏览器总堆内存;渲染结果保持不变。
依赖兼容:文档的 pnpm-workspace.yaml 为 VitePress 1.x 选择 Vite 7 / Rollup 装配,保留其插件钩子和现代浏览器目标,精确版本由锁文件拥有。PDF 解析直接使用已有 pypdf,保持逐页去空白、双换行连接的语义,删除无其他消费者的 LangChain Community / Classic;SQLAlchemy 从 ORM 导出导入。PDF 路径部分取代依赖漏洞与未使用依赖收敛中的 PyPDFLoader 决定。
替代方案
手工维护精简模型清单会与依赖快照漂移;采用构建期投影。全面替换图谱、UI 库或引入请求框架会扩大维护范围;采用现有模块的按需加载与 Store 内调度。提高 chunk 阈值或轮询间隔分别保留下载成本和请求竞态,不能解决对应问题。文档依赖随上游兼容性更新,不强制与 Web 使用同一 Vite 主版本。
后果
首次进入私有布局或面板需要额外下载模块;失败恢复使用页面刷新,会丢失未保存状态。保留完整 Shiki 语言支持及现有图谱、UI 库,剩余大 chunk 警告不屏蔽。任务读取失败保留最近成功数据并显示错误;局部更新使旧列表失效,摘要由后续轮询收敛。
同主题的局部调整更新本记录,不按实施批次另建 decision。PyMilvus 迁移保持独立;不改变数据库 Schema、生产数据或公开 API。
验证
构建观测基线(非固定 oracle):模型目录约 4595 → 944 KB,Dashboard 1226 → 653 KB,知识库文件页 1992 → 112 KB,入口包 1463 → 1258 KB。图谱转为按需加载的约 1442 KB chunk;拆分不等于删除依赖,不同依赖和共享工作树改动会影响体积。
Web unit 验证模型投影的完整覆盖与显示等价、图表实际 SVG 渲染、异步面板成功和失败、设置切换与表单保留、缓存淘汰,以及请求乱序、慢请求和跨会话回执。旧实现负控需因状态倒退、登出回写、重叠轮询或重复读取而失败;提交入口同时验证旧回执拒绝与当前会话正常登记。PDF unit 验证多页顺序、空页、去空白和损坏文件。
已执行 Web unit、lint 和 build,覆盖模块投影、懒加载面板、图表渲染、缓存预算、请求乱序与轮询生命周期;尚未执行 Playwright 浏览器探针,因此真实视口、主题、模块网络加载和面板失败恢复仍未验证。固定 API 数据的前端校验不替代真实账号权限和后台业务链路。执行入口由测试规范维护,具体命令、结果、环境限制和未覆盖范围写入交付记录。
尚未验证:移除解析依赖后的全新镜像启动、真实知识入库与任务提交 E2E、生产部署、浏览器堆内存基准。剩余大依赖替换和服务端查询优化需要独立测量,本记录不宣称完成。