Files
deerflow-code/frontend-web/docs/hebing.md
T
2026-05-13 18:18:05 +08:00

4.7 KiB
Raw Blame History

App.tsx 路由与页面结构重构需求(首页与业务页分离)

一、需求背景

当前 frontend-web/src/App.tsx 同时承载了:

  1. 登录/首页相关路由(如 /login、/landing)
  2. 工作台业务相关路由(如 /workspace/chats、/workspace/agents、/workspace/scheduled/*)
  3. 业务页所需布局与运行时包装(WorkspaceLayout、ChatRuntime)

这会导致 App.tsx 过重,职责不够单一,不利于后续维护和扩展。


二、目标(你提出的核心诉求)

你希望:

  1. 除了登录与首页入口内容外,将 App.tsx 中其余业务页面路由整体迁移到 pages 下一个新组件中。
  2. 再创建一个“承接导航/入口”的页面(或路由容器),用于放置这些导航逻辑。
  3. App.tsx 最终只保留顶层路由分发和基础 Provider,变得更薄。

你提到“App.tsx 74-75 login”,可理解为:保留登录/首页相关入口,其他工作台内容抽离。


三、重构范围

1)保留在 App.tsx 的内容

  • 全局 Provider:HashRouter、AppProviders
  • 登录/首页路由:
    • /
    • /login
    • /login/:username
    • /landing
  • 404 路由(可留在 App.tsx 或交给新路由容器统一处理,二选一)

2)迁移出 App.tsx 的内容

将以下与工作台有关的路由从 App.tsx 抽离:

  • /workspace(重定向)
  • /workspace/chats
  • /workspace/chats/:thread_id
  • /workspace/agents
  • /workspace/agents/new
  • /workspace/agents/:agent_id/chats(重定向)
  • /workspace/agents/:agent_id/chats/:thread_id
  • /workspace/scheduled
  • /workspace/scheduled/tasks
  • /workspace/scheduled/runs/:run_id

以及配套的包装组件职责:

  • WorkspaceLayout
  • ChatRuntime

四、建议的新结构(方案)

方案 A(推荐):新增“业务路由容器组件”

在 pages 下新增一个路由容器组件,例如:

  • src/pages/WorkspaceRoutes.tsx(或 src/pages/AppWorkspaceRoutes.tsx)

职责:

  • 专门维护 /workspace/* 相关路由
  • 内部统一使用 WorkspaceLayout 与 ChatRuntime
  • 输出一个可被 App.tsx 挂载的路由节点

同时在 App.tsx 里只保留:

  • 登录/首页/404
  • 一个 Route path="/workspace/*" element={<WorkspaceRoutes />} />

五、“再建立一个页面放置导航”的落地解释

你说的“建立一个页面放置这些导航”,可以有两种理解:

  1. 路由容器页(推荐):

    • 不强调视觉 UI,重点是集中管理导航与路由跳转规则。
    • 即上面的 WorkspaceRoutes.tsx。
  2. 可见的导航页(可选):

    • 例如新建 WorkspaceHomePage.tsx,展示聊天/Agents/定时任务入口按钮。
    • 路由上把 /workspace 指向该页,而不是直接重定向到 /workspace/chats/new。

当前从你的描述看,优先建议第 1 种(先做结构整理),之后若有产品需求再做第 2 种可见导航页。


六、实施步骤(开发任务拆解)

  1. 新建 WorkspaceRoutes 组件(pages 目录下)。
  2. 把所有 /workspace/* 路由从 App.tsx 搬入该组件。
  3. 把 WorkspaceLayout 与 ChatRuntime 移入该组件(或抽到共享 layout/runtime 文件)。
  4. 在 App.tsx 中保留登录/首页路由,并挂载 /workspace/* 到新组件。
  5. 校验以下访问路径行为一致:
    • /workspace 重定向
    • chats/agents/scheduled 各页面可正常进入
    • 动态参数路由(thread_id、agent_id、run_id)正常
    • 404 不受影响
  6. 运行前端并做手工回归。

七、验收标准

  1. App.tsx 明显瘦身,主要负责顶层入口路由。
  2. /workspace/* 全部由新建组件统一管理。
  3. 功能行为与改造前一致(或符合新定义)。
  4. 代码可读性提升:登录入口与业务入口职责分离。

八、注意事项

  1. 当前项目使用 HashRouter,路由写法需保持兼容。
  2. Navigate 重定向逻辑要完整迁移,避免出现死循环或空白页。
  3. WorkspaceLayout 与 ChatRuntime 的包裹层级不能错,否则可能影响侧边栏、输入区、子任务/Artifacts 状态。
  4. 若后续再加模块(例如 /workspace/settings),优先在 WorkspaceRoutes 中扩展。

九、建议的命名(可直接采用)

  • 新增组件文件:src/pages/WorkspaceRoutes.tsx
  • (可选)可见导航页:src/pages/WorkspaceHomePage.tsx

十、后续可选优化

  1. 将 WorkspaceLayout 抽到 src/layouts/WorkspaceLayout.tsx。
  2. 将 ChatRuntime 抽到 src/runtime/ChatRuntime.tsx。
  3. 把路由常量集中到 src/core/router/paths.ts,减少硬编码路径。