feat: 初始化智能电量监控系统项目
该提交完成了完整的电费监控系统项目初始化,包含: 1. 后端Node.js+Express服务,支持定时采集、登录认证、数据API 2. React前端界面,包含登录页和数据仪表盘 3. Docker容器化配置和docker-compose部署文件 4. 环境变量示例和gitignore、dockerignore配置 5. 完整的项目文档README
This commit is contained in:
131
README.md
131
README.md
@@ -1,2 +1,131 @@
|
||||
# electricity-monitor
|
||||
# 智能电量监控系统
|
||||
|
||||
实时监控宿舍/房间电费余额和用电量,通过企业微信推送每日用电报告和异常告警。
|
||||
|
||||
## 功能
|
||||
|
||||
- 定时采集电费数据(每小时整点)
|
||||
- 可视化展示今日用电趋势和用电量
|
||||
- 历史用电数据统计(7天/15天/30天)
|
||||
- 企业微信机器人通知(每日用电报告 + 采集异常告警)
|
||||
- 登录认证保护
|
||||
- 手动触发数据采集
|
||||
- 响应式布局,支持手机端访问
|
||||
|
||||
## 技术栈
|
||||
|
||||
| 层级 | 技术 |
|
||||
|---|---|
|
||||
| 前端 | React 18 + Ant Design 5 + Chart.js |
|
||||
| 后端 | Node.js + Express |
|
||||
| 数据库 | SQLite (better-sqlite3) |
|
||||
| 定时任务 | node-cron |
|
||||
| 容器化 | Docker |
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 配置环境变量
|
||||
|
||||
复制 `.env.example` 为 `.env` 并填写:
|
||||
|
||||
```env
|
||||
# 必填 - 小程序的登录 Cookie
|
||||
SHIRO_COOKIE=shiroJID=你的cookie
|
||||
|
||||
# 必填 - 登录用户名和密码
|
||||
LOGIN_USERNAME=admin
|
||||
LOGIN_PASSWORD=你的密码
|
||||
|
||||
# 选填 - 企业微信群机器人 Webhook URL
|
||||
WECOM_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key
|
||||
|
||||
# 选填 - Cookie 签名密钥
|
||||
COOKIE_SECRET=任意随机字符串
|
||||
```
|
||||
|
||||
> **如何获取 SHIRO_COOKIE?**
|
||||
> 1. 打开微信小程序
|
||||
> 2. 进入电费查询页面
|
||||
> 3. 通过抓包工具获取请求中的 Cookie 值
|
||||
|
||||
### 2. 使用 Docker 运行(推荐)
|
||||
|
||||
```bash
|
||||
docker compose build --no-cache
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
访问 `http://localhost:3000`
|
||||
|
||||
### 3. 本地开发
|
||||
|
||||
需要同时启动后端和前端:
|
||||
|
||||
**终端 1 - 启动后端:**
|
||||
|
||||
```bash
|
||||
npm install
|
||||
node server.js
|
||||
```
|
||||
|
||||
后端运行在 `http://localhost:3000`
|
||||
|
||||
**终端 2 - 启动前端开发服务器:**
|
||||
|
||||
```bash
|
||||
cd client
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
前端运行在 `http://localhost:5173`,Vite 会自动代理 API 请求到后端。
|
||||
|
||||
### 4. 手动采集
|
||||
|
||||
登录系统后,点击右上角 **手动获取** 按钮即可立即采集最新数据。
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
electricity-monitor/
|
||||
├── server.js # 后端服务入口
|
||||
├── package.json # 后端依赖
|
||||
├── Dockerfile # Docker 构建
|
||||
├── docker-compose.yml # Docker Compose 配置
|
||||
├── .env # 环境变量(勿提交)
|
||||
├── .env.example # 环境变量示例
|
||||
├── .gitignore
|
||||
├── data/ # SQLite 数据库文件
|
||||
└── client/ # 前端项目
|
||||
├── package.json
|
||||
├── index.html
|
||||
├── vite.config.js
|
||||
└── src/
|
||||
├── main.jsx # 入口
|
||||
├── App.jsx # 根组件(认证状态管理)
|
||||
├── api.js # API 请求模块
|
||||
└── pages/
|
||||
├── Login.jsx # 登录页
|
||||
└── Dashboard.jsx # 仪表盘页
|
||||
```
|
||||
|
||||
## API 接口
|
||||
|
||||
| 接口 | 方法 | 说明 | 需登录 |
|
||||
|---|---|---|---|
|
||||
| `/api/login` | POST | 登录 | 否 |
|
||||
| `/api/logout` | POST | 登出 | 否 |
|
||||
| `/api/check-auth` | GET | 检查登录状态 | 否 |
|
||||
| `/api/current` | GET | 获取当前数据 | 是 |
|
||||
| `/api/history` | GET | 获取历史数据 | 是 |
|
||||
| `/api/trigger-collect` | GET | 手动触发采集 | 是 |
|
||||
|
||||
## 定时任务
|
||||
|
||||
- **每小时整点**:采集电费数据
|
||||
- **每天 00:00**:发送昨日用电报告到企业微信
|
||||
- **采集失败时**:立即发送异常告警到企业微信
|
||||
|
||||
## 许可
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user