mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 11:13:43 +08:00
### 背景 切换菜单(对话 ↔ 知识库)或工作区时,存在多个状态错乱问题: 1. 员工名称闪烁为数据库数字 ID(如 1000000001 ) 2. 对话生成中切菜单再切回,出现白屏重渲染 3. Wiki 工作区切换后仍显示上一工作区内容 4. 登出后 keepAlive 缓存与模块级变量未清空,存在跨用户数据泄漏风险 ### 改动内容 | 文件 | 改动 | |------|------| | `ChatConsole.vue` | 新增模块级 `cachedAgents` 缓存,组件重建首帧即有员工数据;启用 keepAlive,新增 `onActivated`/`onDeactivated` 生命周期管理,释放定时器/图表/监听器并自动重连流式对话 | | `AgentPickerDialog.vue` | `isUnknown` 计算属性增加 `agents.length > 0` 守卫,列表未加载时走 placeholder 而非显示原始 ID | | `router/index.ts` | `/chat` 路由添加 `keepAlive: true` | | `MainLayout.vue` | 登出改为 `window.location.href` 整页刷新,确保清空 keepAlive 缓存与模块级变量 | | `useWikiStore.ts` | `fetchKnowledgeBases` 检测 currentKB 不在新列表时调用 `backToLibrary` 清理旧工作区上下文 | | `zh-CN.ts` / `en-US.ts` | 新增 `unknownAgent` 国际化键 | ### 测试 - 新增 `agentPickerLogic.test.ts`:覆盖 isUnknown 判定的 4 类边界场景(空值/正常匹配/列表为空/员工被删除) - 新增 `wikiStoreWorkspaceSwitch.test.ts`:覆盖工作区切换清理逻辑(跨工作区清理/同工作区保留/首次进入/接口异常/组合路径) - 前端全量测试:**58/58 通过**(原 40 + 新增 18) - TypeScript 类型检查:通过 - 后端 Maven 测试:3473/3555 通过,9 失败均为预存 Windows 路径兼容问题,与本次改动无关 ### 安全性 - 不同对话:`currentConversationId` 单一来源 + API 校验 - 不同账号:登出整页刷新,零残留 - 不同工作区:`router-view` key 重建 + wiki store 主动清理 --- |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| test | ||
| .npmrc | ||
| index.html | ||
| package.json | ||
| pnpm-lock.yaml | ||
| TEST_CASES.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||