# 萌芽Ping（MengYaPing）

一个轻量、可自部署的网站可用性监控面板。  
支持多网站/多 URL 监控、分组管理、实时状态查看、24h/7d 可用率统计与延迟展示。

## 功能特性

- 多网站监控：每个网站可配置多个 URL，分别检测
- 自动巡检：默认每 5 分钟检测一次（可配置）
- 状态面板：在线/离线、状态码、响应延迟、最后检测时间
- 可用率统计：按 24 小时与 7 天维度聚合
- 分组与检索：支持分组筛选与关键词搜索
- 手动触发：支持单网站“立即检测”

## 技术栈

- 前端：React 19 + Vite 7 + Tailwind CSS 4
- 后端：Go 1.25 + Gin
- 存储：本地 JSON 文件（`mengyaping-backend/data/`）
- 部署：Docker / Docker Compose（后端）

## 项目结构

```text
.
├─ mengyaping-frontend/         # 前端应用
│  ├─ src/components/           # 卡片、图表、弹窗等组件
│  ├─ src/pages/                # 页面（Dashboard）
│  ├─ src/services/api.js       # API 请求封装
│  └─ public/                   # 静态资源（logo、favicon）
├─ mengyaping-backend/          # 后端服务
│  ├─ handlers/ services/ router/
│  ├─ models/ storage/ config/ utils/
│  └─ data/                     # 配置与监控数据（JSON）
├─ 开启前端.bat
├─ 开启后端.bat
└─ 构建前端.bat
```

## 快速开始（本地开发）

### 1) 启动后端

```bash
cd mengyaping-backend
go mod tidy
go run main.go
```

默认地址：`http://localhost:8080`

### 2) 启动前端

```bash
cd mengyaping-frontend
npm install
npm run dev
```

前端开发地址通常为：`http://localhost:5173`

## 常用命令

```bash
# 前端
cd mengyaping-frontend
npm run dev      # 开发模式
npm run build    # 生产构建
npm run lint     # 代码检查

# 后端
cd mengyaping-backend
go test ./...    # 运行测试
```

Windows 用户也可直接使用仓库根目录下的 `开启前端.bat`、`开启后端.bat`、`构建前端.bat`。

## API 概览

基础前缀：`/api`

- `GET /health`：健康检查
- `GET /websites`：获取全部网站状态
- `GET /websites/:id`：获取单网站状态
- `POST /websites`：创建网站
- `PUT /websites/:id`：更新网站
- `DELETE /websites/:id`：删除网站
- `POST /websites/:id/check`：立即检测
- `GET /groups`：获取分组
- `POST /groups`：新增分组

## 配置说明

后端支持环境变量配置（如 `SERVER_PORT`、`MONITOR_INTERVAL`、`MONITOR_TIMEOUT` 等），并会读取 `mengyaping-backend/data/config.json`。  
当前实现中，`config.json` 的值会覆盖环境变量同名项。

## Docker 部署（后端）

```bash
cd mengyaping-backend
docker compose up -d --build
```

`docker-compose.yml` 默认映射端口 `6161 -> 8080`。

## 展示建议（GitHub）

- 建议在仓库中新增 `docs/images/` 并放置页面截图
- 可在本 README 顶部补充截图、动图或在线演示链接，提升展示效果

