feat: 添加按日期查询用电记录功能,支持切换查看历史用电趋势
1. 新增/api/records-by-date后端接口,支持按日期查询详细用电记录并计算当日用量和费用 2. 前端新增日期选择器,支持切换查看指定日期的用电趋势 3. 更新README文档,补充功能说明、配置项和接口文档 4. 新增.trae目录到gitignore 5. 引入IconPack图标库和dayjs日期处理库
This commit is contained in:
50
README.md
50
README.md
@@ -1,13 +1,16 @@
|
||||
# 智能电量监控系统
|
||||
|
||||
实时监控宿舍/房间电费余额和用电量,通过企业微信推送每日用电报告和异常告警。
|
||||
实时监控宿舍/房间电费余额和用电量,支持企业微信和 Telegram 推送每日用电报告、余额预警和异常告警。
|
||||
|
||||
## 功能
|
||||
|
||||
- 定时采集电费数据(每小时整点)
|
||||
- 可视化展示今日用电趋势和用电量
|
||||
- 历史用电数据统计(7天/15天/30天)
|
||||
- 企业微信机器人通知(每日用电报告 + 采集异常告警)
|
||||
- 可视化展示每日用电趋势(支持日期切换查看历史)
|
||||
- 历史用电数据统计(7天/15天/30天),今日数据自动归一化
|
||||
- 通知推送:企业微信 + Telegram 双通道
|
||||
- 余额预警:低于阈值时自动推送通知
|
||||
- 每日报告:每晚 23:30 推送今日用电汇总
|
||||
- 深色模式:自动跟随系统主题
|
||||
- 登录认证保护
|
||||
- 手动触发数据采集
|
||||
- 响应式布局,支持手机端访问
|
||||
@@ -16,7 +19,7 @@
|
||||
|
||||
| 层级 | 技术 |
|
||||
|---|---|
|
||||
| 前端 | React 18 + Ant Design 5 + Chart.js |
|
||||
| 前端 | React 18 + Ant Design 5 + Chart.js + IconPark |
|
||||
| 后端 | Node.js + Express |
|
||||
| 数据库 | SQLite (better-sqlite3) |
|
||||
| 定时任务 | node-cron |
|
||||
@@ -39,6 +42,15 @@ LOGIN_PASSWORD=你的密码
|
||||
# 选填 - 企业微信群机器人 Webhook URL
|
||||
WECOM_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key
|
||||
|
||||
# 选填 - Telegram 机器人 Token(从 @BotFather 获取)
|
||||
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklmNOPqrstUVwxyz
|
||||
|
||||
# 选填 - 接收通知的 Telegram 用户 ID(从 @userinfobot 获取)
|
||||
TELEGRAM_CHAT_ID=123456789
|
||||
|
||||
# 选填 - 电费余额预警阈值(低于此值时发送通知,设为0或留空关闭)
|
||||
ALERT_THRESHOLD=20
|
||||
|
||||
# 选填 - Cookie 签名密钥
|
||||
COOKIE_SECRET=任意随机字符串
|
||||
```
|
||||
@@ -100,9 +112,11 @@ electricity-monitor/
|
||||
├── package.json
|
||||
├── index.html
|
||||
├── vite.config.js
|
||||
├── public/
|
||||
│ └── lightning.svg # Favicon
|
||||
└── src/
|
||||
├── main.jsx # 入口
|
||||
├── App.jsx # 根组件(认证状态管理)
|
||||
├── main.jsx # 入口(主题检测)
|
||||
├── App.jsx # 根组件(CSS 变量 & 认证管理)
|
||||
├── api.js # API 请求模块
|
||||
└── pages/
|
||||
├── Login.jsx # 登录页
|
||||
@@ -117,15 +131,27 @@ electricity-monitor/
|
||||
| `/api/logout` | POST | 登出 | 否 |
|
||||
| `/api/check-auth` | GET | 检查登录状态 | 否 |
|
||||
| `/api/current` | GET | 获取当前数据 | 是 |
|
||||
| `/api/history` | GET | 获取历史数据 | 是 |
|
||||
| `/api/history` | GET | 获取历史统计数据(7/15/30天) | 是 |
|
||||
| `/api/records-by-date` | GET | 按日期查询详细记录 | 是 |
|
||||
| `/api/trigger-collect` | GET | 手动触发采集 | 是 |
|
||||
| `/api/test-notify` | GET | 发送测试通知 | 是 |
|
||||
| `/api/send-report` | GET | 发送今日日报 | 是 |
|
||||
|
||||
## 定时任务
|
||||
|
||||
- **每小时整点**:采集电费数据
|
||||
- **每天 00:00**:发送昨日用电报告到企业微信
|
||||
- **采集失败时**:立即发送异常告警到企业微信
|
||||
| 时间 | 任务 | 说明 |
|
||||
|---|---|---|
|
||||
| 每小时整点 | `collectData` | 采集电费数据 |
|
||||
| 每晚 23:30 | `sendDailyReport` | 发送今日用电报告 |
|
||||
| 余额低于阈值 | `checkThresholdAndAlert` | 发送余额预警通知 |
|
||||
|
||||
## 通知渠道
|
||||
|
||||
| 渠道 | 配置变量 | 说明 |
|
||||
|---|---|---|
|
||||
| 企业微信 | `WECOM_WEBHOOK_URL` | 群机器人 Webhook |
|
||||
| Telegram | `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID` | 机器人私聊推送 |
|
||||
|
||||
## 许可
|
||||
|
||||
MIT
|
||||
[MIT](LICENSE)
|
||||
|
||||
Reference in New Issue
Block a user