agent-Specialization/doc/frontend/next_steps_2.md

3.9 KiB
Raw Permalink Blame History

前端重构续办说明next_steps_2

本文基于 doc/frontend/next_steps.md 的上下文,记录当前阶段的新进展、注意事项和下一步工作计划,供接力开发者参考。凡是与旧版 UI/交互存在歧义时,以 doc/frontend/legacy_ui_spec.mdstatic/old_version_backup/前端备份 目录为最终权威。

最新状态(相较上一版 next_steps

  1. Pinia 引入static/src/main.ts 已创建 Pinia 实例;useUiStore/useConversationStore 落地,侧栏/会话列表基本信息改由 store 管理。App 通过 mapWritableState 读取这两个 store。
  2. 组件化进展
    • ConversationSidebarLeftPanelFocusPanelTokenDrawerPersonalizationDrawerQuickMenu 已单独成组件。
    • 聊天区拆成 ChatArea.vue(含全部 action 块)、输入区拆成 InputComposer.vueApp.vue 只负责传状态/事件。
  3. 兼容逻辑
    • 自动滚动、思考块滚动锁、工具卡片等逻辑仍在 app.ts 中,通过对新组件暴露的 rootEl / getThinkingRef 引用继续工作。
    • Quick Menu/Settings/工具禁用/压缩对话等入口仍走原 methods只是事件链路转接到了组件。

待办事项

  1. Pinia Store 拆分补全

    • 参考 doc/frontend/componentization_plan.md,逐步迁移 app.ts 的数据/方法至 useChatStoreuseInputStoreuseToolStoreuseResourceStoreusePersonalizationStore 等。
    • 控制流程:先搬 state再迁 actions/watch最后清理 app.ts 中重复逻辑。
  2. 聊天/动作组件细分

    • 目前的 ChatArea 仍包含大量内联模板可按行动类型Thinking/Text/System/Modify/Tool/Summary拆成独立子组件增强可读性与复用性。
    • Markdown 渲染、工具卡片展示、thinking-scroll 等复杂逻辑建议拆到 composableuseMarkdownRendereruseToolPayloadRenderer)。
  3. 输入区状态/事件整合

    • inputMessageinputLineCountinputIsFocusedquickMenuOpen 等迁入 store 或 composableInputComposer 只负责展示,避免 app.ts 持有大量 ref。
    • 文件上传逻辑(handleFileSelecteduploadSelectedFile)可以移至 useUploadStore 或专用 composable配合 InputComposer 的事件使用。
  4. Socket/轮询拆分

    • 现有 socket 事件与轮询仍在 app.ts,需抽出 useLegacySocketusePolling 等组合式函数,让各 store 订阅自己关心的事件。
  5. Overlay/Toast 组件化

    • ToastStack/ConfirmDialog/EasterEggOverlay/ContextMenu 仍在 App.vue,后续需转成 AppShell 或独立组件,并提供订阅 API。
  6. 样式与测试

    • 长期目标是按模块拆分 style.css,但当前仍以遗留 CSS 为准。组件化完成后再考虑 Sass 模块化。
    • 继续保持 npm run build 通过;若引入 Pinia store/composable补充单元测试/故事(可选)以防 regression。

推荐执行顺序

  1. 完成 Input/Chat 相关 store/composable 拆分,移除 App.vue 的大部分 refs 和 watchers。
  2. 逐步把资源/工具/子智能体等模块迁至对应 store同时将轮询/Socket 事件拆出。
  3. 在 store/composable 稳定后,再处理 Overlay/Toast/EasterEgg 等全局 UI。
  4. 全量对照 static/old_version_backup/前端备份legacy_ui_spec 做细节校验,确保折叠/aria/title 动作一致。

注意事项

  • 任何新逻辑都需以 legacy_ui_specstatic/old_version_backup/前端备份 为准确保视觉、交互、API 行为不偏离旧版。
  • 操作 DOM 时尽量通过组件暴露出的 ref/composable而不是直接访问 $refs。拆分后应逐步删除 app.ts 中的 DOM 引用。
  • 保持现有 API / Socket 事件名不变;若有必要增加事件,请先在文档中说明。
  • 在大规模迁移前先写好过渡层store/composable避免一次性修改导致回退困难。