Skip to content

前端页面

React SPA 位于 web-ui/,共 15 个页面,基于 Material UI + React Router。

页面列表

页面路由说明
登录/login用户名 + 密码 → JWT
仪表盘/系统概览卡片
Agent 管理/agents列表、详情、配置
场景管理/scenes场景列表 + 切换
场景对话/scenes/:id/chat场景内聊天
知识库/kb知识库浏览 + 搜索
知识详情/kb/:id单条知识
频道管理/channels微信/飞书等配置
聊天记录/chat全局消息历史
雇佣审批/hires待审批列表
设置/settingsLLM 配置、密钥
用户管理/users用户 CRUD
API Key 管理/api-keys密钥生成/吊销
系统日志/logs运行日志查看
帮助/help文档入口

API 层

web-ui/src/
├── api/
│   ├── client.ts          # Axios 实例,拦截器
│   ├── agents.ts
│   ├── scenes.ts
│   ├── knowledge.ts
│   ├── channels.ts
│   ├── auth.ts
│   ├── hires.ts
│   ├── users.ts
│   └── chat.ts
├── components/
│   ├── Layout.tsx          # 侧边栏 + 顶栏 + 内容区
│   ├── Sidebar.tsx         # 导航菜单
│   ├── AgentAvatar.tsx     # Agent 状态指示
│   ├── StatusBadge.tsx     # 在线/离线标签
│   ├── JsonEditor.tsx      # JSON 配置编辑器
│   ├── ConfirmDialog.tsx
│   └── ProtectedRoute.tsx  # 路由守卫
├── pages/                  # 上述 15 个页面
├── theme.ts                # Material UI 主题
└── App.tsx                 # 路由配置

认证流程

  1. 用户访问任意页面 → ProtectedRoute 检查 JWT
  2. 无 token → 重定向 /login
  3. 登录 → POST /api/auth/login → 返回 JWT → 存储到 localStorage
  4. 每次请求 → Axios 拦截器自动附加 Authorization: Bearer <token>

组件说明

Layout: Flexbox 布局,左侧 240px 侧边栏 + 右侧内容区。侧边栏可折叠。

Sidebar: 读取 /api/scenes/api/agents/status,在导航底部显示场景和 agent 状态。

AgentAvatar: 圆形头像 + 绿/灰/红状态圆点。点击可快速查看详情。

StatusBadge: 文字标签,绿色 = "运行中",灰色 = "已停止",红色 = "异常"。

主题

theme.ts 定义 Material UI 主题:

  • 主色: #1976d2
  • 暗色模式支持
  • 响应式断点: xs/sm/md/lg/xl
  • 自定义字体

基于 MIT 协议开源