# 前端重构续办说明(next_steps_3) > 接续 `next_steps_2`。本阶段聚焦“聊天/输入域重构 + 资源抽象 + 全局壳层”三大阶段,确保所有逻辑逐步回归 Pinia store 与 composable,彻底告别 `app.ts` 的“超级控制器”角色。 ## 阶段划分 1. **聊天/输入域重构** - 拆出 `useChatStore`、`useInputStore`、`useUploadStore` 等,托管所有消息流和输入状态。 - 将 `ChatArea` 的动作块拆成组件(Thinking/Text/Tool/Append/Modify/System),Markdown/复制/命令等复杂逻辑抽到 composable。 - 完成后 `App` 只负责 socket → store 的分发,不再直接操作 `messages` 或输入框。 2. **业务面板与个性化** - 为文件树/聚焦/子智能体/个性化等侧栏业务建立独立 store。 - 把轮询、右键菜单及 Personalization Drawer 事件迁出 `app.ts`,组件只消费 store。 3. **全局壳层与 Socket/Overlay** - 拆出 `AppShell`(ToastStack/ConfirmDialog/ContextMenu/EasterEgg)和 `useLegacySocket`、`usePolling`、`useEasterEgg` 等组合式函数。 - 收束 Quick Menu/压缩对话/资源轮询等跨域逻辑,让 `App` 仅担任布局入口。 ## 第一阶段(聊天/输入域)拆解 1. **状态迁移**(已完成 ✅) - `useChatStore`:新增用户/助手消息、thinking/text action 管理、system/append/modify payload、滚动锁等 action。 - `useInputStore`:可设置/清空输入、行数、多行态、焦点;`sendMessage`/autoResize/resetAllStates 均调用 store。 - `useUploadStore`:托管上传中状态,上传逻辑与 Quick Upload 按 store 控制。 2. **Action 组件化 / Markdown composable**(已完成 ✅) - `ChatArea` 订阅 store 并拆出 `ThinkingAction/TextAction/ToolAction/Modify*Action/ActionSummary`。 - 新增 `useMarkdownRenderer`,包含 Markdown parsing、代码高亮、LaTeX 渲染、streaming 兜底;App 中不再保留对应方法。 - `append_payload` / `modify_payload` 事件已经接入 `AppendPayloadAction`、`Modify*Action`,旧版占位/警告信息在 Vue 组件中完整还原。 3. **动作按钮逻辑迁移**(已完成 ✅) - 新增 `useChatActionStore`,集中托管复制/应用/执行命令动作,通过依赖注入与 `quick input` DOM 交互;`ChatArea` 直接调用 store,并对 `copy-code-btn` 进行事件委托,Markdown 代码块现在可以一键复制。 ## 当前进展 - 聊天状态和输入状态的核心逻辑已迁至 Pinia;`ChatArea` 子组件化完成大半,Markdown 渲染也模块化。 - 资源域 (`useResourceStore`) 负责 Token/Quota/容器/存储轮询,上传域由 `useUploadStore` 托管。 - `App.vue` 仍承担 socket 事件分发、工具/Markdown action 以及少量 DOM 操作,后续阶段可继续拆解。 ## 下一步建议 1. **推进第二阶段** - 建立 `useFileStore/useFocusStore/useSubAgentStore/usePersonalizationStore`,把轮询与 Panel/Drawer 事件迁出。 2. **准备第三阶段** - 规划 `AppShell` 和 Socket composable 的接口,以便迁移 Toast/Overlay 与全局事件监听。 > 如遇新的拆分点,继续在此文档更新阶段划分与状态,务必同步 `legacy_ui_spec.md` 的要求,保持旧版体验一致。