agent-Specialization/doc/frontend/next_steps.md

44 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前端重构接力说明
当前仓库处于“旧版逻辑 + Vite 构建 + 局部组件化”的中间态,后续需要继续完成 Pinia 状态拆分与组件化重构。以下信息供下一位开发者参考。
## 已完成工作
1. **整体迁移**:旧版 `index.html + app.js` 的 DOM/逻辑已迁入 `static/src/App.vue``static/src/app.ts`,由 Vite + Vue 3 构建,入口 `main.ts` 使用标准 `createApp(App)`
2. **组件抽离**
- `ConversationSidebar.vue`:对话历史侧栏、搜索、折叠按钮。
- `LeftPanel.vue`:左侧 Logo 卡 + 三合一面板(文件树/待办/子智能体)。
- `FileNode.vue`:文件树递归节点。
- `TokenDrawer.vue`Token/Quota/资源统计抽屉。
- `FocusPanel.vue`:右侧聚焦文件展示。
- `PersonalizationDrawer.vue`:个人空间抽屉。
3. **依赖抽离**:图标常量集中在 `static/src/utils/icons.ts`组件复用。KaTeX/Prism/Socket.IO 改用 npm 依赖。
4. **构建验证**`npm run build` 能通过,`static/dist` 生成最新产物。
## 待办事项
1. **Pinia Store 拆分**:按照 `doc/frontend/componentization_plan.md` 中的表格,将 `app.ts` 的 state/methods 拆成多个 store连接、系统、对话、聊天、资源、文件、工具、个性化、UI 等),组件通过 store 获取/更新状态,逐步移除 `this.xxx`
2. **组件化剩余区域**
- 聊天区消息列表、Action 卡、append/modify/system 块)。
- 输入区/Quick Menu/Quick Settings。
- Toast/Confirm/ContextMenu/EasterEgg overlay。
- 右侧聚焦的滚动锁/按钮等交互细节。
3. **逻辑封装**:将 Socket 事件、滚动锁、彩蛋执行、工具栈维护等重逻辑拆到 composables例如 `useLegacySocket`、`useScrollLock`、`useEasterEgg`、`useToolActions`),并与 Pinia store 协调。
4. **样式模块化**:目前仍依赖 `static/style.css`,可逐步将各组件的样式拆至局部或 SCSS 文件,保持 `legacy` 视觉一致。
## 推荐实施顺序
1. 建立基础 storeConnection/System/Conversation/Chat先把最常用的 state 拆出去,再让 `ConversationSidebar`、`LeftPanel` 等组件改用 store。
2. 按模块迁移模板:聊天区 → 输入区 → Toast/Overlay → 右侧面板。每次迁移时将相关 methods 搬入 store/composable。
3. 集中处理高阶逻辑Quick Menu、工具禁用、彩蛋、子智能体轮询、Token/Quota 轮询等,确保事件流与旧版一致。
4. 每完成一块运行 `npm run build` 并手测:对话切换、发送/停止、工具流式、彩蛋触发、个人空间 CRUD、聚焦面板更新等确保与 `static/old_version_backup/前端备份` 一致。
## 注意事项
- 保持旧版 API 和 Socket 事件名称不变。
- UI 细节aria-label、按钮提示、SVG需与备份版一致参见 `doc/frontend/legacy_ui_spec.md`
- `window.ensureCsrfToken`、`window.requestSocketToken`、`EasterEggRegistry` 等仍由后端注入,组件需要容错。
- 过程中可参考 `/tmp/backup_App_corrupted.vue``static/old_version_backup/前端备份/` 来比对原结构。
如遇上下文不足,可将正在拆分的模板块另存临时文件,逐段迁移。完成全部 Pinia + 组件化后,即可开始清理 `app.ts` 中不再需要的逻辑,并考虑拆分 CSS。祝顺利