309 lines
7.6 KiB
Markdown
309 lines
7.6 KiB
Markdown
# 广西政府采购网公告监控系统 - 企业微信集成
|
||
|
||
## 概述
|
||
|
||
本系统已集成企业微信功能,支持:
|
||
- 企业微信应用消息推送
|
||
- 回调服务器处理用户交互
|
||
- 应用菜单管理
|
||
- 实时搜索和智能筛选
|
||
|
||
## 配置要求
|
||
|
||
### 1. 企业微信应用配置
|
||
|
||
在 `config/config.yaml` 中配置企业微信信息:
|
||
|
||
```yaml
|
||
# 企业微信应用配置
|
||
wechat_app:
|
||
enabled: true # 是否启用企业微信通知
|
||
corp_id: "ww69e8e44636f47780" # 企业ID
|
||
agent_id: "1000007" # 应用ID
|
||
secret: "SmelCwKFoL0E9ATWFzr-w7gsfXBTN72lT1UqnNd0HpI" # 应用Secret
|
||
token: "DmvL98cAF6x9CFtQZwqD2emGL8S7HxA" # Token
|
||
encoding_aes_key: "yAc4OoSCP92YTefHXYfw27WeG9oF11W9d6nw6QYlU3D" # 消息加密Key
|
||
port: 18001 # 服务端口
|
||
```
|
||
|
||
### 2. 企业微信管理后台设置
|
||
|
||
1. **设置回调URL**
|
||
- 在企业微信管理后台的应用设置中
|
||
- 设置回调URL为:`http://your-server-ip:18001/api/v1/wechat/callback`
|
||
- Token和EncodingAESKey需要与配置文件一致
|
||
|
||
2. **设置应用可见范围**
|
||
- 配置应用对哪些部门或成员可见
|
||
- 确保有基础接口权限
|
||
|
||
## 功能说明
|
||
|
||
### 1. 消息推送
|
||
|
||
系统会在以下情况下自动推送消息到企业微信:
|
||
|
||
- **搜索完成通知**:每次执行搜索后,推送筛选结果
|
||
- **关键词匹配通知**:发现匹配关键词的公告时推送
|
||
- **系统状态通知**:系统启动、错误等重要事件
|
||
|
||
消息格式参考 `企业微信消息示例.md`
|
||
|
||
### 2. 应用菜单
|
||
|
||
系统提供全新的菜单结构,包含三大功能模块:
|
||
|
||
#### 🚀 监控操作
|
||
- **立即搜索**:执行一次完整的公告搜索,获取最新数据
|
||
- **今日统计**:查看今日公告统计信息和数据概览
|
||
- **关键词搜索**:输入关键词搜索相关公告
|
||
- **最新公告**:选择公告来源查看该来源的最新10条公告
|
||
|
||
#### ⚙️ 系统管理
|
||
- **关键词管理**:查看当前系统监控的关键词
|
||
- **系统状态**:查看各组件运行状态和系统信息
|
||
- **清理缓存**:清理系统缓存,提升性能
|
||
|
||
#### ❓ 帮助
|
||
- **使用说明**:查看详细功能介绍和使用指南
|
||
|
||
### 3. 文本交互
|
||
|
||
支持丰富的文本命令交互:
|
||
|
||
#### 🔍 搜索功能
|
||
```
|
||
# 直接关键词搜索
|
||
大化 # 搜索"大化"相关公告
|
||
信息化 政府采购 # 搜索多个关键词
|
||
|
||
# 关键词命令
|
||
关键词 大化 # 明确指定关键词搜索
|
||
搜索 政府采购 # 搜索政府采购相关公告
|
||
```
|
||
|
||
#### 📊 数据查询
|
||
```
|
||
# 统计信息
|
||
总结 # 查看今日统计
|
||
统计 # 查看系统统计信息
|
||
|
||
# 最新数据
|
||
最新公告 # 选择公告来源查看最新公告
|
||
最新 # 同上
|
||
|
||
# 公告来源选择 (发送数字)
|
||
1 # 查看采购公告
|
||
2 # 查看结果公告
|
||
3 # 查看更正公告
|
||
全部 # 查看全部公告
|
||
```
|
||
|
||
#### 🛠️ 系统管理
|
||
```
|
||
# 系统状态
|
||
系统状态 # 查看系统运行状态
|
||
状态 # 同上
|
||
|
||
# 缓存管理
|
||
清理缓存 # 清理系统缓存
|
||
清理 # 同上
|
||
|
||
# 关键词管理
|
||
查看关键词 # 查看当前监控关键词
|
||
添加关键词 [关键词] # 添加新关键词(开发中)
|
||
删除关键词 [关键词] # 删除关键词(开发中)
|
||
```
|
||
|
||
#### ℹ️ 信息查询
|
||
```
|
||
# 帮助信息
|
||
帮助 # 显示详细使用说明
|
||
help # 同上
|
||
|
||
# 系统信息
|
||
关于系统 # 查看系统详细信息
|
||
关于 # 同上
|
||
|
||
# 联系方式
|
||
联系我们 # 查看联系信息
|
||
联系 # 同上
|
||
```
|
||
|
||
#### 💡 智能交互
|
||
- **自动识别**:直接发送关键词即可搜索
|
||
- **多关键词**:用空格分隔多个关键词
|
||
- **模糊匹配**:支持标题和内容搜索
|
||
- **实时反馈**:所有操作都有即时响应
|
||
|
||
## 部署和运行
|
||
|
||
### 1. 安装依赖
|
||
|
||
```bash
|
||
pip install -r gx_gp_monitor/requirements.txt
|
||
```
|
||
|
||
### 2. 测试功能
|
||
|
||
```bash
|
||
# 测试企业微信模块
|
||
python test_wechat_server.py
|
||
```
|
||
|
||
### 3. 启动回调服务器
|
||
|
||
#### 方法1:使用 uWSGI(推荐生产环境)
|
||
|
||
```bash
|
||
# 使用启动脚本
|
||
./start_uwsgi_server.sh
|
||
|
||
# 或直接启动
|
||
uwsgi --ini uwsgi_wechat.ini
|
||
```
|
||
|
||
#### 方法2:使用 Gunicorn
|
||
|
||
```bash
|
||
# 使用启动脚本
|
||
./start_wechat_server.sh
|
||
|
||
# 或直接启动
|
||
gunicorn --bind 0.0.0.0:18001 app:app
|
||
```
|
||
|
||
#### 方法3:开发环境启动
|
||
|
||
```bash
|
||
# 使用专用启动脚本
|
||
python wechat_server.py
|
||
|
||
# 或使用主程序
|
||
python gx_gp_monitor/main.py wechat-server
|
||
```
|
||
|
||
### 4. 管理菜单
|
||
|
||
```bash
|
||
# 创建菜单
|
||
python gx_gp_monitor/main.py wechat-menu --action create
|
||
|
||
# 删除菜单
|
||
python gx_gp_monitor/main.py wechat-menu --action delete
|
||
|
||
# 获取菜单信息
|
||
python gx_gp_monitor/main.py wechat-menu --action get
|
||
|
||
# 测试菜单操作
|
||
python gx_gp_monitor/main.py wechat-menu --action test
|
||
```
|
||
|
||
### 5. 正常搜索
|
||
|
||
```bash
|
||
# 执行搜索(会自动推送消息)
|
||
python gx_gp_monitor/main.py crawl
|
||
```
|
||
|
||
## 技术实现
|
||
|
||
### 1. 回调服务器
|
||
|
||
- **框架**:Flask
|
||
- **端口**:18001
|
||
- **路径**:`/api/v1/wechat/callback`
|
||
- **功能**:处理企业微信的回调消息和URL验证
|
||
|
||
### 2. 消息加解密
|
||
|
||
- **库来源**:企业微信官方Python示例
|
||
- **位置**:`gx_gp_monitor/wechat/WXBizMsgCrypt.py`
|
||
- **功能**:实现消息加密、解密和签名验证
|
||
|
||
### 3. 消息处理
|
||
|
||
- **事件处理**:关注、取消关注、菜单点击
|
||
- **文本处理**:关键词搜索、手动命令
|
||
- **响应格式**:XML格式的企业微信消息
|
||
|
||
### 4. 菜单管理
|
||
|
||
- **创建菜单**:自动创建预定义菜单
|
||
- **删除菜单**:清理现有菜单
|
||
- **获取菜单**:查看当前菜单配置
|
||
|
||
## 故障排除
|
||
|
||
### 1. 回调URL验证失败
|
||
|
||
- 检查Token和EncodingAESKey是否正确配置
|
||
- 确保服务器可从公网访问
|
||
- 检查端口18001是否开放
|
||
|
||
### 2. 消息推送失败
|
||
|
||
- 检查企业微信应用配置(corp_id, agent_id, secret)
|
||
- 确认应用有消息发送权限
|
||
- 查看应用可见范围设置
|
||
|
||
### 3. 菜单创建失败
|
||
|
||
- 检查应用是否有菜单管理权限
|
||
- 确认Token有效且有管理员权限
|
||
|
||
### 4. 导入错误
|
||
|
||
```bash
|
||
# 确保依赖已安装
|
||
pip install flask pycryptodome
|
||
|
||
# 测试导入
|
||
python -c "from gx_gp_monitor.wechat.callback_server import WeChatCallbackServer; print('OK')"
|
||
```
|
||
|
||
## 日志查看
|
||
|
||
系统会记录详细的企业微信操作日志:
|
||
|
||
```bash
|
||
# 查看日志
|
||
tail -f logs/gx_gp_monitor.log | grep wechat
|
||
```
|
||
|
||
## 安全注意事项
|
||
|
||
1. **保护配置文件**:不要将包含密钥的配置文件提交到版本控制
|
||
2. **网络安全**:确保回调服务器只接受来自企业微信的请求
|
||
3. **权限控制**:合理设置应用可见范围和权限
|
||
4. **定期更新**:定期更新企业微信应用Secret
|
||
|
||
## 开发说明
|
||
|
||
### 项目结构
|
||
|
||
```
|
||
gx_gp_monitor/wechat/
|
||
├── __init__.py # 模块初始化
|
||
├── callback_server.py # Flask回调服务器
|
||
├── message_handler.py # 消息处理逻辑
|
||
├── menu_manager.py # 菜单管理
|
||
├── WXBizMsgCrypt.py # 企业微信加密库
|
||
└── ierror.py # 错误码定义
|
||
```
|
||
|
||
### 扩展功能
|
||
|
||
如需添加新功能,可以:
|
||
|
||
1. 在 `message_handler.py` 中添加新的消息处理逻辑
|
||
2. 在 `menu_manager.py` 中修改菜单配置
|
||
3. 在 `callback_server.py` 中添加新的路由
|
||
|
||
## 联系支持
|
||
|
||
如有问题,请检查:
|
||
1. 系统日志
|
||
2. 企业微信管理后台错误信息
|
||
3. 网络连接和配置
|