埋点分析系统
前后端分离的埋点数据分析平台,对接 ClickHouse。
技术栈
- 后端:Python 3.10 + Flask + clickhouse-driver
- 前端:React 18 + TypeScript + Vite + Chart.js
快速启动
后端
cd backend
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
pip install -r requirements.txt
# 设置环境变量(Windows PowerShell)
$env:CLICKHOUSE_HOST="192.168.20.147"
$env:CLICKHOUSE_PASSWORD="your_password"
# 或复制 .env.example 为 .env 并配置
python app.py
前端
cd frontend
npm install
npm run dev
Docker 部署
# 根目录下
docker-compose up -d
环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
| CLICKHOUSE_HOST | ClickHouse 地址 | 192.168.20.147 |
| CLICKHOUSE_PORT | 端口 | 9000 |
| CLICKHOUSE_USER | 用户名 | default |
| CLICKHOUSE_PASSWORD | 密码 | (必填) |
| CLICKHOUSE_DATABASE | 数据库 | clklog |
| CLICKHOUSE_TABLE | 表名 | log_analysis |
| CORS_ORIGINS | 允许的跨域来源 | http://localhost:3000 |
项目结构
.
├── backend/ # Flask 后端
│ ├── api/ # API 路由模块
│ │ ├── decorators.py # 公共装饰器
│ │ ├── detail.py # 数据明细
│ │ ├── events.py # 事件分析
│ │ ├── overview.py # 概览看板
│ │ ├── screens.py # 页面路径
│ │ └── users.py # 用户分析
│ ├── app.py # 应用入口
│ ├── config.py # 配置
│ ├── database.py # 数据库连接
│ ├── utils.py # 工具函数
│ ├── gunicorn.conf.py # 生产 WSGI 配置
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/ # React 前端
│ ├── src/
│ │ ├── api/ # API 请求
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面组件
│ │ ├── types/ # TypeScript 类型
│ │ ├── utils/ # 工具函数
│ │ └── App.tsx
│ ├── Dockerfile
│ └── package.json
├── .env.example # 环境变量模板
├── .gitignore
├── docker-compose.yml
└── README.md