埋点分析系统 - 前端技术架构

📑 目录
  1. 技术栈
  2. 路由结构
  3. 组件架构
  4. API 层
  5. 设计系统
  6. 关键约束

埋点分析系统 - 前端技术架构

代码路径:e:\AI工作台\埋点分析系统\frontend\


技术栈

组件技术
框架React 18 + TypeScript 5
构建Vite 5
图表Chart.js 4.x + react-chartjs-2
图标lucide-react
HTTPAxios
路由React Router v6
样式CSS 变量 + 玻璃态设计

路由结构

/login          → Login.tsx
/               → Overview.tsx        (概览看板)
/events         → Events.tsx          (事件分析)
/elements       → ElementsContent.tsx (元素分析)
/users          → Users.tsx           (用户分析)
/retention      → Retention.tsx       (留存分析)
/funnel         → Funnel.tsx          (漏斗分析)
/screens        → Screens.tsx         (页面路径)
/detail         → Detail.tsx          (数据明细)
/sysusers       → SysUsers.tsx        (系统用户管理)
/users/:id      → UserDetail.tsx      (用户行为序列)

组件架构

App.tsx
├── AuthContext.tsx           (认证状态)
├── ProtectedRoute.tsx        (路由守卫)
├── Sidebar.tsx               (侧边栏:环境切换 + 项目选择 + 菜单)
├── Header.tsx                (顶栏:日期选择 + 用户菜单)
├── ProjectSelector.tsx       (项目下拉多选,createPortal 渲染)
├── Card.tsx                  (卡片容器)
├── KpiCard.tsx               (KPI 指标卡)
├── Loading.tsx               (加载/空状态)
├── Toast.tsx                 (消息提示)
└── ChangePasswordModal.tsx   (修改密码弹窗)

API 层

api/index.ts
├── Axios 实例 (baseURL, 超时, 拦截器)
├── 请求拦截器: 注入 Authorization Bearer Token
├── 响应拦截器: 统一错误处理 + 401 跳转登录
├── authApi       (登录/登出/信息/修改密码)
├── overviewApi   (概览 KPI/趋势)
├── eventsApi     (事件分析)
├── elementsApi   (元素分析)
├── usersApi      (用户分析)
├── screensApi    (页面路径)
├── detailApi     (数据明细)
├── retentionApi  (留存分析)
├── funnelApi     (漏斗分析)
└── flowApi       (流量分析)

设计系统

CSS 变量体系

  • 色彩: --primary, --bg, --glass-bg, --text-primary
  • 阴影: --shadow-sm, --shadow-md, --shadow-lg
  • 圆角: --radius-sm, --radius-md, --radius-lg
  • 动效: --transition-fast, --transition-normal

玻璃态设计

  • 卡片: backdrop-filter: blur(20px) saturate(180%)
  • 侧边栏/顶栏: 半透明磨砂质感
  • KPI 卡片: 渐变光晕 + 顶部装饰条

关键约束

  • 图标传 JSX 节点 ,不能传组件引用
  • Chart.js drawBorder 已废弃,改用 border: { display: false }
  • verbatimModuleSyntax 开启,类型必须用 import type
  • 多接口并行用 Promise.allSettled
  • .glass-card:hover 不可使用 transform
  • .app-sidebar 需要 z-index: 50 + overflow: visible