# 广西政府采购网公告监控系统 - 企业微信集成 ## 概述 本系统已集成企业微信功能,支持: - 企业微信应用消息推送 - 回调服务器处理用户交互 - 应用菜单管理 - 实时搜索和智能筛选 ## 配置要求 ### 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. 文本交互 支持丰富的文本命令交互: #### 🔍 搜索功能 ``` # 直接关键词搜索 大化 # 搜索"大化"相关公告 信息化 政府采购 # 搜索多个关键词 # 关键词命令 关键词 大化 # 明确指定关键词搜索 搜索 政府采购 # 搜索政府采购相关公告 ``` #### 📊 数据查询 ``` # 统计信息 总结 # 查看今日统计 统计 # 查看系统统计信息 # 最新数据 最新公告 # 查看最新发布的公告 最新 # 同上 ``` #### 🛠️ 系统管理 ``` # 系统状态 系统状态 # 查看系统运行状态 状态 # 同上 # 缓存管理 清理缓存 # 清理系统缓存 清理 # 同上 # 关键词管理 查看关键词 # 查看当前监控关键词 添加关键词 [关键词] # 添加新关键词(开发中) 删除关键词 [关键词] # 删除关键词(开发中) ``` #### ℹ️ 信息查询 ``` # 帮助信息 帮助 # 显示详细使用说明 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. 网络连接和配置