这是一份为您精心编写的完整 README.md。它不仅包含了项目的最新功能说明,还详细记录了从基础版到当前数据驱动版的所有技术演进。
本文件记录了 wxHm (WeChat LiveCode Manager) 从 v1.0 到 v1.5 的所有重大更新。
wxHm 是一个专为微信群运营设计的活码管理系统,旨在解决群二维码 7 天过期的痛点。
- 智能活码分发:固定链接访问,后台动态轮转最新上传的二维码。
- 图像性能引擎:自动 WebP 转换与
wsrv.nl全球 CDN 镜像镜像加速。 - 多维数据看板:集成 ECharts,实时展示 7 日 PV/UV 趋势及今日设备(iOS/安卓/PC)占比。
- 自动化运维:物理文件与统计数据均支持 7 天自动清理循环。
- 极简管理体验:3 天免密登录缓存,支持群组一键更名与物理删除。
- [新增] 引入
user-agents库,支持识别访问者的操作系统(iOS, Android, Windows, Mac, Linux)。 - [新增]
stats.html新增今日设备分布环形图,直观展现流量来源比例。 - [优化] 统计逻辑升级,支持在一个页面同时查看多个群组的独立趋势图与占比图。
- [修复] 修正了
X-Forwarded-For在多层代理下获取真实 IP 的准确性。
- [新增] 集成 SQLite 数据库,实现轻量级访问日志存储。
- [新增] 引入 ECharts 5.x,将枯燥的表格数据转化为动态面积趋势图。
- [逻辑] 实现统计数据 7 天自动回滚清理,防止数据库文件无限膨胀。
- [新增] 引入
ProxyFix中间件,完美适配 Cloudflare/Nginx 反向代理环境。 - [优化] 强制
base_url走 HTTPS 协议,解决wsrv.nl在安全环境下抓图失败的问题。 - [安全] 调整
Referrer-Policy为no-referrer-when-downgrade,解决跨域策略导致的图片无法显示(strict-origin)。
- [新增] 集成 Pillow (PIL),所有上传图片自动压缩并转换为 WebP 格式。
- [新增] 接入
wsrv.nlCDN 镜像加速,实现图片边缘节点缓存,极速秒开。 - [功能] 支持图片加载失败时的自动降级逻辑(onerror fallback)。
- [新增] 支持多群组隔离,每个群组拥有独立的
uploads文件夹。 - [新增] 增加后台管理功能:群组一键重命名、一键物理删除。
- [体验] 增加管理员密码本地缓存(localStorage),3 天内无需重复输入。
| 组件 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Flask 2.x | 核心逻辑处理与路由分发 |
| 数据库 | SQLite | 存储 7 日访问统计(PV/UV/设备) |
| 图像处理 | Pillow | 实现 WebP 自动压缩与格式转换 |
| CDN 加速 | wsrv.nl | 全球边缘镜像分发,降低带宽压力 |
| 前端图表 | ECharts 5.x | 数据可视化看板 |
| 设备识别 | user-agents | 解析请求头识别操作系统 |
# 1. 克隆项目
git clone https://github.com/cooker/wxHm.git
cd wxHm
# 2. 配置环境变量(可选)
cp .env.example .env
# 编辑 .env 文件,修改管理员密码等配置
# 3. 启动服务
docker-compose up -d
# 4. 查看日志
docker-compose logs -f# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看运行状态
docker-compose ps
# 查看实时日志
docker-compose logs -f
# 更新代码后重新构建
docker-compose up -d --build以下目录已通过 Docker volumes 持久化,数据不会因容器重启而丢失:
uploads/- 上传的二维码图片instance/- SQLite 数据库文件logs/- 应用日志
pip install Flask Flask-SQLAlchemy Pillow user-agents werkzeug gunicorn修改 app.py 中的 ADMIN_PASSWORD。
# 使用启动脚本
bash start.sh
# 或直接使用 gunicorn
gunicorn --workers 1 --bind 0.0.0.0:8092 app:app务必添加以下 Header 以支持 IP 识别:
location / {
proxy_pass http://127.0.0.1:8092;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}- 备份:由于数据存储在
stats.db,建议定期备份该单文件。 - 清理:系统会自动清理 7 天前的文件,无需手动操作
uploads文件夹。
您觉得这份 README 是否还需要增加一个“常见问题 (FAQ)”板块,来解决 Cloudflare 拦截等具体环境配置问题?