diff --git a/README_企业微信.md b/README_企业微信.md index efc2ac7..9292625 100644 --- a/README_企业微信.md +++ b/README_企业微信.md @@ -98,11 +98,33 @@ python test_wechat_server.py ### 3. 启动回调服务器 -```bash -# 方法1:使用专用启动脚本 -python start_wechat_server.py +#### 方法1:使用 uWSGI(推荐生产环境) -# 方法2:使用主程序 +```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 ``` diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc new file mode 100644 index 0000000..27d8ff5 Binary files /dev/null and b/__pycache__/app.cpython-313.pyc differ diff --git a/app.py b/app.py new file mode 100644 index 0000000..d4dad41 --- /dev/null +++ b/app.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +""" +企业微信回调服务器 WSGI 应用入口 +用于 uWSGI 等部署环境 +""" + +import sys +import os + +# 添加项目路径 +sys.path.insert(0, os.path.dirname(__file__)) + +try: + from gx_gp_monitor.wechat.callback_server import create_callback_app + + # 创建 WSGI 应用对象 + app = create_callback_app() + +except ImportError as e: + print(f"导入失败: {e}", file=sys.stderr) + print("请确保已安装所有依赖: pip install -r gx_gp_monitor/requirements.txt", file=sys.stderr) + sys.exit(1) +except Exception as e: + print(f"应用创建失败: {e}", file=sys.stderr) + sys.exit(1) diff --git a/cron_example.txt b/cron_example.txt deleted file mode 100644 index ee5aecf..0000000 --- a/cron_example.txt +++ /dev/null @@ -1,17 +0,0 @@ -# 定时爬取脚本 crontab 配置示例 -# 使用方法: crontab -e 然后复制粘贴以下内容 - -# 每小时执行一次(整点) -0 * * * * cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1 - -# 每30分钟执行一次 -*/30 * * * * cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1 - -# 每天早上9点执行 -0 9 * * * cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1 - -# 工作日(周一到周五)每小时执行一次 -0 * * * 1-5 cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1 - -# 周一到周五早上8:30和下午2:30执行 -30 8,14 * * 1-5 cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1 diff --git a/gx_gp_monitor/__pycache__/main.cpython-313.pyc b/gx_gp_monitor/__pycache__/main.cpython-313.pyc index 60ca536..c64809a 100644 Binary files a/gx_gp_monitor/__pycache__/main.cpython-313.pyc and b/gx_gp_monitor/__pycache__/main.cpython-313.pyc differ diff --git a/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc b/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc index f4fe0a7..8d263b8 100644 Binary files a/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc and b/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc differ diff --git a/gx_gp_monitor/wechat/callback_server.py b/gx_gp_monitor/wechat/callback_server.py index de23286..ad7d20e 100644 --- a/gx_gp_monitor/wechat/callback_server.py +++ b/gx_gp_monitor/wechat/callback_server.py @@ -261,5 +261,15 @@ def get_callback_server() -> WeChatCallbackServer: def create_callback_app() -> Flask: """创建回调应用(用于外部集成)""" + # 确保配置已加载(用于uWSGI等部署环境) + from ..core.config_manager import load_config, get_config + + # 检查配置是否已加载 + try: + config = get_config() + except RuntimeError: + # 配置未加载,尝试加载默认配置 + load_config() + server = get_callback_server() return server.app diff --git a/logs/gx_gp_monitor.log b/logs/gx_gp_monitor.log index 6f9d4fb..9ec9d2c 100644 --- a/logs/gx_gp_monitor.log +++ b/logs/gx_gp_monitor.log @@ -1,4614 +1,103 @@ -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: TTy9PfR0coKj5c04A5+6lIyIp5+e3G96IKYccqr1uegJveUfs9... -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 107bc7df0b1fbef6bce92f8fbc2aa3795a563613 -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 107bc7df0b1fbef6bce92f8fbc2aa3795a563613 -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 16:41:12 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 田阳..., user=WeiJueSen -2026-01-08 16:41:12 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 田阳, user: WeiJueSen -2026-01-08 16:41:12 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['田阳'] -2026-01-08 16:41:12 - gx_gp_monitor.main - INFO - 开始执行爬取任务 -2026-01-08 16:41:12 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:41:12 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:41:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:13 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.47秒 -2026-01-08 16:41:13 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:41:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:13 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:41:13 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:41:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:13 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:41:13 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:41:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:41:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:41:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:41:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.37秒 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:41:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:41:14 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:41:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:41:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:41:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:41:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:41:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:41:15 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:41:15 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:41:15 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:41:15 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 16:41:16 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 16:41:16 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 16:41:16 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 16:41:16 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 16:41:16 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 16:41:16 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} -2026-01-08 16:43:55 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:43:55 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 马山, user: WeiJueSen -2026-01-08 16:43:55 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['马山'] -2026-01-08 16:43:55 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:43:55 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:43:55 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:43:55 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:43:55 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:43:55 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:43:55 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:43:55 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:43:55 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:43:55 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:43:55 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:43:55 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:43:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:43:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:43:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:43:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:43:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 16:43:56 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:43:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:57 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 16:43:57 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:43:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:57 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.41秒 -2026-01-08 16:43:57 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:43:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:57 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:43:57 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:43:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:43:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:43:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:43:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:43:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:43:58 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 16:43:58 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:43:58 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:43:58 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 16:43:59 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 16:43:59 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 0 -> 0 条公告 -2026-01-08 16:43:59 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 16:43:59 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 16:43:59 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 16:43:59 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 16:43:59 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 16:44:17 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:44:17 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:44:17 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:44:17 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:44:17 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:44:17 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:44:17 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:44:17 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:44:17 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:45:21 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:45:21 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:45:21 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:45:21 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: XlkE4lIDg+VZPktR7VW0pW4uAyfzvK+Jbc7bdhQ08FvytwDuRY... -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 5ab200df5ed4004636e61625d470fbb580e0d853 -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 5ab200df5ed4004636e61625d470fbb580e0d853 -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 16:45:48 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 陆川..., user=WeiJueSen -2026-01-08 16:45:48 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 16:45:48 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 16:45:48 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:45:48 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:45:48 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:45:49 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:45:49 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:45:49 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:45:49 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:45:49 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:45:49 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:45:49 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:45:49 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:45:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.45秒 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:45:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:45:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:45:49 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:45:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:45:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:45:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:45:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.35秒 -2026-01-08 16:45:50 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:45:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:45:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:45:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:45:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:45:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:45:51 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:45:52 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:45:52 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 16:45:52 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:45:52 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 16:45:52 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 0 -> 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 16:45:52 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 16:45:52 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 16:45:52 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 16:50:32 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:50:32 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 16:50:32 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 16:50:32 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:50:32 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:50:32 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:50:32 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:50:32 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:50:32 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:50:32 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:50:32 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:50:32 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:50:32 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:50:32 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:50:32 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:02 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.47秒 -2026-01-08 16:51:02 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:51:03 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:51:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:51:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.31秒 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:51:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:51:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:51:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:51:04 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:51:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:05 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 16:51:05 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:51:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:05 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:51:05 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:51:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:05 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:51:05 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:51:05 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 412 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 412 -> 9 条公告 -2026-01-08 16:51:05 - gx_gp_monitor.main - ERROR - 爬取任务执行失败: SourceFilter() takes no arguments -2026-01-08 16:51:15 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:51:15 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 16:51:15 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 16:51:15 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:51:15 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:51:15 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:51:15 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:51:15 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:51:15 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:51:15 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:51:15 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:51:15 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:51:15 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:51:15 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:51:15 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:51:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:16 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.48秒 -2026-01-08 16:51:16 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:51:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:17 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 1.06秒 -2026-01-08 16:51:17 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:51:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:17 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.82秒 -2026-01-08 16:51:17 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:51:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:19 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 1.49秒 -2026-01-08 16:51:19 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:51:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:20 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.91秒 -2026-01-08 16:51:20 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:51:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:21 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.86秒 -2026-01-08 16:51:21 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:51:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:21 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.80秒 -2026-01-08 16:51:21 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:51:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:22 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.77秒 -2026-01-08 16:51:22 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:51:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:23 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.84秒 -2026-01-08 16:51:23 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:51:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:24 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.81秒 -2026-01-08 16:51:24 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:51:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:25 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.95秒 -2026-01-08 16:51:25 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:51:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:25 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 16:51:25 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:51:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:25 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 16:51:25 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:51:25 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 412 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 412 -> 9 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 9 -> 9 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.main - INFO - 筛选后剩余 9 条公告 -2026-01-08 16:51:25 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 9 条筛选后公告到数据库 -2026-01-08 16:51:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:25 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 9 条公告) -2026-01-08 16:51:25 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 16:51:25 - gx_gp_monitor.notification.wechat - INFO - 开始发送 9 条公告通知,每条单独发送 -2026-01-08 16:51:26 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 16:51:26 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:27 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:27 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:28 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:29 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:30 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:30 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:31 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:32 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:32 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 9/9 条成功 -2026-01-08 16:51:32 - gx_gp_monitor.main - ERROR - 爬取任务执行失败: 'dict' object has no attribute 'keyword_filtered' -2026-01-08 16:51:42 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:51:42 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 16:51:42 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 16:51:42 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:51:42 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:51:42 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:51:42 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:51:42 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:51:42 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:51:42 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:51:42 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:51:42 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:51:42 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:51:42 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:51:42 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:51:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:51:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:51:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:51:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:51:43 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:51:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:51:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:51:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:51:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 16:51:44 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:51:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.30秒 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:51:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:51:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:51:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:51:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:51:45 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:51:45 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:51:45 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:51:45 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:51:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:51:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:51:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:51:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:51:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:51:46 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 413 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 413 -> 9 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 9 -> 9 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.main - INFO - 筛选后剩余 9 条公告 -2026-01-08 16:51:46 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 9 条筛选后公告到数据库 -2026-01-08 16:51:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:51:46 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 9 条公告) -2026-01-08 16:51:46 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 16:51:46 - gx_gp_monitor.notification.wechat - INFO - 开始发送 9 条公告通知,每条单独发送 -2026-01-08 16:51:46 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 16:51:46 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:47 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:48 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:48 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:49 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:50 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:50 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:51 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:52 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:51:52 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 9/9 条成功 -2026-01-08 16:51:52 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 9, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 404, 'date_filtered': 887, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 42, 877917), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 43, 239707), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 43, 239707), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='乌石镇吹塘村立体农业种植示范基地施工合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 27), purchase_name='陆川县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bXNZWZtNC/+CEbSgiT1eyg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 43, 489522), created_at=None, updated_at=None, content_hash='403c2651489b1a2ad5ff46f5b05109b8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 16), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=B82fwvKasNKKQpaFN9a69g==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 44, 259892), created_at=None, updated_at=None, content_hash='2d00dbd5b1e628295c0b22d5c41bd9df', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 1), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jz7xOj3wHl5aXd/mkOU59A==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 44, 259892), created_at=None, updated_at=None, content_hash='16cdcea3843ed84ac469bd535d6f4932', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 35, 48), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=D+9Yi92o6kjtk9IQCDjVMA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 44, 259892), created_at=None, updated_at=None, content_hash='3715c10d9a6f9935572b0073ff8f00d3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县清湖镇人民政府2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 28, 8), purchase_name='陆川县清湖镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PflN8ihVcOhd1HJB1BXpkA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 45, 748808), created_at=None, updated_at=None, content_hash='188784e56300ae517602f864d6aefaac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县九洲江灌区工程工作站2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 34, 53), purchase_name='陆川县九洲江灌区工程工作站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o/QTfE7PuyK+ksmVfpC0gA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 51, 45, 748808), created_at=None, updated_at=None, content_hash='883a30b0052cd810e1a0301706ca814e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 16:51:52 - gx_gp_monitor.wechat.message_handler - ERROR - 发送公告通知失败: send_announcements_notification() got an unexpected keyword argument 'custom_title' -2026-01-08 16:52:15 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:52:15 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 16:52:15 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 16:52:15 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:52:15 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:52:15 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:52:15 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:52:15 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:52:15 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:52:15 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:52:15 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:52:15 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:52:15 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:52:15 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:52:15 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:52:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:16 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.38秒 -2026-01-08 16:52:16 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:52:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:16 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:52:16 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:52:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:16 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 16:52:16 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:52:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:52:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:52:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:52:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.35秒 -2026-01-08 16:52:17 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:52:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:52:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:52:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:52:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:52:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:52:18 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:52:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:52:19 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:52:19 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:52:19 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 413 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 413 -> 9 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 9 -> 9 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.main - INFO - 筛选后剩余 9 条公告 -2026-01-08 16:52:19 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 9 条筛选后公告到数据库 -2026-01-08 16:52:19 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:52:19 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 9 条公告) -2026-01-08 16:52:19 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 16:52:19 - gx_gp_monitor.notification.wechat - INFO - 开始发送 9 条公告通知,每条单独发送 -2026-01-08 16:52:19 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 16:52:19 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:20 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:21 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:21 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:22 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:23 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:23 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:24 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:25 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:25 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 9/9 条成功 -2026-01-08 16:52:25 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 9, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 404, 'date_filtered': 887, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 15, 977582), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 16, 362532), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 16, 362532), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='乌石镇吹塘村立体农业种植示范基地施工合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 27), purchase_name='陆川县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bXNZWZtNC/+CEbSgiT1eyg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 16, 609048), created_at=None, updated_at=None, content_hash='403c2651489b1a2ad5ff46f5b05109b8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 16), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=B82fwvKasNKKQpaFN9a69g==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 17, 494005), created_at=None, updated_at=None, content_hash='2d00dbd5b1e628295c0b22d5c41bd9df', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 1), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jz7xOj3wHl5aXd/mkOU59A==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 17, 494005), created_at=None, updated_at=None, content_hash='16cdcea3843ed84ac469bd535d6f4932', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 35, 48), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=D+9Yi92o6kjtk9IQCDjVMA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 17, 494005), created_at=None, updated_at=None, content_hash='3715c10d9a6f9935572b0073ff8f00d3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县清湖镇人民政府2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 28, 8), purchase_name='陆川县清湖镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PflN8ihVcOhd1HJB1BXpkA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 18, 869291), created_at=None, updated_at=None, content_hash='188784e56300ae517602f864d6aefaac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县九洲江灌区工程工作站2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 34, 53), purchase_name='陆川县九洲江灌区工程工作站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o/QTfE7PuyK+ksmVfpC0gA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 52, 18, 869291), created_at=None, updated_at=None, content_hash='883a30b0052cd810e1a0301706ca814e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 16:52:25 - gx_gp_monitor.notification.wechat - INFO - 开始发送 9 条公告通知,每条单独发送 -2026-01-08 16:52:25 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:26 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:26 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:27 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:28 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:29 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:29 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:30 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:31 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:52:31 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 9/9 条成功 -2026-01-08 16:58:15 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:58:15 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 马山, user: WeiJueSen -2026-01-08 16:58:15 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['马山'] -2026-01-08 16:58:15 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:58:15 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:58:15 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:58:15 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:58:15 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:58:15 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:58:15 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:58:15 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:58:15 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:58:15 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:58:15 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:58:15 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:58:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:46 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.51秒 -2026-01-08 16:58:46 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:58:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:46 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 16:58:46 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:58:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:46 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:58:46 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:58:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:58:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:58:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:58:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 16:58:47 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:58:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:58:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:58:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:58:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:58:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 16:58:48 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:58:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:58:49 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:58:49 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:58:49 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 418 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 418 -> 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 0 -> 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 16:58:49 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 16:58:49 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 418, 'date_filtered': 882, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 16:58:52 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:58:52 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 16:58:52 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 16:58:52 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 16:58:52 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 16:58:52 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 16:58:52 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 16:58:52 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 16:58:52 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 16:58:52 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 16:58:52 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 16:58:52 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 16:58:52 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 16:58:52 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 16:58:52 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 16:59:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:22 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.50秒 -2026-01-08 16:59:22 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 16:59:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 16:59:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 16:59:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 16:59:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 16:59:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 16:59:23 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 16:59:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 16:59:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 16:59:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 16:59:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 16:59:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 16:59:24 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 16:59:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:25 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 16:59:25 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 16:59:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 16:59:25 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 16:59:25 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 16:59:25 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 419 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 419 -> 9 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 9 -> 9 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.main - INFO - 筛选后剩余 9 条公告 -2026-01-08 16:59:25 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 9 条筛选后公告到数据库 -2026-01-08 16:59:25 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 16:59:25 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 9 条公告) -2026-01-08 16:59:25 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 16:59:25 - gx_gp_monitor.notification.wechat - INFO - 开始发送 9 条公告通知,每条单独发送 -2026-01-08 16:59:25 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 16:59:25 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:26 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:27 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:28 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:28 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:29 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:30 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:31 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:31 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 16:59:31 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 9/9 条成功 -2026-01-08 16:59:31 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 9, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 410, 'date_filtered': 881, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 58, 52, 368730), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 22, 868866), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 22, 868866), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='乌石镇吹塘村立体农业种植示范基地施工合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 27), purchase_name='陆川县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bXNZWZtNC/+CEbSgiT1eyg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 23, 78485), created_at=None, updated_at=None, content_hash='403c2651489b1a2ad5ff46f5b05109b8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 16), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=B82fwvKasNKKQpaFN9a69g==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 23, 861586), created_at=None, updated_at=None, content_hash='2d00dbd5b1e628295c0b22d5c41bd9df', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 1), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jz7xOj3wHl5aXd/mkOU59A==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 23, 861586), created_at=None, updated_at=None, content_hash='16cdcea3843ed84ac469bd535d6f4932', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 35, 48), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=D+9Yi92o6kjtk9IQCDjVMA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 23, 861586), created_at=None, updated_at=None, content_hash='3715c10d9a6f9935572b0073ff8f00d3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县清湖镇人民政府2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 28, 8), purchase_name='陆川县清湖镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PflN8ihVcOhd1HJB1BXpkA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 25, 127032), created_at=None, updated_at=None, content_hash='188784e56300ae517602f864d6aefaac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县九洲江灌区工程工作站2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 34, 53), purchase_name='陆川县九洲江灌区工程工作站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o/QTfE7PuyK+ksmVfpC0gA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 16, 59, 25, 127032), created_at=None, updated_at=None, content_hash='883a30b0052cd810e1a0301706ca814e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 16:59:31 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 16:59:31 - gx_gp_monitor.wechat.message_handler - ERROR - 生成或发送公告汇总失败: 'bool' object has no attribute 'get' -2026-01-08 17:05:15 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:05:15 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 17:05:15 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 17:05:15 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:05:15 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:05:15 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:05:15 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:05:15 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:05:15 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:05:15 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:05:16 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:05:16 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:05:16 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:05:16 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:05:16 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:05:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:46 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.52秒 -2026-01-08 17:05:46 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:05:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:46 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 17:05:46 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:05:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:05:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:05:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:05:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:05:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.33秒 -2026-01-08 17:05:47 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:05:48 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:05:48 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:05:48 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 425 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 425 -> 9 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 9 -> 9 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.main - INFO - 筛选后剩余 9 条公告 -2026-01-08 17:05:48 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 9 条筛选后公告到数据库 -2026-01-08 17:05:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:05:48 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 9 条公告) -2026-01-08 17:05:48 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:05:48 - gx_gp_monitor.notification.wechat - INFO - 开始发送 9 条公告通知,每条单独发送 -2026-01-08 17:05:49 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:05:49 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:50 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:50 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:51 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:52 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:53 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:53 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:54 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:55 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:05:55 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 9/9 条成功 -2026-01-08 17:05:55 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 9, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 416, 'date_filtered': 875, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 16, 20031), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 46, 540708), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 46, 540708), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='乌石镇吹塘村立体农业种植示范基地施工合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 27), purchase_name='陆川县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bXNZWZtNC/+CEbSgiT1eyg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 46, 807090), created_at=None, updated_at=None, content_hash='403c2651489b1a2ad5ff46f5b05109b8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 16), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=B82fwvKasNKKQpaFN9a69g==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 47, 539324), created_at=None, updated_at=None, content_hash='2d00dbd5b1e628295c0b22d5c41bd9df', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 36, 1), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jz7xOj3wHl5aXd/mkOU59A==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 47, 539324), created_at=None, updated_at=None, content_hash='16cdcea3843ed84ac469bd535d6f4932', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于打印/复印纸的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 35, 48), purchase_name='陆川县良田镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=D+9Yi92o6kjtk9IQCDjVMA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 47, 539324), created_at=None, updated_at=None, content_hash='3715c10d9a6f9935572b0073ff8f00d3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县清湖镇人民政府2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 28, 8), purchase_name='陆川县清湖镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PflN8ihVcOhd1HJB1BXpkA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 48, 689328), created_at=None, updated_at=None, content_hash='188784e56300ae517602f864d6aefaac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县九洲江灌区工程工作站2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 34, 53), purchase_name='陆川县九洲江灌区工程工作站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o/QTfE7PuyK+ksmVfpC0gA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 5, 48, 689328), created_at=None, updated_at=None, content_hash='883a30b0052cd810e1a0301706ca814e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:05:55 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:06:03 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:06:03 - __main__ - INFO - 版本: 1.0.0 -2026-01-08 17:06:03 - __main__ - INFO - 配置文件: 默认配置 -2026-01-08 17:06:03 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:06:03 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:06:03 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:06:03 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:06:03 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:06:03 - __main__ - INFO - 应用初始化完成 -2026-01-08 17:06:03 - __main__ - INFO - 开始执行爬取任务 (手动爬取: False) -2026-01-08 17:06:03 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:06:03 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:06:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:03 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.39秒 -2026-01-08 17:06:03 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:06:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:06:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:06:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:06:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:06:04 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:06:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:06:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:06:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:06:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:06:05 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:06:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:06:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:06:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:06:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:06:06 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:06:06 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:06:06 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:06:06 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:06:06 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 17:06:06 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 17:06:06 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 17:06:06 - __main__ - INFO - 筛选后剩余 0 条公告 -2026-01-08 17:06:06 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 17:06:06 - __main__ - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 1300, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: efzDCBLmpkV4ha2aI7IEivmqSofB+eBs680s45mXz+F7+Ob1Qa... -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 64a96c949079ab417f98351d061edb639a8254b3 -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 64a96c949079ab417f98351d061edb639a8254b3 -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:08:13 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:08:13 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:08:13 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:08:13 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:08:13 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:08:13 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:08:13 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:08:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.38秒 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:08:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:08:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:08:14 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:08:14 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:08:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:08:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:08:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:08:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:08:15 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:08:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:08:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:08:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:08:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:08:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:16 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:08:16 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:16 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:08:16 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:08:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:08:17 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:08:17 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:08:17 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 17:08:17 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 17:08:17 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 0 -> 0 条公告 -2026-01-08 17:08:17 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 17:08:17 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 17:08:17 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 17:08:17 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 17:08:17 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: S7hx3Kc6MkvCkia5ZQUGDtFbKhdUaqlVZ7B2eFkzpy49CxoCqR... -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 83734bd8774807eca72e75fcd251afd4d9fd1498 -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 83734bd8774807eca72e75fcd251afd4d9fd1498 -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:08:52 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=大化..., user=WeiJueSen -2026-01-08 17:08:52 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 大化, user: WeiJueSen -2026-01-08 17:08:52 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 关键词搜索: ['大化'] -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: ME9wt9sBhVcx5OQBufyufsOF5rsu2wtWpkx22uLWxH6OkVai/a... -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 3f214300055281f6b3ecdac7a8bc26b6db813429 -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 3f214300055281f6b3ecdac7a8bc26b6db813429 -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:08:59 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:08:59 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:08:59 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:08:59 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:08:59 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:08:59 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:08:59 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:08:59 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.45秒 -2026-01-08 17:08:59 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:09:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:09:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:09:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:09:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:09:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:09:00 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:09:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:09:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:09:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:09:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:09:01 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:09:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:02 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:09:02 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:09:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:02 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:09:02 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:09:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:09:02 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:09:02 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:09:02 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 17:09:02 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 0 -> 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 17:09:02 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 17:09:02 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 17:09:02 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 17:14:50 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:14:50 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:14:50 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:14:50 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:14:50 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:14:50 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:14:51 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:14:51 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:14:51 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:14:51 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:14:51 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:14:51 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:14:51 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:14:51 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:14:51 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:15:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:21 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.48秒 -2026-01-08 17:15:21 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:15:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:21 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:15:21 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:15:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:15:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:15:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:15:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:15:22 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:15:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.37秒 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:15:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:15:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:15:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:15:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:15:23 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:15:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:24 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:15:24 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:15:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:24 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:15:24 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:15:24 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 438 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 438 -> 2 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:15:24 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:15:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:24 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:15:24 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:15:24 - gx_gp_monitor.notification.wechat - INFO - 开始发送 2 条公告通知,每条单独发送 -2026-01-08 17:15:24 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:15:24 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:25 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:25 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 2/2 条成功 -2026-01-08 17:15:25 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 436, 'date_filtered': 862, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 24, 90493), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 24, 90493), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:15:25 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:15:42 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:15:42 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 17:15:42 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 17:15:42 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:15:42 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:15:42 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:15:42 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:15:42 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:15:42 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:15:42 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:15:42 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:15:42 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:15:42 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:15:42 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:15:42 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:15:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.41秒 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:15:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:15:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:15:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:15:43 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:15:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:15:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:15:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:15:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:15:44 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:15:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:15:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:15:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:15:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:15:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:15:45 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:15:45 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:15:45 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 439 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 439 -> 6 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 6 -> 6 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.main - INFO - 筛选后剩余 6 条公告 -2026-01-08 17:15:45 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 6 条筛选后公告到数据库 -2026-01-08 17:15:45 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:15:45 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 6 条公告) -2026-01-08 17:15:45 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:15:45 - gx_gp_monitor.notification.wechat - INFO - 开始发送 6 条公告通知,每条单独发送 -2026-01-08 17:15:46 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:15:46 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:47 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:47 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:48 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:49 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:49 - gx_gp_monitor.notification.wechat - INFO - 文本卡片消息发送成功 -2026-01-08 17:15:49 - gx_gp_monitor.notification.wechat - INFO - 公告通知发送完成: 6/6 条成功 -2026-01-08 17:15:49 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 6, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 433, 'date_filtered': 861, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 42, 958255), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 43, 369573), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 43, 369573), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='乌石镇吹塘村立体农业种植示范基地施工合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 27), purchase_name='陆川县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bXNZWZtNC/+CEbSgiT1eyg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 43, 589955), created_at=None, updated_at=None, content_hash='403c2651489b1a2ad5ff46f5b05109b8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县清湖镇人民政府2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 28, 8), purchase_name='陆川县清湖镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PflN8ihVcOhd1HJB1BXpkA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 45, 583084), created_at=None, updated_at=None, content_hash='188784e56300ae517602f864d6aefaac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县九洲江灌区工程工作站2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 34, 53), purchase_name='陆川县九洲江灌区工程工作站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o/QTfE7PuyK+ksmVfpC0gA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 15, 45, 583084), created_at=None, updated_at=None, content_hash='883a30b0052cd810e1a0301706ca814e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:15:50 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:17:47 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:17:47 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:17:47 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:17:47 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:17:47 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:17:47 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:17:47 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:17:47 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:17:47 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:17:47 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:17:47 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:17:47 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:17:47 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:17:47 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:17:47 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:17:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.42秒 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:17:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:17:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:17:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:17:48 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:17:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:17:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:17:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.38秒 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:17:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:17:49 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:17:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:17:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:17:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:17:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:17:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:17:50 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:17:50 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:17:50 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 441 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 441 -> 2 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:17:50 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:17:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:17:50 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:17:50 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 439, 'date_filtered': 859, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 17, 50, 574282), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 17, 50, 574282), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:17:50 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:17:51 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:17:51 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:18:02 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:18:02 - __main__ - INFO - 版本: 1.0.0 -2026-01-08 17:18:02 - __main__ - INFO - 配置文件: 默认配置 -2026-01-08 17:18:02 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:18:02 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:18:02 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:18:02 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:18:02 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:18:02 - __main__ - INFO - 应用初始化完成 -2026-01-08 17:18:02 - __main__ - INFO - 开始执行爬取任务 (手动爬取: False) -2026-01-08 17:18:02 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:18:02 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:18:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:33 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.45秒 -2026-01-08 17:18:33 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:18:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:33 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:18:33 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:18:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:33 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:18:33 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:18:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:18:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:18:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:18:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.38秒 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:18:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:18:34 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:18:35 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:18:35 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:18:35 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:18:35 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:18:35 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:18:35 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:18:35 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:18:35 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:18:35 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:18:35 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:18:35 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 17:18:35 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 17:18:36 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 17:18:36 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 17:18:36 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 17:18:36 - __main__ - INFO - 筛选后剩余 0 条公告 -2026-01-08 17:18:36 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 17:18:36 - __main__ - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 1300, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} -2026-01-08 17:27:25 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:27:25 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:27:25 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:27:25 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:27:25 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:27:25 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:27:25 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:27:25 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:27:25 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:27:25 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:27:25 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:27:25 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:27:25 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:27:25 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:27:25 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:27:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.49秒 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:27:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:27:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:27:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:27:56 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:27:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:27:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:27:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.33秒 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:27:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:27:57 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:27:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:27:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:27:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:27:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:27:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:27:58 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:27:58 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:27:58 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 453 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 453 -> 2 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:27:58 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:27:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:27:58 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:27:58 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 451, 'date_filtered': 847, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 27, 58, 587944), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 27, 58, 587944), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:27:58 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:27:59 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:27:59 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:28:14 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:28:14 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:28:14 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:28:14 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:28:14 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:28:14 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:28:14 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:28:14 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:28:14 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:28:14 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:28:14 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:28:14 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:28:14 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:28:14 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:28:14 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:28:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:45 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.43秒 -2026-01-08 17:28:45 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:28:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:45 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 17:28:45 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:28:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:45 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:28:45 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:28:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.30秒 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:28:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:28:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:28:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.42秒 -2026-01-08 17:28:46 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:28:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:28:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:28:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:28:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:28:47 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:28:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:48 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:28:48 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:28:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:28:48 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:28:48 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:28:48 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 457 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 457 -> 2 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:28:48 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:28:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:28:48 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:28:48 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 455, 'date_filtered': 843, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 28, 48, 115504), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 28, 48, 115504), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:28:48 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:28:48 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:28:49 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:29:17 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:29:17 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:29:17 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:29:17 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:29:17 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:29:17 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:29:17 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:29:17 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:29:17 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:29:17 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:29:17 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:29:17 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:29:17 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:29:17 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:29:17 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:29:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:18 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 1.52秒 -2026-01-08 17:29:18 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:29:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:19 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:29:19 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:29:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:19 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:29:19 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:29:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:20 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 1.23秒 -2026-01-08 17:29:20 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:29:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:21 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.72秒 -2026-01-08 17:29:21 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:29:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:21 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:29:21 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:29:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:22 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.90秒 -2026-01-08 17:29:22 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:29:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 1.06秒 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:29:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:29:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:29:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:29:23 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:29:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:24 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:29:24 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:29:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:29:24 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 17:29:24 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:29:24 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 457 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 457 -> 2 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:29:24 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:29:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:29:24 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:29:24 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 455, 'date_filtered': 843, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 29, 24, 170985), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 29, 24, 170985), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:29:24 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:29:24 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:29:25 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:41:22 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:41:22 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 17:41:22 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:41:22 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: FiosqmtoRpGTclzsJDDWysXARfWGtrVv1P379f3tdBOpK1Rm7a... -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 71f85ce09ca7f8f331a4ef6d174551b96ec2f253 -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 71f85ce09ca7f8f331a4ef6d174551b96ec2f253 -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:41:31 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:41:31 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:41:31 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:41:31 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:41:31 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:41:31 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:41:31 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:41:31 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:41:31 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:41:31 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:41:31 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:41:31 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:41:31 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:41:31 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:41:31 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: FiosqmtoRpGTclzsJDDWysXARfWGtrVv1P379f3tdBOpK1Rm7a... -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 71f85ce09ca7f8f331a4ef6d174551b96ec2f253 -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 71f85ce09ca7f8f331a4ef6d174551b96ec2f253 -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:41:36 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:41:36 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:41:36 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:41:36 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:41:36 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:41:36 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:41:37 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 1.17秒 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:41:37 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:41:37 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:41:37 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:41:37 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:41:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:38 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:41:38 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:41:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:38 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.55秒 -2026-01-08 17:41:38 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:41:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.35秒 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:41:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:41:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:41:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:41:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:41:39 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:41:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:40 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:41:40 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:41:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:41:40 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:41:40 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:41:40 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 471 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 471 -> 2 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:41:40 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:41:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:41:40 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:41:40 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 469, 'date_filtered': 829, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 41, 40, 106517), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 41, 40, 106517), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:41:40 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:41:40 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:41:40 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: FiosqmtoRpGTclzsJDDWysXARfWGtrVv1P379f3tdBOpK1Rm7a... -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 71f85ce09ca7f8f331a4ef6d174551b96ec2f253 -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 71f85ce09ca7f8f331a4ef6d174551b96ec2f253 -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:41:41 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:41:41 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:41:41 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:41:41 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:41:41 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:41:41 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:42:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:01 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.51秒 -2026-01-08 17:42:01 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:42:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:01 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:42:01 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:42:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:42:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:42:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:42:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 17:42:02 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:42:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.42秒 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:42:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:42:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:42:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:42:03 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:42:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:04 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:42:04 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:42:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:04 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:42:04 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:42:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:04 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:42:04 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:42:04 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 471 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 471 -> 2 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:42:04 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:42:04 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:04 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:42:04 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 469, 'date_filtered': 829, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 42, 4, 288295), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 42, 4, 288295), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:42:04 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:42:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:11 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.37秒 -2026-01-08 17:42:11 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:42:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:11 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 17:42:11 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:42:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:11 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:42:11 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:42:12 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:42:12 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:42:12 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:42:12 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 17:42:12 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:42:13 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:42:13 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:42:13 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:42:13 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:42:14 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 471 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 471 -> 2 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:42:14 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:42:14 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:42:14 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:42:14 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 469, 'date_filtered': 829, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 42, 13, 812588), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 42, 13, 812588), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:42:14 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:46:26 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:46:26 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 17:46:26 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:46:26 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 4dy7JaFQN5XR9SgcVKPRtj8xugE6mG+WWsY/X+q7gHLdtttebX... -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: f11006c01757170d1bde792e867b49bf23fc5f68 -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: f11006c01757170d1bde792e867b49bf23fc5f68 -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:46:30 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:46:30 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:46:30 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:46:30 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:46:30 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:46:30 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:46:31 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:46:31 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:46:31 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:46:31 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:46:31 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:46:31 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:46:31 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:46:31 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:46:31 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:46:31 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:31 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.50秒 -2026-01-08 17:46:31 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:46:31 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:31 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 17:46:31 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:46:32 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:32 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 17:46:32 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:46:32 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:32 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 17:46:32 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:46:32 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:32 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.30秒 -2026-01-08 17:46:32 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:46:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:46:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.42秒 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:46:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:46:33 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:46:33 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:46:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:46:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:46:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:46:34 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:46:34 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.32秒 -2026-01-08 17:46:34 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:46:34 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:46:34 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:46:34 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:34 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:46:34 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:34 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:46:34 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:34 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:46:34 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:34 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:46:34 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:34 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:46:35 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 476 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 476 -> 2 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:46:35 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:46:35 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:46:35 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:46:35 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 474, 'date_filtered': 824, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 46, 34, 622125), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 46, 34, 622125), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:46:35 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:46:35 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:46:35 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 1nbWcDj4hpWvbmxiCISUcowatVQu/M4nB7ACvhDiod83a5KPsI... -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: bc809797455f4d843cdd3de2794b17cb3f9fd88c -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: bc809797455f4d843cdd3de2794b17cb3f9fd88c -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:48:10 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:48:10 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:48:10 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:48:10 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:48:10 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:48:10 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 1nbWcDj4hpWvbmxiCISUcowatVQu/M4nB7ACvhDiod83a5KPsI... -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: bc809797455f4d843cdd3de2794b17cb3f9fd88c -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: bc809797455f4d843cdd3de2794b17cb3f9fd88c -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:48:15 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:48:15 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:48:15 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:48:15 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:48:15 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:48:15 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 1nbWcDj4hpWvbmxiCISUcowatVQu/M4nB7ACvhDiod83a5KPsI... -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: bc809797455f4d843cdd3de2794b17cb3f9fd88c -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: bc809797455f4d843cdd3de2794b17cb3f9fd88c -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:48:20 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:48:20 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:48:20 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:48:20 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:48:20 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:48:20 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:48:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:20 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.35秒 -2026-01-08 17:48:20 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:48:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:48:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:48:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:48:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:48:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 17:48:21 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:48:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.37秒 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:48:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:48:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:48:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:48:22 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:48:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:23 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:48:23 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:48:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:23 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:48:23 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:48:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:23 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:48:23 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:48:23 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 476 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 476 -> 2 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:48:23 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:48:23 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:23 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:48:23 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 474, 'date_filtered': 824, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 48, 23, 268464), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 48, 23, 268464), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:48:23 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:48:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:40 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.41秒 -2026-01-08 17:48:40 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:48:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:48:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:48:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:48:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:48:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:48:41 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:48:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.39秒 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:48:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:48:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:48:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:48:42 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:48:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:43 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:48:43 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:48:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:43 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:48:43 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:48:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:43 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:48:43 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:48:43 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 476 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 476 -> 2 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:48:43 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:48:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:43 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:48:43 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 474, 'date_filtered': 824, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 48, 43, 284690), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 48, 43, 284690), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:48:43 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:48:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:45 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.36秒 -2026-01-08 17:48:45 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:48:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:48:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:48:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:48:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:48:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:48:46 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:48:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:47 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.41秒 -2026-01-08 17:48:47 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:48:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:47 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:48:47 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:48:47 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:47 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:48:47 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:48:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:48:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:48:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:48:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:48:48 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 17:48:48 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:48:48 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 476 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 476 -> 2 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:48:48 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:48:48 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:48:48 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:48:48 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 474, 'date_filtered': 824, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 48, 48, 396567), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 48, 48, 396567), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:48:48 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 17:49:45 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:49:45 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 17:49:45 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:49:45 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:55:42 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 17:55:42 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 17:55:42 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:55:42 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: krXnYiKQyQfhvSPz3+OZeCG3n3topPMaPkxgADOkO1lPml21AL... -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 2c4310ec3daed4619856261e5c992afb82b06461 -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 2c4310ec3daed4619856261e5c992afb82b06461 -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 17:55:47 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 17:55:47 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 17:55:47 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 17:55:47 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 17:55:47 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 17:55:47 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 17:55:47 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 17:55:47 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 17:55:47 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 17:55:47 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 17:55:47 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 17:55:47 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 17:55:47 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 17:55:47 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 17:55:47 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 17:55:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.50秒 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 17:55:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 17:55:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 17:55:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:55:48 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 17:55:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 17:55:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 17:55:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 17:55:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 17:55:49 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 17:55:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 17:55:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 17:55:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 17:55:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 17:55:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 17:55:50 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 17:55:50 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 17:55:50 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 483 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 483 -> 2 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 17:55:50 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 17:55:50 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 17:55:50 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 17:55:50 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 481, 'date_filtered': 817, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 55, 50, 565927), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 17, 55, 50, 565927), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 17:55:50 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 17:55:51 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 17:55:51 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:00:18 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:00:18 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 18:00:18 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 18:00:18 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:00:18 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:00:18 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:00:18 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:00:18 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:00:18 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:00:18 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:00:18 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:00:18 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:00:18 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:00:18 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:00:18 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:00:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:48 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.45秒 -2026-01-08 18:00:48 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:00:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:48 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:00:48 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:00:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:00:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:00:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:00:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:00:49 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:00:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.35秒 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:00:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:00:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:00:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:00:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:00:50 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:00:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:51 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:00:51 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:00:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:00:51 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:00:51 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:00:51 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 488 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 488 -> 2 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 18:00:51 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 18:00:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:00:51 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 2 条公告) -2026-01-08 18:00:51 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 486, 'date_filtered': 812, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 0, 51, 72867), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 0, 51, 72867), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:00:51 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:00:51 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:00:51 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:01:09 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:01:09 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 陆川, user: WeiJueSen -2026-01-08 18:01:09 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['陆川'] -2026-01-08 18:01:09 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:01:09 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:01:09 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:01:09 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:01:09 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:01:09 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:01:09 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:01:09 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:01:09 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:01:09 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:01:10 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:01:10 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:01:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:40 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.47秒 -2026-01-08 18:01:40 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:01:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:40 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:01:40 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:01:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:40 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:01:40 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:01:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:01:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:01:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:01:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 18:01:41 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:01:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:01:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:01:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:01:42 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:01:42 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:01:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:43 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:01:43 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:01:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:43 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:01:43 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:01:43 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 488 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 488 -> 8 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 8 -> 8 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.main - INFO - 筛选后剩余 8 条公告 -2026-01-08 18:01:43 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 8 条筛选后公告到数据库 -2026-01-08 18:01:43 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:43 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 8 条公告) -2026-01-08 18:01:43 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 8, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 480, 'date_filtered': 812, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 10, 4243), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 40, 478266), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 40, 478266), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='乌石镇吹塘村立体农业种植示范基地施工合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 27), purchase_name='陆川县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bXNZWZtNC/+CEbSgiT1eyg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 40, 725604), created_at=None, updated_at=None, content_hash='403c2651489b1a2ad5ff46f5b05109b8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建能建设工程咨询有限公司 陆川县良田镇榕木垌遗留危险废物(铝灰渣)处置项目(项目编号:YLZC2026-G3-220004-GXJN )公开招标文件预公示(重)', publish_date=datetime.datetime(2026, 1, 8, 17, 46, 16), purchase_name='陆川县经济贸易和科学技术局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=67LkQW2S+P3h863ZGYn80g==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 41, 149827), created_at=None, updated_at=None, content_hash='bcefd3abd49e7b88e66bc040c1ec0dae', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建能建设工程咨询有限公司 陆川县良田镇榕木垌遗留危险废物(铝灰渣)处置项目(项目编号:YLZC2026-G3-220004-GXJN )公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 17, 29, 6), purchase_name='陆川县经济贸易和科学技术局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=FSk1Pq+4RfigbpiL9kAYyQ==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 41, 149827), created_at=None, updated_at=None, content_hash='5079b5abbd574f30a5c59c43ea58650d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县清湖镇人民政府2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 28, 8), purchase_name='陆川县清湖镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PflN8ihVcOhd1HJB1BXpkA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 43, 2661), created_at=None, updated_at=None, content_hash='188784e56300ae517602f864d6aefaac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='陆川县九洲江灌区工程工作站2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 34, 53), purchase_name='陆川县九洲江灌区工程工作站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o/QTfE7PuyK+ksmVfpC0gA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 43, 2661), created_at=None, updated_at=None, content_hash='883a30b0052cd810e1a0301706ca814e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:01:43 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:01:43 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:01:43 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:01:55 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:01:55 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 北海, user: WeiJueSen -2026-01-08 18:01:55 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['北海'] -2026-01-08 18:01:55 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:01:55 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:01:55 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:01:55 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:01:55 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:01:55 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:01:55 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:01:55 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:01:55 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:01:55 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:01:55 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:01:55 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:01:55 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:55 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 18:01:55 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:01:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:01:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:01:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:01:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:01:56 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:01:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:01:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.32秒 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:01:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:01:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:01:57 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:01:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:01:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:01:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:01:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:01:58 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:01:58 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:01:58 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 488 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 488 -> 12 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 12 -> 12 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.main - INFO - 筛选后剩余 12 条公告 -2026-01-08 18:01:58 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 12 条筛选后公告到数据库 -2026-01-08 18:01:58 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:01:58 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 12 条公告) -2026-01-08 18:01:58 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 12, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 476, 'date_filtered': 812, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='北海市政府采购中心关于2026年重要节日环境美化项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 25, 52), purchase_name='北海市城市绿化管理站(北海市园林花卉研究所)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=SM7jGlvjL79NrvOMrvYDvw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 55, 539552), created_at=None, updated_at=None, content_hash='86b3f2889850a78d5816f8a2f6081e79', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司关于2025年预算内拟采购一批医疗设备(BHZC2025-G1-990331-GXKL)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 2), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Bho/ZemL4DcJ/X+GNvL1lQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 55, 938573), created_at=None, updated_at=None, content_hash='dab21e27f24c99ce30669210fd4a6cc5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司 关于2025年预算内拟采购一批医疗设备(HZC2025-G1-990331-GXKL)的中标结果更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 16), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xAfeAI0hGjZz35eXJVkX8A==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 56, 559154), created_at=None, updated_at=None, content_hash='a1177b5b38fdef4b5437b6bd8a3b7746', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于机动车保险服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 33, 16), purchase_name='北海市城市照明管理处', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MoaD7jksnyCGE16Kk//eIA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='fde32ac2aa510884454ef0496f5d5069', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于综合物业的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 30, 5), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5UtBLzfUDl7H4l8YE/g3oQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='087f4839a0f0d1773432ef13e2185d1d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于扫描仪的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 15, 38), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=y43H/9V6wLan8s+f7+zyYw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='0af5214889eb80d144443bc68ed967b5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 14, 36), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=7rZ8R7P3YqNRpPLvSvXNgQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='09dae6fac3a8faea7f1d06c45ed0d8bf', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于触控一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 49), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=RZeX2FbhJmwRN0aBU4KKaw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='a9fb3ce695762f26781f1d423f868a9b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于文件柜的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 3), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=umemg4o5Z7IL76HQ5ipqww==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='c165c0268341661d5c7b57f2f02b876d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于办公桌的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 42, 40), purchase_name='北海市涠洲岛旅游区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GSXQLMfb8y7tqGklZZS/nw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='a2d7eb2b738a7920713b80da23d7e1fc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 39, 8), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bTFrlrRFUQpNkSlWKje0Ow==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 57, 177920), created_at=None, updated_at=None, content_hash='2d65fcba87245854b546210eb2845ba9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='北海市海城区市场监督管理局2026年1月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 51), purchase_name='北海市海城区市场监督管理局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V2GFObMD3mgCSztKkCTIyg==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 1, 58, 354154), created_at=None, updated_at=None, content_hash='57c23a995f5474c346a3a323002a3234', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:01:58 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:01:58 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:01:59 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:02:15 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:02:15 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 北海, user: WeiJueSen -2026-01-08 18:02:15 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['北海'] -2026-01-08 18:02:15 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:02:15 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:02:15 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:02:15 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:02:15 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:02:15 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:02:15 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:02:15 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:02:15 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:02:15 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:02:15 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:02:15 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:02:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:15 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 18:02:15 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:02:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:15 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 18:02:15 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:02:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:02:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:02:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:02:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:02:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.39秒 -2026-01-08 18:02:16 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:02:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:02:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:02:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:02:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:02:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:02:17 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:02:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:02:18 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:02:18 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:02:18 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 488 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 488 -> 12 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 12 -> 12 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.main - INFO - 筛选后剩余 12 条公告 -2026-01-08 18:02:18 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 12 条筛选后公告到数据库 -2026-01-08 18:02:18 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:02:18 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 12 条公告) -2026-01-08 18:02:18 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 12, 'saved': 0, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 476, 'date_filtered': 812, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='北海市政府采购中心关于2026年重要节日环境美化项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 25, 52), purchase_name='北海市城市绿化管理站(北海市园林花卉研究所)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=SM7jGlvjL79NrvOMrvYDvw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 15, 258838), created_at=None, updated_at=None, content_hash='86b3f2889850a78d5816f8a2f6081e79', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司关于2025年预算内拟采购一批医疗设备(BHZC2025-G1-990331-GXKL)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 2), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Bho/ZemL4DcJ/X+GNvL1lQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 15, 601868), created_at=None, updated_at=None, content_hash='dab21e27f24c99ce30669210fd4a6cc5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司 关于2025年预算内拟采购一批医疗设备(HZC2025-G1-990331-GXKL)的中标结果更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 16), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xAfeAI0hGjZz35eXJVkX8A==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 76646), created_at=None, updated_at=None, content_hash='a1177b5b38fdef4b5437b6bd8a3b7746', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于机动车保险服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 33, 16), purchase_name='北海市城市照明管理处', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MoaD7jksnyCGE16Kk//eIA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='fde32ac2aa510884454ef0496f5d5069', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于综合物业的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 30, 5), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5UtBLzfUDl7H4l8YE/g3oQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='087f4839a0f0d1773432ef13e2185d1d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于扫描仪的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 15, 38), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=y43H/9V6wLan8s+f7+zyYw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='0af5214889eb80d144443bc68ed967b5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 14, 36), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=7rZ8R7P3YqNRpPLvSvXNgQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='09dae6fac3a8faea7f1d06c45ed0d8bf', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于触控一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 49), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=RZeX2FbhJmwRN0aBU4KKaw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='a9fb3ce695762f26781f1d423f868a9b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于文件柜的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 3), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=umemg4o5Z7IL76HQ5ipqww==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='c165c0268341661d5c7b57f2f02b876d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于办公桌的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 42, 40), purchase_name='北海市涠洲岛旅游区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GSXQLMfb8y7tqGklZZS/nw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='a2d7eb2b738a7920713b80da23d7e1fc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 39, 8), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bTFrlrRFUQpNkSlWKje0Ow==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 16, 597904), created_at=None, updated_at=None, content_hash='2d65fcba87245854b546210eb2845ba9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='北海市海城区市场监督管理局2026年1月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 51), purchase_name='北海市海城区市场监督管理局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V2GFObMD3mgCSztKkCTIyg==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 2, 17, 910588), created_at=None, updated_at=None, content_hash='57c23a995f5474c346a3a323002a3234', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:02:18 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:02:18 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:02:18 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:03:17 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:03:17 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 北海, user: WeiJueSen -2026-01-08 18:03:17 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['北海'] -2026-01-08 18:03:17 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:03:17 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:03:17 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:03:17 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:03:17 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:03:17 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:03:17 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:03:17 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:03:17 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:03:17 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:03:17 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:03:17 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:03:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.41秒 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:03:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:03:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:03:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:03:48 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:03:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:03:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:03:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:03:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:03:49 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:03:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:03:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:03:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:03:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:03:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:03:50 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:03:50 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:03:50 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:03:50 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:03:51 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 492 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 492 -> 12 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 12 -> 12 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.main - INFO - 筛选后剩余 12 条公告 -2026-01-08 18:03:51 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 12 条筛选后公告到数据库 -2026-01-08 18:03:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:03:51 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 12, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 480, 'date_filtered': 808, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='北海市政府采购中心关于2026年重要节日环境美化项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 25, 52), purchase_name='北海市城市绿化管理站(北海市园林花卉研究所)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=SM7jGlvjL79NrvOMrvYDvw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 17, 844173), created_at=None, updated_at=None, content_hash='86b3f2889850a78d5816f8a2f6081e79', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司关于2025年预算内拟采购一批医疗设备(BHZC2025-G1-990331-GXKL)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 2), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Bho/ZemL4DcJ/X+GNvL1lQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 48, 251919), created_at=None, updated_at=None, content_hash='dab21e27f24c99ce30669210fd4a6cc5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司 关于2025年预算内拟采购一批医疗设备(HZC2025-G1-990331-GXKL)的中标结果更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 16), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xAfeAI0hGjZz35eXJVkX8A==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 48, 731996), created_at=None, updated_at=None, content_hash='a1177b5b38fdef4b5437b6bd8a3b7746', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于机动车保险服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 33, 16), purchase_name='北海市城市照明管理处', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MoaD7jksnyCGE16Kk//eIA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='fde32ac2aa510884454ef0496f5d5069', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于综合物业的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 30, 5), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5UtBLzfUDl7H4l8YE/g3oQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='087f4839a0f0d1773432ef13e2185d1d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于扫描仪的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 15, 38), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=y43H/9V6wLan8s+f7+zyYw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='0af5214889eb80d144443bc68ed967b5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 14, 36), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=7rZ8R7P3YqNRpPLvSvXNgQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='09dae6fac3a8faea7f1d06c45ed0d8bf', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于触控一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 49), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=RZeX2FbhJmwRN0aBU4KKaw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='a9fb3ce695762f26781f1d423f868a9b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于文件柜的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 3), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=umemg4o5Z7IL76HQ5ipqww==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='c165c0268341661d5c7b57f2f02b876d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于办公桌的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 42, 40), purchase_name='北海市涠洲岛旅游区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GSXQLMfb8y7tqGklZZS/nw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='a2d7eb2b738a7920713b80da23d7e1fc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 39, 8), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bTFrlrRFUQpNkSlWKje0Ow==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 49, 412055), created_at=None, updated_at=None, content_hash='2d65fcba87245854b546210eb2845ba9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='北海市海城区市场监督管理局2026年1月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 51), purchase_name='北海市海城区市场监督管理局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V2GFObMD3mgCSztKkCTIyg==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 3, 50, 770160), created_at=None, updated_at=None, content_hash='57c23a995f5474c346a3a323002a3234', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:03:51 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:03:51 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:03:51 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:04:07 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:04:07 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 北海, user: WeiJueSen -2026-01-08 18:04:07 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['北海'] -2026-01-08 18:04:07 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:04:07 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:04:07 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:04:07 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:04:07 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:04:07 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:04:07 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:04:07 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:04:07 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:04:07 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:04:07 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:04:07 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:04:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.39秒 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:04:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:04:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:04:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:04:38 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:04:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:04:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:04:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:04:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:04:39 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:04:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:04:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:04:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:04:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:04:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:04:40 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:04:40 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:04:40 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 493 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 493 -> 12 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 12 -> 12 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.main - INFO - 筛选后剩余 12 条公告 -2026-01-08 18:04:40 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 12 条筛选后公告到数据库 -2026-01-08 18:04:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:04:40 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 12, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 481, 'date_filtered': 807, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='北海市政府采购中心关于2026年重要节日环境美化项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 25, 52), purchase_name='北海市城市绿化管理站(北海市园林花卉研究所)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=SM7jGlvjL79NrvOMrvYDvw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 7, 891998), created_at=None, updated_at=None, content_hash='86b3f2889850a78d5816f8a2f6081e79', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司关于2025年预算内拟采购一批医疗设备(BHZC2025-G1-990331-GXKL)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 2), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Bho/ZemL4DcJ/X+GNvL1lQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 38, 280315), created_at=None, updated_at=None, content_hash='dab21e27f24c99ce30669210fd4a6cc5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司 关于2025年预算内拟采购一批医疗设备(HZC2025-G1-990331-GXKL)的中标结果更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 16), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xAfeAI0hGjZz35eXJVkX8A==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 38, 706605), created_at=None, updated_at=None, content_hash='a1177b5b38fdef4b5437b6bd8a3b7746', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于机动车保险服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 33, 16), purchase_name='北海市城市照明管理处', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MoaD7jksnyCGE16Kk//eIA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='fde32ac2aa510884454ef0496f5d5069', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于综合物业的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 30, 5), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5UtBLzfUDl7H4l8YE/g3oQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='087f4839a0f0d1773432ef13e2185d1d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于扫描仪的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 15, 38), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=y43H/9V6wLan8s+f7+zyYw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='0af5214889eb80d144443bc68ed967b5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 14, 36), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=7rZ8R7P3YqNRpPLvSvXNgQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='09dae6fac3a8faea7f1d06c45ed0d8bf', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于触控一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 49), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=RZeX2FbhJmwRN0aBU4KKaw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='a9fb3ce695762f26781f1d423f868a9b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于文件柜的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 3), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=umemg4o5Z7IL76HQ5ipqww==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='c165c0268341661d5c7b57f2f02b876d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于办公桌的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 42, 40), purchase_name='北海市涠洲岛旅游区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GSXQLMfb8y7tqGklZZS/nw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='a2d7eb2b738a7920713b80da23d7e1fc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 39, 8), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bTFrlrRFUQpNkSlWKje0Ow==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 39, 348073), created_at=None, updated_at=None, content_hash='2d65fcba87245854b546210eb2845ba9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='北海市海城区市场监督管理局2026年1月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 51), purchase_name='北海市海城区市场监督管理局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V2GFObMD3mgCSztKkCTIyg==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 4, 40, 656553), created_at=None, updated_at=None, content_hash='57c23a995f5474c346a3a323002a3234', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:04:40 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:04:41 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:04:41 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:05:39 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:05:39 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 18:05:39 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:05:39 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:06:38 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:06:38 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 18:06:38 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:06:38 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: Tj9VCPhQelvuWEifaomGoeLWmd6Bf5OI74L+h3fQ2XIdBLDrJN... -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 0168abc6bd2488e9a246c9dc741e0df997b32daf -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 0168abc6bd2488e9a246c9dc741e0df997b32daf -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 18:06:42 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 18:06:42 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 18:06:42 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 18:06:42 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:06:42 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:06:42 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:06:42 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:06:42 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:06:42 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:06:42 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:06:42 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:06:42 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:06:42 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:06:42 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:06:42 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:06:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.47秒 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:06:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:06:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:06:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 18:06:43 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:06:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:44 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.33秒 -2026-01-08 18:06:44 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:06:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:44 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 18:06:44 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:06:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:44 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 18:06:44 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:06:45 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:06:45 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:06:46 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 495 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 495 -> 2 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 18:06:46 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 18:06:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:06:46 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 493, 'date_filtered': 805, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 6, 45, 764489), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 6, 45, 764489), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:06:46 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:06:46 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:06:46 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:08:21 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:08:21 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 18:08:21 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:08:21 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: SGwo0/dKOQxlI0qHOLFNAftWNjHbVFFtCu5FgmbyaCrVW4p0sC... -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 7253b31cb26ebaa12fa248e32c9e08a99a5984ac -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 7253b31cb26ebaa12fa248e32c9e08a99a5984ac -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 18:08:48 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen -2026-01-08 18:08:48 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 18:08:48 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 18:08:48 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:08:48 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:08:48 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:08:49 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:08:49 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:08:49 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:08:49 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:08:49 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:08:49 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:08:49 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:08:49 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:08:49 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:08:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:49 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.45秒 -2026-01-08 18:08:49 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:08:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:49 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:08:49 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:08:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:08:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:08:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:08:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:08:50 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:08:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.33秒 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:08:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:08:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:08:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:08:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:08:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:08:51 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:08:52 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:08:52 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:08:52 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:08:52 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 496 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 496 -> 2 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 18:08:52 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 18:08:52 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:08:52 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 494, 'date_filtered': 804, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 8, 51, 997856), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 8, 51, 997856), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:08:52 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:08:52 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:08:52 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: n6jdpv5fOmEnNBbS34l0SwZJM2VINoEZ3ZJ68zp8AtjCaL4QFL... -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 6782a38a9e1b328d720b7c94f35807318728a274 -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 6782a38a9e1b328d720b7c94f35807318728a274 -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 18:09:08 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 北海..., user=WeiJueSen -2026-01-08 18:09:08 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 北海, user: WeiJueSen -2026-01-08 18:09:08 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['北海'] -2026-01-08 18:09:08 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:09:08 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:09:08 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:09:09 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:09:09 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:09:09 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:09:09 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:09:09 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:09:10 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:09:10 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:09:10 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.37秒 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:09:10 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:09:10 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:09:10 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:09:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:09:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:09:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:09:11 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:09:11 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:09:11 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:09:11 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 496 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 496 -> 12 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 12 -> 12 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.main - INFO - 筛选后剩余 12 条公告 -2026-01-08 18:09:11 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 12 条筛选后公告到数据库 -2026-01-08 18:09:11 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:09:11 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 12, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 484, 'date_filtered': 804, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='北海市政府采购中心关于2026年重要节日环境美化项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 25, 52), purchase_name='北海市城市绿化管理站(北海市园林花卉研究所)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=SM7jGlvjL79NrvOMrvYDvw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 8, 771153), created_at=None, updated_at=None, content_hash='86b3f2889850a78d5816f8a2f6081e79', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司关于2025年预算内拟采购一批医疗设备(BHZC2025-G1-990331-GXKL)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 2), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Bho/ZemL4DcJ/X+GNvL1lQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 9, 135064), created_at=None, updated_at=None, content_hash='dab21e27f24c99ce30669210fd4a6cc5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司 关于2025年预算内拟采购一批医疗设备(HZC2025-G1-990331-GXKL)的中标结果更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 16), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xAfeAI0hGjZz35eXJVkX8A==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 9, 653479), created_at=None, updated_at=None, content_hash='a1177b5b38fdef4b5437b6bd8a3b7746', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于机动车保险服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 33, 16), purchase_name='北海市城市照明管理处', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MoaD7jksnyCGE16Kk//eIA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='fde32ac2aa510884454ef0496f5d5069', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于综合物业的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 30, 5), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5UtBLzfUDl7H4l8YE/g3oQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='087f4839a0f0d1773432ef13e2185d1d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于扫描仪的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 15, 38), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=y43H/9V6wLan8s+f7+zyYw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='0af5214889eb80d144443bc68ed967b5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 14, 36), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=7rZ8R7P3YqNRpPLvSvXNgQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='09dae6fac3a8faea7f1d06c45ed0d8bf', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于触控一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 49), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=RZeX2FbhJmwRN0aBU4KKaw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='a9fb3ce695762f26781f1d423f868a9b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于文件柜的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 13, 3), purchase_name='北海市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=umemg4o5Z7IL76HQ5ipqww==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='c165c0268341661d5c7b57f2f02b876d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于办公桌的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 42, 40), purchase_name='北海市涠洲岛旅游区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GSXQLMfb8y7tqGklZZS/nw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='a2d7eb2b738a7920713b80da23d7e1fc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于墨仓式打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 39, 8), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bTFrlrRFUQpNkSlWKje0Ow==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 10, 192747), created_at=None, updated_at=None, content_hash='2d65fcba87245854b546210eb2845ba9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='北海市海城区市场监督管理局2026年1月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 51), purchase_name='北海市海城区市场监督管理局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V2GFObMD3mgCSztKkCTIyg==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 9, 11, 540169), created_at=None, updated_at=None, content_hash='57c23a995f5474c346a3a323002a3234', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:09:12 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:15:31 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:15:31 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen -2026-01-08 18:15:31 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] -2026-01-08 18:15:31 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:15:31 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:15:31 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:15:31 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:15:31 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:15:31 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:15:31 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:15:31 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:15:31 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:15:31 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:15:31 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:15:31 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:16:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:02 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.50秒 -2026-01-08 18:16:02 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:16:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:02 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.31秒 -2026-01-08 18:16:02 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:16:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:16:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:16:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:16:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:16:03 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:16:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.38秒 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:16:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:16:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:16:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:16:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:16:04 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:16:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:05 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:16:05 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:16:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:05 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:16:05 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:16:05 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 503 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 503 -> 2 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 -2026-01-08 18:16:05 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 2 条筛选后公告到数据库 -2026-01-08 18:16:05 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:05 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 501, 'date_filtered': 797, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 16, 5, 24006), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 16, 5, 24006), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:16:05 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:16:05 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:16:05 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: pwcJLxt01s2dA/Uefoh0+K0PdCUNMZUEGW2MFYTTzvARH1osvD... -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: c1ba317c2ecc3f7f4fe21f9437f1d92702d8b6c7 -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: c1ba317c2ecc3f7f4fe21f9437f1d92702d8b6c7 -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 18:16:39 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 七百弄..., user=WeiJueSen -2026-01-08 18:16:39 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 七百弄, user: WeiJueSen -2026-01-08 18:16:39 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['七百弄'] -2026-01-08 18:16:39 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:16:39 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:16:39 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:16:39 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: pwcJLxt01s2dA/Uefoh0+K0PdCUNMZUEGW2MFYTTzvARH1osvD... -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: c1ba317c2ecc3f7f4fe21f9437f1d92702d8b6c7 -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: c1ba317c2ecc3f7f4fe21f9437f1d92702d8b6c7 -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 18:16:44 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 七百弄..., user=WeiJueSen -2026-01-08 18:16:44 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 七百弄, user: WeiJueSen -2026-01-08 18:16:44 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['七百弄'] -2026-01-08 18:16:44 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:16:44 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:16:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.47秒 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:16:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:16:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:16:44 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:16:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:16:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:16:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:16:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 18:16:45 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:16:46 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:16:46 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:16:46 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:16:46 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:16:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:16:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:16:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:16:47 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 506 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 506 -> 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 0 -> 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 18:16:47 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': False, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 506, 'date_filtered': 794, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 18:17:16 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:17:16 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 18:17:16 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:17:16 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 9xmCNXwiUIzeGfgOF3uX5z3p8yYYTuvn/lK3dB8y7f8hhPMuoy... -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 05f12c60a86ed24aa57421d6affb8ca649ff8495 -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 05f12c60a86ed24aa57421d6affb8ca649ff8495 -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 18:17:21 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 七百弄..., user=WeiJueSen -2026-01-08 18:17:21 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 七百弄, user: WeiJueSen -2026-01-08 18:17:21 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['七百弄'] -2026-01-08 18:17:21 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:17:21 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:17:21 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:17:21 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:17:21 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:17:21 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:17:21 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:17:21 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:17:21 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:17:21 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:17:21 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:17:21 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:17:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:21 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 18:17:21 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:17:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:17:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:17:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:17:22 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:17:22 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:17:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.33秒 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:17:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.32秒 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:17:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:17:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:17:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:17:23 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:17:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:24 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:17:24 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:17:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:24 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:17:24 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:17:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:17:24 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:17:24 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:17:24 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 506 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 506 -> 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 0 -> 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 18:17:24 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': False, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 506, 'date_filtered': 794, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 18:17:24 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:17:24 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:17:24 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:06 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 18:21:06 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 广西, user: WeiJueSen -2026-01-08 18:21:06 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['广西'] -2026-01-08 18:21:06 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:21:06 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:21:06 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:21:07 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:21:07 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:21:07 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:21:07 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:21:07 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:21:07 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:21:07 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:21:07 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:21:07 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:21:37 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:37 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.49秒 -2026-01-08 18:21:37 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:21:37 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:37 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:21:37 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:21:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:21:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:21:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:21:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:21:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 18:21:38 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:21:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:21:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:21:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:21:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:21:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:21:39 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:21:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:21:40 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:21:40 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:21:40 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 511 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 511 -> 194 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 194 -> 194 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.main - INFO - 筛选后剩余 194 条公告 -2026-01-08 18:21:40 - gx_gp_monitor.storage.postgresql - INFO - 开始保存 194 条筛选后公告到数据库 -2026-01-08 18:21:40 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:21:40 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 194, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 317, 'date_filtered': 789, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西首顺工程项目管理有限公司田东县2025年部分市政道路、公园广场园林绿化临时管护工程(项目编号:BSZC2026-C2-220002-GXSS)竞争性磋商公告(远程异地评标)', publish_date=datetime.datetime(2026, 1, 8, 17, 50, 23), purchase_name='田东县住房和城乡建设局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=snrjviWFtNntgcwlmVG2Ig==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='62d019272b86870be146efbd1190893e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西诚华工程造价咨询有限公司关于那坡县2025年国家绿色高产高效行动项目——智慧蚕房控制后台、蚕房病害监测点建设的竞争性磋商公告(远程异地评标)', publish_date=datetime.datetime(2026, 1, 8, 17, 47, 46), purchase_name='那坡县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ihKSWhm18w8FSalDr00xKA==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='8c82b3f3b8274cf67f2199a836a624ed', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西机电设备招标有限公司关于上林县人民医院中央空调、洁净空调系统及分体式空调维保项目(重)(NNZC2026-C3-250001-JDZB)竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 28, 16), purchase_name='上林县人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=CqCzioM/M0o1li97sNe3pg==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='3ab281f14a06ce9fc6e78bcd431f5f1e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西浩业工程咨询有限公司关于广西现代职业技术学院“两体展示中心”建设竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 21, 48), purchase_name='广西现代职业技术学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5I+woCf7KVhmeJLjQYTRng==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='212de5f059a8565753a01e151af838ac', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司防城港市中医医院2025年第二批医疗设备(FCZC2026-J1-990001-GXKL)竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 53), purchase_name='防城港市中医医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ks5whtL6bHHTtoe3CqKoIg==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='ca1c48895b289bba95099aa30e687b82', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西达成咨询有限公司关于桂林理工大学雁山校区5#研究生宿舍附属配套设施工程【项目编号:GXZC2026-C2-000037-GXDC】竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 17, 9, 24), purchase_name='桂林理工大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=vo2xjcJBnx/mYp37Ztsg5w==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='fd243099800ba7ff74720d05c0279f42', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西冠宁工程咨询有限公司关于马山县电子政务外网三期线路(Ⅰ、Ⅱ标段)租用及部分设备采购项目(NNZC2025-G3-240246-GXGN)的公开招标公告', publish_date=datetime.datetime(2026, 1, 8, 17, 2, 2), purchase_name='马山县发展改革和科学技术局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=IVQHWJOUEjNGviHDAzZPDg==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='877ff60328ce14c5a11c30bc8422681e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西中诺工程管理有限公司关于玉林市第一人民医院肿瘤专业医疗质量控制管理平台采购项目(重2)的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 16, 40, 56), purchase_name='玉林市第一人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Z4uuyvOrNuS+HKR+mm0eEw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='307f4c3c52f32f0b43c5758b2fa51391', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西金松工程管理有限公司关于容县自良镇第二中心幼儿园保教综合楼的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 16, 30, 37), purchase_name='容县自良镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=wgL0yonAFB6PT5ScnNl7xA==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='e38a41b2dcedf676fb9cb5cc7801bf6d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西瀚凌工程咨询有限责任公司关于岑溪市人民医院信创超融合升级扩容服务项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 16, 22, 45), purchase_name='岑溪市人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=lsu80Wm6bRakJKo2Upa+Cg==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='89f45c6ef654a9c37e99d4ce61d02b19', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西冠宁工程咨询有限公司关于陆川县2025年大中型水库移民后期扶持资金及中央水库移民扶持基金结存资金(7个)项目工程(重)的竞争性谈判公告', publish_date=datetime.datetime(2026, 1, 8, 16, 18, 51), purchase_name='陆川县生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o8p/y4yBDZUDSOqSoVt0iQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='fd99dcbc0397348f038ce28a8973fbd0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西泓鑫工程咨询有限公司关于兴业县2025年度中小学教师继续教育全员培训的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 15, 44, 40), purchase_name='兴业县教育局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=oO8wOojCE3OSiNXu0YNFZw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='46b9866eed6cc7606bf16f65f90c253a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西机电设备招标有限公司关于平陆运河经济带(南宁)临港产业发展规划(重)(NNZC2026-C3-990010-JDZB)竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 15, 35, 26), purchase_name='南宁市工业和信息化局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Iv49TToyfqinKNo6bsiZjQ==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='a9e91f7b74a847b71fbb12c80168d1c7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西龙建工程管理有限公司关于仁东至黑石岭公路K3+560-K5+105段水泥路面修复工程的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 15, 7, 16), purchase_name='玉林市玉州区交通运输局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=K9b6uZLtfbuMJCYgwPn0Gg==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='e0e695303df8c324b5d6d1436a7aca5e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西梦溪工程咨询有限公司关于大伦镇玉塘村库建组基础建设项目的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 11, 33, 9), purchase_name='北流市生态移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=0LwSnPA5qL20Oc1fE0BOhA==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='d301c538ae636094cb80c0d57920be0a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西易通工程咨询有限公司关于艾滋病相关系统商用密码设备(系统)采购项目(重)的公开招标公告', publish_date=datetime.datetime(2026, 1, 8, 11, 20, 5), purchase_name='南宁市疾病预防控制中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=OPa9es9ploWv4B04j05H9g==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='059a0e44e6dd7598df402f7976e67ed9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西百强工程咨询有限公司关于贵港市港南区2025年城市危旧房改造(木梓镇食品公司宿合楼)项目(项目编号:GGZC2026-C2-030002-BQZX)竞争性磋商采购公告', publish_date=datetime.datetime(2026, 1, 8, 11, 10, 24), purchase_name='贵港市港南区木梓镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=DL3S8AJVbjMI9Awwq/RoEA==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='4a93772197f85b701b1b0f4516558a1c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西浩港工程项目管理有限公司关于贵港市港南区人民政府机关车队公务车用汽油、柴油3年的竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 10, 4, 25), purchase_name='贵港市港南区直属机关后勤服务中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=WtJWUpfUej9yPzmIRx49Mw==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='5fc6bb9865fd929d6267943ea01938f4', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建通工程咨询有限责任公司关于隆安县人民医院检验标本外送第三方检测服务(项目编号:NNZC2025-C3-230121-GXJT)竞争性磋商公告', publish_date=datetime.datetime(2026, 1, 8, 9, 54, 32), purchase_name='隆安县人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xnNq6gLWpyGhJ43P/w4XaA==', source_code='ZcyAnnouncement1', source_name='采购公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 7, 109374), created_at=None, updated_at=None, content_hash='9a295945ef0aad7b283e9dab34301bee', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='云之龙咨询集团有限公司广西重点边境地区森林防灭火装备购置项目02分标-运兵车(GXZC2025-G1-003670-YZLZ)中标公告', publish_date=datetime.datetime(2026, 1, 8, 18, 3, 29), purchase_name='广西壮族自治区应急救援中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=eog8uNaAsNDYf+9PJbzsAA==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='48499aaa07bad2d0183ba1c55f22df00', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西机电设备招标有限公司关隆林各族自治县各老寨大交威无主矿渣区域水文地质调查编制服务(BSZC2025-C3-310167-JDZB )的成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 53, 46), purchase_name='隆林各族自治县水利局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=K7hOjhskbFFdi9yZLPe+bg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='79ca5d5931045adde8815f5f3b3d361c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西国泰招标咨询有限公司关于融水苗族自治县和睦镇读楼村人饮工程(LZZC2025-C2-250082-GTZB)的成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 31, 54), purchase_name='融水苗族自治县财政局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=9TtGsVznvscr6fgjnEgW/A==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='cc89430ad83118a432c655130f60ebf7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西机电设备招标有限公司关于南溪山医院达芬奇手术机器人手术专用器械及耗材项目 (GXZC2025-G1-003848-JDZB)流标公告', publish_date=datetime.datetime(2026, 1, 8, 17, 20, 4), purchase_name='广西壮族自治区南溪山医院(广西壮族自治区第二人民医院)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=h3kCNg85H9+N2xLd9EECKQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='57dad7d3a9e970209012d3787996da41', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司关于2025年预算内拟采购一批医疗设备(BHZC2025-G1-990331-GXKL)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 2), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Bho/ZemL4DcJ/X+GNvL1lQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='dab21e27f24c99ce30669210fd4a6cc5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建采项目管理有限公司关于广西黄姚古镇旅游文化产业区医院项目监控设施设备采购安装项目(第二次)(HZZC2026-J1-990001-JCXM)成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 17, 11, 17), purchase_name='贺州市中医医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=h85wiXaFyfjfzNrd0PkVqg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='692cdc18e838888426a679ef7ec935d1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西阳光采购服务有限公司关于西乡塘区糖料蔗种苗繁育标准化基地建设项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 17, 10, 40), purchase_name='南宁市西乡塘区农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=UfBGDq7DGmd+4HKt+rIo8A==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='eabdf23f546b3106df6ceebfb78f74c0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建设工程机电设备招标中心有限公司关于电子卡式证件制证耗材及制证设备维护采购项目的终止公告', publish_date=datetime.datetime(2026, 1, 8, 16, 54, 17), purchase_name='广西壮族自治区公安厅证件制作中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=z/sSfkOVLKT1npjuSNDd1g==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='a8d243cd2890aaeab9cee979c2606dcb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西鸿锦工程咨询有限公司关于广西北流河防洪治理工程可行性研究报告及有关专题编制中标公告', publish_date=datetime.datetime(2026, 1, 8, 16, 34, 14), purchase_name='玉林市水利局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=QotCz2T071WHrjsTRxd95w==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='eb96cc2988dbb9881161bae4a26f8f40', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西长盛工程咨询有限公司关于武宣县2025年采购绿色电力证书项目废标公告', publish_date=datetime.datetime(2026, 1, 8, 16, 31, 15), purchase_name='武宣县发展和改革局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=a7SgMMRj4zwovNgjh9tuHA==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='6b801bf7e1aaa4821499d7d9445f3789', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西凯杰工程咨询有限公司关于贵港市博物馆2026年物业服务(项目编号:GGZC2025-C3-990355-GXKJ)成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 16, 29, 59), purchase_name='贵港市博物馆', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=qrwETuQen2Vet3TK7aFYHA==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='417f74b8f57fb73b1b8977013d4c4551', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西景钲工程咨询有限公司关于柳州市社会福利医院全自动生化分析仪采购项目(LZZC2025-G1-991063-GXJZ)废标公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 56), purchase_name='柳州市社会福利医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=1TaGmbX0X839dlUR7vKVFQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='cb03c8942bd4f1f29556a1c201f9ddd1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西泰佳禾项目管理有限公司 关于钟山县住房和城乡建设局修缮改造工程(项目编号:HZZC2025-C2-220146-GXTJ) 成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 16, 25, 25), purchase_name='钟山县住房和城乡建设局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Yh/YPt6GH+nyXG5mRVPzJg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='bdd1633a55315546cdec03dd8b46f4ed', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西机电设备招标有限公司关于广州市妇女儿童医疗中心柳州医院后勤保障及辅助医疗服务采购项目(LZZC2025-G3-991079-JDZB)结果公告', publish_date=datetime.datetime(2026, 1, 8, 16, 14, 5), purchase_name='广州市妇女儿童医疗中心柳州医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5a7DCv6k21YJ6gfrmX6Xcg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='355be0dbb31e13755a1cfec06b683831', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西友有招标代理有限公司关于边境地区乡镇卫生院能力提升项目 (项目编号:CZZC2025-C2-810103-YYZB)的成交公告', publish_date=datetime.datetime(2026, 1, 8, 16, 13, 46), purchase_name='凭祥市夏石镇中心卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=NTKpS4pLmA+D1mXUYnDBgw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='cd71ab1f3cb94597bc6ec3fecba15188', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西千信项目管理有限公司关于柳城县公安局电子警察一期前端改造及网络服务项目(LZZC2025-C3-220101-QXXM)成交公告', publish_date=datetime.datetime(2026, 1, 8, 16, 13, 5), purchase_name='柳城县公安局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=+dtcK/w5kaxorB9x2cCf6A==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='ac3ec4216179ad067a5d9ce8f7f8073f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西鑫远工程项目管理有限公司关于覃塘区人民医院医疗设备采购(项目编号:GGZC2025-J1-040199-GXXY) 成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 16, 11, 9), purchase_name='贵港市覃塘区人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=AIw9AaXjSpwuZXOohqEmvQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='e3848bd0a182775e46c3cadeb8e7b0ed', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西桂春工程项目管理咨询有限公司关于陆川县乌石镇坡脚小学教师周转宿舍成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 21, 8), purchase_name='陆川县乌石镇中心学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KiJbK1h89xTREA1nqCdLNQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='8aae231087da4f7e8ebf89d2551fb5e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西龙建工程管理有限公司关于排榜至西岸公路K2+405-K4+514段水泥路面修复养护工程成交公告', publish_date=datetime.datetime(2026, 1, 8, 15, 16, 26), purchase_name='玉林市玉州区交通运输局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=iwSiGxNi3ZLZf/46yH7Z0w==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='dc717f297f1df813f5a76032d14ffffc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区政府采购中心关于2026年度财政票据印刷服务采购(GXZC2025-G3-003503-CGZX)中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 15, 0, 10), purchase_name='广西壮族自治区财政厅票据管理中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=/juLPiLVi3qefMT393Np5w==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='99e2cb478b4471615f175bd8f8a09089', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区政府采购中心关于2025年—2027年度《学苑创造》《广西教育》印刷服务采购(GXZC2025-G3-003830-CGZX)中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 15, 0, 2), purchase_name='广西教育杂志社', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=TqmAHLf6UQrF8t882OP4Ow==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='d532e30d859350ea935d28742a9f58f9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西同泽工程项目管理股份有限公司关于柳州市社会福利医院全自动化学发光免疫分析仪项目(LZZC2025-G1-990979-GXTZ)废标公告', publish_date=datetime.datetime(2026, 1, 8, 14, 37, 15), purchase_name='柳州市社会福利医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=34VPbBQbXVW8+alH9tfFIA==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='e12c1897a8312aef0c08dc3cf9c2f28e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建兴工程项目管理有限公司关于鹿寨县行政中心办公大楼既有建筑节能降碳改造项目(LZZC2025-C3-230100-GXJX)成交公告', publish_date=datetime.datetime(2026, 1, 8, 14, 22, 3), purchase_name='鹿寨县机关后勤服务中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aH/Ai61ueXuidh/jRYdCjg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='d08e5e6659f5264ccfecde785bb8f0e1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西北部湾佰亿招标造价咨询有限公司关于环江毛南族自治县2026年至2028年中小学、幼儿园成品食品及食品原材料供应商采购(项目编号:HCZC2025-G3-260185-GXBB)中标公告', publish_date=datetime.datetime(2026, 1, 8, 13, 0, 48), purchase_name='广西河池市环江毛南族自治县教育局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=v0eDO4NyrQY+sWS8jLA+fg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='5127760bf4ec5ef1dcc59f2b65086d30', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西润乐项目管理咨询有限公司关于岑溪市各镇革命烈士纪念设施修缮提升项目(项目编号:WZZC2025-C2-810183-GXRL)成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 11, 42, 8), purchase_name='岑溪市退役军人事务局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=/ngGba4u8zXpoXFAXoBveg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='0305a559e312e710132a9d838e9b49ab', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西德元工程项目管理有限责任公司关于广西医科大学第一附属医院放射性药品配送服务项目(重)(GXZC2025-G3-003866-GXDY)的中标结果公告', publish_date=datetime.datetime(2026, 1, 8, 11, 40, 58), purchase_name='广西医科大学第一附属医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=INv9bzn+tFWa6bM169gZRg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='e48f1c1036fcd883e4cd202e5a37083b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西德承工程项目管理有限公司关于北流市2024年永久基本农田储备区划定工作废标公告', publish_date=datetime.datetime(2026, 1, 8, 11, 37, 37), purchase_name='北流市自然资源局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ksnnzaWY/WKSldG3fjanbg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='1fbd63617d8e340bfb78859659576179', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西锦盛工程咨询有限公司关于2025年忻城县高标准农田建设项目(城关镇江平村、 泮水村、六华村,果遂镇果遂社区、花红村,红渡镇古钵村,遂意乡联堡村,古蓬镇龙利村,欧洞乡林况村、欧洞村、里苗村、安东乡桃源村)地力提升工程成交公告', publish_date=datetime.datetime(2026, 1, 8, 11, 18, 34), purchase_name='忻城县农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=M/yAJScmgBGq5ll1v5N2Lg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='20d2ab2580efc7d5a86f6a643a32a1f6', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西万丰项目管理有限公司关于靖西烈士陵园挡土墙改建项目(一期)成交公告', publish_date=datetime.datetime(2026, 1, 8, 10, 55, 51), purchase_name='靖西市退役军人事务局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=gJmISkYGnug10GHM9w62Cg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='d323f004aa2b06a9c25adcced058bc02', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西国伟工程咨询有限公司关于都安瑶族自治县安阳镇第一小学教学楼工程加层建设项目的成交公告', publish_date=datetime.datetime(2026, 1, 8, 10, 38, 50), purchase_name='都安瑶族自治县教育局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=yoeHpqhkFqUiegfz/DxFrQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='61e904a3e91e4fc5b281fe81de65e9b2', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西德胜工程项目管理有限公司关于电脑控制体外循环人工心肺机系统(GXZC2025-J1-004003-DSGS)成交结果公告', publish_date=datetime.datetime(2026, 1, 8, 10, 33, 21), purchase_name='广西医科大学第一附属医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=6E7P55HvJ3nGfsteEhHYDg==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='7baf2b8ccead686bad6eb3159d808537', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='华采招标集团有限公司关于流式细胞仪采购成交公告', publish_date=datetime.datetime(2026, 1, 8, 10, 25, 31), purchase_name='广西医科大学第一附属医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5Q+/n8EcGcDx2CASiiobZA==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='1bc2955201c6052e8557dc1f7527c4c0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西国伟工程咨询有限公司关于都安安阳巴谭大巴独石灰岩矿安全隐患治理产生石料搬运的成交公告', publish_date=datetime.datetime(2026, 1, 8, 10, 7, 50), purchase_name='都安瑶族自治县自然资源局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=6zXaQn9yMhhsARDbCnG5iQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='1bd3923ef2deb70d862bf217d26f3b2a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西汉方工程管理有限公司关于陆川县古城镇第二初级中学教师周转宿舍项目成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 6), purchase_name='陆川县古城镇第二初级中学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=85WTeIN/+yQILxd0NO+8Pw==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='94d801868d542fd806b20f23b04d7a6f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西中佰项目管理有限公司关于浦北县北通镇中屯小学教学综合楼扩建项目(重)(QZZC2025-C2-220274-GXZB)成交公告', publish_date=datetime.datetime(2026, 1, 8, 9, 29, 20), purchase_name='浦北县北通镇中屯小学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=oy28BeUHO5sOJ5hgpv4liQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='a1f751466c8da3eca3d44fce4de8442a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西永坚工程咨询有限公司关于2026年玉林市12345政务服务便民热线运行项目中标公告', publish_date=datetime.datetime(2026, 1, 8, 9, 26, 13), purchase_name='玉林市大数据发展和政务服务局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MQopGWmVYdQoqdeygoVYaQ==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='c343b46974949fa35ea965a20ea032eb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西顺途工程咨询有限责任公司关于2025年南宁市江南区干部职工健康体检项目(NNZC2025-G3-050091-GXST)废标公告', publish_date=datetime.datetime(2026, 1, 8, 9, 17, 49), purchase_name='南宁市江南区卫生健康局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xw2YEjmoZ22bZpfFPu3L+Q==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='3c770cd77dc7e865cb9b6eec6c66ff6a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西翔正项目管理有限公司关于南宁市武鸣区现代农业产业园沃柑品质与品牌提升项目(项目编号:NNZC2025-G3-100133-GXXZ)中标公告', publish_date=datetime.datetime(2026, 1, 8, 9, 11, 47), purchase_name='南宁市武鸣区农业农村局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=laGQ3LMzEdc7vpiJbDi79w==', source_code='ZcyAnnouncement2', source_name='结果公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 603353), created_at=None, updated_at=None, content_hash='6a315fd8f5cc218090b17e1ac3947b71', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='第三方医学检测机构合作服务项目(标项三)合同书公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17), purchase_name='广西国际壮医医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Zb7h4eUIaoSIE1wUDz+8XQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='0c62e995875929cb3489b9427bdd6996', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区江滨医院病房改造提升项目前期工作(GXZC2025-C3-003620-JDZB)合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 14, 30), purchase_name='广西壮族自治区江滨医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jiMlHGh4Q9mLGGUjVAZz7g==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='3d5caa5c4dc40359e3f3b8ff6b3df5f2', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='第三方医学检测机构合作服务项目(标项二)合同书公告', publish_date=datetime.datetime(2026, 1, 8, 17, 2, 8), purchase_name='广西国际壮医医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=tRMHTiuKZOJ1NWi4pY4QNw==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='6ee8a84bd0e6affefb4eecf83a4b269d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='自然资源厅五象新区地理信息小镇(一期)1号楼物业服务采购合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 59, 5), purchase_name='广西壮族自治区自然资源厅机关服务中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=j1HZKzh9W/UQYUTLO8BKHQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='2ae4962d0379ca8f22c04ad9b70fa238', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='第三方医学检测机构合作服务项目(标项一)合同书公告', publish_date=datetime.datetime(2026, 1, 8, 16, 54, 34), purchase_name='广西国际壮医医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=wmZzfEOLDnlakGeoaMkP4Q==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='7cc06fbd5a814a428b51813f23019526', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区人民医院小家电供应及配送服务项目(GXZC2025-C3-003629-JDZB)合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 43), purchase_name='广西壮族自治区人民医院(广西医学科学院、广西壮族自治区救援医学临床医疗中心)', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=bcQ5QE1ig4nmJduHsD3QbQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='63d4f07d06cff51794544b51236a16d1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西防止返贫致贫监测帮扶信息系统智能化基础设施服务项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 14, 32), purchase_name='广西壮族自治区乡村振兴外资项目发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=TrRDzaZfL4NZLIxEQX83Zw==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='c16adbc71c2a71bac68b1df49a436391', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西交通运输治超联网系统平台服务采购项目升级建设项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 11, 30), purchase_name='广西壮族自治区交通运输厅本级', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=1qVpEyA139UCfatgvmv8Ow==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='ce880080948f117ffaa51d68569b7558', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='专业知识图谱(未来学习中心)和智慧课程建设服务采购合同公告', publish_date=datetime.datetime(2026, 1, 8, 15, 10, 49), purchase_name='广西师范大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=NlbOZu37fBV1qgYlBFUrtQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='d00e22f6d54fc497df0da7bc6693c76a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='数据标注产业服务实践基地建设项目(重)(GXZC2025-J1-003913-KWZB)合同公告', publish_date=datetime.datetime(2026, 1, 8, 12, 5, 38), purchase_name='广西幼儿师范高等专科学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ArezplpciM/9h5E2E2roGQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='df35e8955863cf79352b7fb0874634b3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西民族大学续订中国知网(CNKI)系列数据库(资源总库)等电子资源数据库共25个项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 11, 47, 58), purchase_name='广西民族大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Dx6Sd3FGLI8c+ohizGlI1Q==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='9533a458b70482eadcd8386d8cf6207f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西红柳江水系重点中小河流防洪治理项目(柳江)来宾市象州县运江镇新运村至县城区牛角洲河段及石龙镇河段治理工程可行性研究阶段勘察设计服务合同公告', publish_date=datetime.datetime(2026, 1, 8, 11, 36, 55), purchase_name='象州县水利局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jtWqgns8+m7lXNVuGZFnMg==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='289f03ea9afedc6305d3eb11822f8073', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西百色干部学院2026年电信业务综合通信服务项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 11, 2, 59), purchase_name='广西百色干部学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ieyzOi2hlFjvZv4p/tRRuQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='6b28f5b5cf81ef0efa03646b8e207f0c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西民族大学续订中国知网(CNKI)系列数据库(资源总库)等电子资源数据库共25个项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 10, 27, 21), purchase_name='广西民族大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=oRq2jtCOxXwmGLV5M/4QoA==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='efec01d9782b5fae1d48efc42256e65b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西民族大学续订中国知网(CNKI)系列数据库(资源总库)等电子资源数据库共25个项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 10, 11, 3), purchase_name='广西民族大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V1vN6gxFfzaseJgtT4i1mQ==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='cf139225e1bf8c762609248e59a63c00', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区玉林市防火应急道路建设项目监理服务合同公告', publish_date=datetime.datetime(2026, 1, 8, 9, 39), purchase_name='玉林市林业局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=dhhQ7Roknm1cEzj7PsQI4A==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='0416931cae34a4a64d3abf8a11051c8e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西交通运输治超联网系统平台服务采购项目升级建设项目(分标2重)合同公告', publish_date=datetime.datetime(2026, 1, 8, 9, 29, 50), purchase_name='广西壮族自治区交通运输厅本级', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5qsPE40/WirdOWMMlmB0eA==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='712c83f2750256d099d57cfe9df2ad6e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西国土空间规划实施监测网络建设试点项目合同公告', publish_date=datetime.datetime(2026, 1, 8, 8, 59, 9), purchase_name='广西壮族自治区自然资源厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=RfFyhvTJqagnpZ+3Tl0EHw==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='c0f03e02a9d9219a6228daef1f681768', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='2025年国产双价人乳头瘤病毒疫苗采购合同公告', publish_date=datetime.datetime(2026, 1, 8, 8, 37, 48), purchase_name='广西壮族自治区疾病预防控制中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=r/m2ZmRdOzEVDZD/FuNONw==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='8520d4f65d3d5a77dd26e834b5fcbe74', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西第一强制隔离戒毒所迁建项目及附属工程项目室外配套工程合同公示(项目编号:E4500002802005428001)', publish_date=datetime.datetime(2026, 1, 8, 8, 25, 10), purchase_name='广西壮族自治区第一强制隔离戒毒所', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=25zWVEAXSR8LfUAv5TG5uA==', source_code='ZcyAnnouncement3', source_name='合同公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 37, 781541), created_at=None, updated_at=None, content_hash='e8a30a06c3f873a83a0a7d449167bfc8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西科联招标中心有限公司 关于2025年预算内拟采购一批医疗设备(HZC2025-G1-990331-GXKL)的中标结果更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 16), purchase_name='北海市第二人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xAfeAI0hGjZz35eXJVkX8A==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='a1177b5b38fdef4b5437b6bd8a3b7746', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建隆工程咨询有限公司关于中心机房冷通道、AI智慧体测与阳光跑建设项目(项目编号:GXZC2025-G1-003159-GXJL)更正公告(六)', publish_date=datetime.datetime(2026, 1, 8, 17, 34, 44), purchase_name='广西国际商务职业技术学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=wWc87ph7N11rmKX4OrBFvg==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='25b7f680343cb1508297da17351f23a6', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西创建项目咨询有限公司关于岑溪市人民医院采购人工智能影像辅助诊断系统的更正公告', publish_date=datetime.datetime(2026, 1, 8, 17, 29, 42), purchase_name='岑溪市人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=cDqMNkWR6JxNoaKDZNrQKw==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='df1051a3fe26f162cfd79671416c1833', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西洪玮工程咨询有限公司关于贺州市图书馆新馆一楼功能空间工程建设项目(项目编号:HZZC2025-C2-990329-GXHW)更正公告', publish_date=datetime.datetime(2026, 1, 8, 16, 54, 59), purchase_name='贺州市图书馆', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=garNBZA8DrOWxX+gjtou5g==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='c45c5b1370d7bca689a859911ddd609c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西兴茂工程管理有限公司关于广西华侨博物馆陈列布展(一层)设计施工一体化项目的更正公告', publish_date=datetime.datetime(2026, 1, 8, 16, 26, 54), purchase_name='容县文体广电和旅游局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=3ihj7bxsrzWyFYfnOafMrA==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='4bf9715f0aeaee8cb44a07882c8dbad7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西安臻工程管理有限公司关于荔浦市公安局信息化货物采购项目(GLZC2025-G1-310066-GXAZ )的澄清公告一', publish_date=datetime.datetime(2026, 1, 8, 15, 41, 58), purchase_name='荔浦市公安局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ToFTFPQ9VjCDl5aQZe5h/Q==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='1671881505221ae4c1170917aaab581a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西大成项目咨询有限公司关于崇左市中级人民法院2025年两级法院集约化送达外包服务采购的更正公告', publish_date=datetime.datetime(2026, 1, 8, 12, 8, 43), purchase_name='广西壮族自治区崇左市中级人民法院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Uq/TSw780yK+yyjWuta8XA==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='6cf8eba2f45b4bf6ec52cf0a27c71214', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西唯琪工程项目管理有限公司关于广西钦州市浦北县金康水库中型灌区建设工程的更正公告', publish_date=datetime.datetime(2026, 1, 8, 11, 37, 14), purchase_name='浦北县水利局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Asyh8NQkqXr9lXV5wKSumA==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='5c0647d0842e698e1134e045ca27e20b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西北投建信建设项目管理有限公司关于2025年强基计划实训室建设项目采购(项目编号:FCZC2025-J1-990207-GXJX)更正公告(一)', publish_date=datetime.datetime(2026, 1, 8, 11, 13, 34), purchase_name='防城港职业技术学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=S7B7y+tmef6PpVXp4Stfxw==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='3a3a1cf1f778d3712f0d1e36e4f61f3c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西嘉达工程咨询管理有限公司关于宾阳县建成区排水管网病害整治工程(二期)初步设计编制及概算服务的更正公告', publish_date=datetime.datetime(2026, 1, 8, 11, 9, 9), purchase_name='宾阳县住房和城乡建设局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=IzeCaNEmG7k7/IKr4olXXg==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='9fb3e00a9f12e4e96bd1bfc3fff8d18e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西创建项目咨询有限公司关于岑溪市人民医院采购人工智能影像辅助诊断系统的更正公告', publish_date=datetime.datetime(2026, 1, 8, 10, 41, 20), purchase_name='岑溪市人民医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=S5S8wMMRYZHvzbshRNmkuQ==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='319f19535a83664e9548fb405c71b48c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西云凯工程咨询有限公司关于来宾市兴宾区应急管理局采购4辆消防车项目的更正公告(一)', publish_date=datetime.datetime(2026, 1, 8, 9, 23, 13), purchase_name='来宾市兴宾区应急管理局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=YydqskcoFhgoJu7PQbUcdg==', source_code='ZcyAnnouncement4', source_name='更正公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 33356), created_at=None, updated_at=None, content_hash='fbbfad5a4ca3d5e49a449c2acd8ab310', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西元强建设项目管理有限公司关于医疗设备维修保养服务 (QZZC2025-G3-220276-GXYQ)公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 17, 56, 37), purchase_name='', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=50VKskHVd/AiigmUSaIKpA==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='dfe23eb4b62e8fcc29cc418673ce77cc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建能建设工程咨询有限公司 陆川县良田镇榕木垌遗留危险废物(铝灰渣)处置项目(项目编号:YLZC2026-G3-220004-GXJN )公开招标文件预公示(重)', publish_date=datetime.datetime(2026, 1, 8, 17, 46, 16), purchase_name='陆川县经济贸易和科学技术局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=67LkQW2S+P3h863ZGYn80g==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='bcefd3abd49e7b88e66bc040c1ec0dae', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建能建设工程咨询有限公司 陆川县良田镇榕木垌遗留危险废物(铝灰渣)处置项目(项目编号:YLZC2026-G3-220004-GXJN )公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 17, 29, 6), purchase_name='陆川县经济贸易和科学技术局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=FSk1Pq+4RfigbpiL9kAYyQ==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='5079b5abbd574f30a5c59c43ea58650d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西莲诺工程管理有限公司关于彩色多普勒超声诊断仪YLZC2026-G1-990006-GXLN公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 16, 30, 33), purchase_name='玉林市红十字会医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=n+C2q7lBj40YyGEwHrtKoA==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='d79cef7eaeefb01b0fb8d13ccbf82ce0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西建设工程机电设备招标中心有限公司关于厅机关后勤保障服务采购项目【项目编号:GXZC2026-G3-000014-JGJD】 公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 16, 8, 43), purchase_name='广西壮族自治区公安厅机关服务中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KZ29wPkmvv9LLSjaUePEPw==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='96fb79858881575f3270336234fdd97f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西大德项目管理有限公司关于柳州市妇幼保健院后勤保障及辅助医疗服务项目(LZZC2025-G3-991115-GXDD)公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 15, 24, 34), purchase_name='柳州市妇幼保健院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=iuOYZqxjlTsjluQWShkuIA==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='777eafcc6033a45ad8cdf3d588213b71', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西国力招标有限公司关于广西涉重地区县级及以上饮用水水源地供水保障安全调查评估(GXZC2026-G3-000010-GLZB)的公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 15, 15), purchase_name='广西壮族自治区水利厅本级', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ne6l7g6OgZ5ZwjvLC5/MAQ==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='0d976fc1771ab384f5ad8a1946f43aec', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西国力招标有限公司关于广西重点流域涉重金属水质异常事件水量应急调度方案(GXZC2026-G3-000011-GLZB)的公开招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 15, 14, 47), purchase_name='广西壮族自治区水利厅本级', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jCD7aJFf10f7hGFkSlgkAA==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='8c7da7988edecd748dca77a38a825431', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='祥浩工程造价咨询有限责任公司关于广西亚热带农科新城边界围墙建设项目招标文件预公示', publish_date=datetime.datetime(2026, 1, 8, 11, 56, 12), purchase_name='', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=OL2BgGDjkEOjHRiv2q3YWA==', source_code='ZcyAnnouncement5', source_name='招标文件预公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 224000), created_at=None, updated_at=None, content_hash='f368a8f625c14b4a0268e8f6ed4805d9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 18, 19, 43), purchase_name='广西大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=EqDt1c6GNTCXlWtlJ3HQ0A==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='77523b10b41af26fdc5d3fa6d660f7ff', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西凭祥综合保税区园区互联网链路租赁采购竞价公告', publish_date=datetime.datetime(2026, 1, 8, 17, 44, 5), purchase_name='广西壮族自治区人民政府凭祥综合保税区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=PW3MiDWfy/B73Ur7DcVf1A==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='54f993f8dfcb031b6f59208b6ac1bc2f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于车辆维修和保养服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 35, 50), purchase_name='广西壮族自治区亚热带作物研究所', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=hGEND1+B6XpiY7b2S1ri6w==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='ea5fb88bc87cef6f18eeeaacf612bd4c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于车辆维修和保养服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 35, 43), purchase_name='广西壮族自治区亚热带作物研究所', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=au6GjGj7I/UzUhpusadzmg==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='9312247b61dfa6c4715bc8a1c9981f03', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于笔记本电脑的信创产品馆合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 32, 18), purchase_name='广西师范大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5+jtyJEo2xwve30CP2cEDQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='3f49c228dbdb006b873ab18d86c27654', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西凭祥综合保税区园区互联网链路租赁采购竞价终止公告', publish_date=datetime.datetime(2026, 1, 8, 17, 29, 51), purchase_name='广西壮族自治区人民政府凭祥综合保税区管理委员会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=o7sdb1YBPaOssAy0P4Zn0w==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='b607e273af58742ca6f137c90ccffd4a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西中医药大学的合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 26, 17), purchase_name='广西中医药大学', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aWtI4df8GuES6SQFVYJgHA==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='4507d02fee5aa2cb57029b0f2cf150a8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于空调的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 12, 19), purchase_name='广西钦州市灵山县职业技术学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=QlcSNDQI0b8KNf0sZSFTzQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='efa3c1ea1d7974c0696b8e2661dd439d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于激光打印机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 9, 49), purchase_name='广西钦州市灵山县灵城镇中心校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=y0ogF3OKCSGJ//LbXbqDVg==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='e2e5ad578a95c89ccbe7a68e1f47ca43', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于印刷服务的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 17, 0, 23), purchase_name='广西职业技术学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Sldwr2F9uk4nGfrA/vnymw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='8030a7849f6de34ed4dbac65e953b130', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于黑白激光多功能一体机的网上超市合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 58, 17), purchase_name='广西医科大学附属武鸣医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=CZ716U67/NTwSd3yLi7zJQ==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='ce3c8ba18d83498a39a0641c46ac6172', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='关于车辆加油的框架协议合同公告', publish_date=datetime.datetime(2026, 1, 8, 16, 44, 35), purchase_name='广西壮族自治区水利厅凤亭河水库管理中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=zixNDyEdt3F0CvVEMxIUVw==', source_code='ZcyAnnouncement7', source_name='电子卖场公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 610782), created_at=None, updated_at=None, content_hash='af536e3ad4b59be973f11b2ba43ecaf5', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西新闻出版技工学校[GXZC2025-C3-000858-CGZX]广西新闻出版技工学校物业服务采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 18, 14, 14), purchase_name='广西新闻出版技工学校', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=0FT/e5PwYCWCjMIYvjRSOA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='c3463af25a4c647f4c36e13ac2c3d1ab', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007733096]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 59, 17), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=QWUcuvzTwFXZWePaHD+7tA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='bc06184a75aa38cac534b60a66625752', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007733095]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 57, 41), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=boPWML8ol1NO+54Aaqn4ww==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='a3b552cb7fc2ed3c07dc7c8dea761b7d', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007734830]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 56, 15), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=t9jZI6BK9iJAFigEDAy/SQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='9d97152fe9c134de3e3e9139cae53f07', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007734744]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 54, 22), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=2a4Lnx7l+vYLtrw8ercqng==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='5a0f53dbe20c46c385891e7209dc9ee4', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007772691]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 52, 54), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=WA6MQ0PmiOCg1f/mXfDHbg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='b2f7aec5eea56911e379a2aa2d19b805', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007809775]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 51, 17), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MMRCHuYMOioe14XArx/I4g==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='037584f73b81b69519f504dcdfceecdb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007812951]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 49, 54), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=wYa62ymyVJzybI4hQIBiMA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='359249abafb031158b4c462383b8947e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007812855]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 47, 57), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=v3iCr/qqNrboF7j4vTksyw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='2dffe456a792d0d3da9d57d3d4602f2c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007829518]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 45, 26), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=jYFJtr6umGPLbWPSNUSv4Q==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='403d87e45f53c70f8bf8b8100bd21785', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007829453]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 33, 1), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=XCpM607Rxo61OqWvFJH42Q==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='34ef00d039d565dc4be7a6ce03f7f1ae', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007843719]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 31, 19), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=7Vwh7W4Ttf2uiA70uRCyEQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='3bdab271e8dc1f1064aa19c4cd470a89', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007843801]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 29, 51), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=I5bCQFOYbExdpV0/+7LtpQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='fd73af30ecc3c88dfbc75b64b5cdcde7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市钦南区残疾人联合会[2921801000007857093]关于中国石油天然气股份有限公司广西钦州销售分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 29, 35), purchase_name='钦州市钦南区残疾人联合会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Um5pLfmflKVIkevr15vpPA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='d6b2329360af9ea50fb92c45bf1b49c9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市钦南区疾病预防控制中心[2961801000007848329]中国大地财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 21, 25), purchase_name='钦州市钦南区疾病预防控制中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=x97ScUu+uCnwYTx7JgwtJA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='c0f8b50cc0eeb58eb36d3d752dd1c9ab', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市人民检察院[2761801000007958729]关于中国大地财产保险股份有限公司广西分公司的电子卖场合同-车辆保险的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 20, 48), purchase_name='钦州市人民检察院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=f6MPA2RaVWTvBUORPE3Snw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='fe7d114a5971e4e7f1666cc05bc426d9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市青少年学生校外活动中心[2961801000007770945]关于中国大地财产保险股份有限公司广西分公司的电子卖场合同-车辆保险的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 20, 30), purchase_name='钦州市青少年学生校外活动中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=eBHJ+Cblkg1Mnj6IW1Qtrg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='f5b89469a00df8688530b29789abebff', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市人民检察院[2701801000007968084]关于广西晖腾印刷科技有限公司的电子卖场合同-其他印刷服务的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 17, 51), purchase_name='钦州市人民检察院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=FaZlRsTitMGoTEXb0FbVUg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='99696a5dd98393f81d38af37c5ab3c06', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007863287]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 15, 44), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GuvA8WEr1/UUjSjZNUK/TA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='2fae85ee3ae4a6510e5b4af668123a0f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市青少年学生校外活动中心[2981801000007962862]关于中国石化销售股份有限公司广西钦州石油分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 6, 41), purchase_name='钦州市青少年学生校外活动中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=2rFxvbZbl9cFXvN/CJdYng==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='628b3a6b196686a8deee29c8c877a244', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市人民检察院[2781801000007975741]关于中国石化销售股份有限公司广西钦州石油分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 5, 20), purchase_name='钦州市人民检察院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=8FCXkoDSjMjdH8Kd5Z/20w==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='77a42d1dc278c55f891b495a53387b3b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007936434]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 17, 0, 13), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=HEliH/6VzedsRiIWLyJRTw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='2b219c576d96f43ee2e5061a96d3b0d7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市钦南区东场镇卫生院[2381801000007906351]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 59, 14), purchase_name='钦州市钦南区东场镇卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=kSmmZvVTguJXLp8IpnQfAA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='f3c66d9c6b024de39095affef6e8340c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007890958]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 58, 1), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=2QT+GabL+NaLcyjjTOqgeg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='34a496caa3857028855108f818ebb288', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦南分局[2481801000007795247]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 57, 39), purchase_name='钦州市公安局钦南分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GcvnpOiByAevf330n+0Guw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='517b458ac5319dd57fc5b9cdfa9e99dc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007891019]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 15), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=HKEcLLPFHeiM/st1h3SMuQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='2aabcc0b2442f1ab6ec626a7d6094271', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市钦南区疾病预防控制中心[2961801000007962056]中国大地财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 54, 41), purchase_name='钦州市钦南区疾病预防控制中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=m+V1j6NMxWV/xVmcdgCZ+g==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='7261b70ec34bd27355be478646cb7be1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007915126]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 54, 20), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ZwlpP6vpY3OAVsnaa4Ob8g==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='0c650e9362d34616a000432887b3e1e0', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007890953]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 53, 42), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=CYWDS9B/wI3YnymWiCMUig==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='d709f4550f2776acccc144037f670344', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007910566]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 52, 42), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=2w73rlfzh5wK6b5vcriILg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='a44bcc0d48be49f6727e36ff41a0fe07', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007910433]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 52, 13), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=A4rPeudJ51Ca6kiv5kHE4g==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='556bb9ef4099d208bea120fbafd33bfd', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区罗城公路养护中心[2401801000007739540]2024-2025年度河池市罗城仫佬族自治县、南丹县预算单位公务车辆维修和保养服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 52, 4), purchase_name='广西壮族自治区罗城公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=AdWChceMc9v/Uactxb+Eiw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='541ed1d798d3e1cc6644ba5f20bd9031', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007916198]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 51, 32), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=boO85zaN7Nwq3djkZsXeAA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='4ca0ec22eb3f78cbaba53129985f52e7', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007909961]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 50, 13), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=n5f37jPySUVGuL+cMRZ0AQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='41f1a7f4317badfe2cc8c80b5c91e6c3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007906813]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 48, 56), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=YDPRrW73ek58+prO+/jevg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='68a6a032a97c83d1d7c1988d567a0f0e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007922685]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 47, 13), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=/hD8rwxk2vR7Gtoq6M48AA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='2d621b1fa3202d2cbd31d142bdbdb9e4', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007923097]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 45, 31), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=2NXAs/QAMp539VSCXTwnCg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='f6807858cbbed1fa75bee177c65d9819', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007938405]关于中国石化销售股份有限公司广西钦州石油分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 44, 4), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ulXVSLSplB9C708iQEQ4DQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='d5b4760874aa136c9b583a2947d24bfe', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007909934]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 44), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=U5TD4XF42qvus0/mYOBKBQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='f1ce087ab9568a56f733b98f3426ee43', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦南区那彭镇人民政府[2981801000007972810]关于广西钦州伟捷商贸有限公司的电子卖场合同-打印/复印纸的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 43, 43), purchase_name='钦南区那彭镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=kz4oMo+MlYnMtF2AtmA9wA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='506caf5bd2ce94f60e0795cbd8046b72', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007939435]关于中国石化销售股份有限公司广西钦州石油分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 41, 47), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=JwwuYBn8FeafdzU6YW5JbA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='352e0f973f70acdf0007144baa314015', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市钦南区东场镇卫生院[2301801000007812206]2025-2026年钦州市本级、钦南区、钦北区及中国(广西)自由贸易试验区钦州港片区预算单位车辆维修和保养服务(综合店)框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 41, 25), purchase_name='钦州市钦南区东场镇卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=QLJJf7PXRXvrOIMO0arVtA==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='5ddf5b87811c322267e4647621e0735e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007936713]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 40, 9), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=5FIwdYS6nNOfbrtV7sV6pw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='9831896263ba5fe830e10da0792efdb3', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市科学技术协会[2181801000007867731]关于中国石化销售股份有限公司广西钦州石油分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 38, 53), purchase_name='钦州市科学技术协会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=nnawkI6JLCeR7AGcpB8W5A==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='274b8889f4fe7e654ec84d624dc72de1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市钦南区东场镇卫生院[2301801000007782727]2025-2026年钦州市本级、钦南区、钦北区及中国(广西)自由贸易试验区钦州港片区预算单位车辆维修和保养服务(综合店)框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 38, 5), purchase_name='钦州市钦南区东场镇卫生院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=SJ7OjN4cpdV6yK0oeinHFw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='3fbbefff86500c4e537c10ea76a00b17', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007936010]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 37, 56), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=QY7gLoVmf/MB2gmhU9MA4g==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='7aece63126d87a4908415235cbb8bd8c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市公安局钦北分局[2181801000007934789]中国石化销售股份有限公司广西石油分公司2025—2026年广西壮族自治区本级及部分地市预算单位车辆加油服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 36, 30), purchase_name='钦州市公安局钦北分局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=4XvsTw0ldrRxAbfArAbMKQ==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='2b4771a9bfe2ae87d25eb2f3b049be9c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007909883]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 36, 6), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=8mljA5+boxqpdChBQxLbOw==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='8b40cd36e35dc3f99c9f353c715cb936', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='钦州市科学技术协会[2181801000007940370]关于中国石化销售股份有限公司广西钦州石油分公司的电子卖场合同-车辆加油的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 35, 44), purchase_name='钦州市科学技术协会', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=+VJoocpjtQl4eLKobMJp+g==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='bc8fbd92d50e41caa924c9e6c5d8a4cc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='南宁市公安局交通警察支队[2191801000007909925]中国太平洋财产保险股份有限公司广西分公司2025-2026年自治区本级及区内部分市县预算单位公务车辆保险服务框架协议采购的验收公告', publish_date=datetime.datetime(2026, 1, 8, 16, 34, 37), purchase_name='南宁市公安局交通警察支队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=piMBANo4UqgfDtO5QsmcGg==', source_code='ZcyAnnouncement10', source_name='履约验收公示', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 38, 966312), created_at=None, updated_at=None, content_hash='288c4fa0a301fc91b886546196c22345', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西东裕工程管理有限公司岑溪市水库移民纺织服装产业基地项目(E4504002831002542001)中标结果公示', publish_date=datetime.datetime(2026, 1, 8, 16, 4, 52), purchase_name='岑溪市水库移民发展中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=my5PYV7/cP6ZnE5Yzp0RsQ==', source_code='ZcyAnnouncement11', source_name='工程类公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 128634), created_at=None, updated_at=None, content_hash='9a04cb9ff4de90aeec16fe092222470e', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='G219那坡平孟至靖西安宁公路设计施工总承包中标候选人公示', publish_date=datetime.datetime(2026, 1, 8, 15, 14, 46), purchase_name='广西壮族自治区百色公路发展中心本级', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=8nQy57Gx9WhhngXOQYR2NA==', source_code='ZcyAnnouncement11', source_name='工程类公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 128634), created_at=None, updated_at=None, content_hash='54edb7b69ae25ce850bd45d9de46e0fd', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西荣胜项目管理有限公司关于桂城华府雍华府11号楼“保交楼”项目的中标候选人公示 更正公告(一)', publish_date=datetime.datetime(2026, 1, 8, 14, 39, 27), purchase_name='', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ocxMPrV0qd0QmBmIAt9GxQ==', source_code='ZcyAnnouncement11', source_name='工程类公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 128634), created_at=None, updated_at=None, content_hash='28fc5111d69938f9981f16c1224b5fb8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区桂林市防火应急道路建设项目(全州县)(KLGLG20252006)中标公告', publish_date=datetime.datetime(2026, 1, 8, 11, 9, 42), purchase_name='桂林市林业和园林局', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=VMEiurrFpeQS6p3pdOmGYQ==', source_code='ZcyAnnouncement11', source_name='工程类公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 128634), created_at=None, updated_at=None, content_hash='b25bb890084599a9e0d78396c514125f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西热作所特色种质资源圃项目(恩湖路区)招标控制价公示更正公告(一)', publish_date=datetime.datetime(2026, 1, 8, 10, 46, 51), purchase_name='广西壮族自治区亚热带作物研究所', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=GWb9jDp2Jb1Ca0oVB+YSig==', source_code='ZcyAnnouncement11', source_name='工程类公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 128634), created_at=None, updated_at=None, content_hash='b470be9b579ccadad971246d39061206', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西平果市凤圩灌区续建配套与节水改造项目(三期)合同公告', publish_date=datetime.datetime(2026, 1, 8, 10, 26, 27), purchase_name='平果市水利建设管理站', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=4ECHVI+h28xc6OZ4Gyc61A==', source_code='ZcyAnnouncement11', source_name='工程类公告', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 128634), created_at=None, updated_at=None, content_hash='8e30fcb68c302e525e9d4208d370b4d1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区工业和信息化厅2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 18, 5, 59), purchase_name='广西壮族自治区工业和信息化厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=ZrDB9V5eE1t75+85wqMsrA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='3650352b984b2ee2f3c98555ef0f9e62', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区文化和旅游厅2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 17, 52, 15), purchase_name='广西壮族自治区文化和旅游厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=MZGWwK/FFG8cVn4oVi1Ueg==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='6f7f61a4835b7ca1276cf05fec300c5a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区浦北公路养护中心2026年1月至2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 22, 38), purchase_name='广西壮族自治区浦北公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KWdqGxQ7DSAi2dTpVee7LA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='8f9764badb6b32edafaa8453b0820ecf', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区桂平公路养护中心2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 15, 53, 38), purchase_name='广西壮族自治区桂平公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=VQxjOdafsqmleLhXW+Bh5Q==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='05f4392c71be06fa8536deafaeb7c511', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西医科大学附属口腔医院2026年1月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 15, 52, 21), purchase_name='广西医科大学附属口腔医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=KeztxTuMdS8po/KnbF0JoQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='18714f1751e09453ebfcc19e18dba762', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区河池公路发展中心本级2026年1月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 15, 37, 8), purchase_name='广西壮族自治区河池公路发展中心本级', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=pUaLbldkZX3XlFG4x3pjqA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='368f1e94bf45bc1f7734f2293b770b17', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西广西壮族自治区都安公路养护中心 2026-2028年公路日常养护服务2026年1月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 15, 18, 25), purchase_name='广西壮族自治区都安公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=s5nNkhUmzwUVtXv1Dv3gHQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='55fc397985aea761437db021719d550c', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西玉林市兴业县城隍镇龙潭村红色美丽村庄建设项目2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 12, 46, 11), purchase_name='兴业县城隍镇人民政府', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=uneKszt2DdB6UBrEaWNsLA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='721aa5cba7603d562114ebae711611d1', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区就业服务中心2026年度政府采购意向公开2026年4月第一批政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 12, 36, 12), purchase_name='广西壮族自治区人力资源和社会保障厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=xaOgPyZloNyQsCY0rN5b1Q==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='83dba713d16fe9795034538e5cdd3282', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区人才服务中心(自治区人力资源和社会保障培训中心)2026年2月至9月第一批政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 12, 22, 24), purchase_name='广西壮族自治区人力资源和社会保障厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=afLg31t24lkYkzn/12vowA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='7f1f849b40c564cc930eaf3bb0701783', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区人力资源和社会保障厅机关服务中心2026年度政府采购意向公开2026年1月至7月第一批次政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 12, 2, 53), purchase_name='广西壮族自治区人力资源和社会保障厅机关服务中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=1BhmEHykQSPIxbgVa52bTw==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='3866147f486d745c00831a671e45be04', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区人力资源和社会保障厅机关2026年度政府采购意向公开2026年2月至8月第一批政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 46, 49), purchase_name='广西壮族自治区人力资源和社会保障厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Q5+Dmo5KEMTgFA3zBBj2GQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='bd9494b8ba779c9a6769c74aefcda2f8', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区文化和旅游厅2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 21, 16), purchase_name='广西壮族自治区文化和旅游厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=l5RjJR5r0Oysm30CYxhe8Q==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='229fc7d66d1138097d3a1267c0cc853f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区生态环境厅2026年1月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 9, 9), purchase_name='广西壮族自治区生态环境厅', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Pbh7tyJF78nrAZMLXDEE8A==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='cfe0ea1e12d6df6089527a55558bec22', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中山大学附属第一医院广西医院2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 49, 58), purchase_name='中山大学附属第一医院广西医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=T3abI4ffs1bbcbN3pO9JPQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='510a005b606ce7a1b9369ba028bb3c40', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西财经学院中国-东盟统计学院综合实验楼中国-东盟宏观经济大数据与政策评估实验室一期基础设施建设项目(更正)2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 10, 36, 6), purchase_name='广西财经学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=CaBFGRRAOoJv0soub1/85w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='1b2ae999b16e2829352f7a8f12674c21', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区教师培训中心2026年2月至12月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 58, 42), purchase_name='广西壮族自治区教师培训中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=HvtCcYxYGnvy30smZeXy5w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='797fa62aeb642acef8db77bdc0446353', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西制造工程职业技术学院2026年1月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 56, 41), purchase_name='广西制造工程职业技术学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=10fDOErjbdw9C1ZD0CmOow==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='8847a0d63c9bb5f3f4f76c5440927261', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区宁明公路养护中心2026年1月至3月更正政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 50, 3), purchase_name='广西壮族自治区宁明公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=eVLvQlH/mzfkDg/sRWMXYA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='dcd79334e6aed3773bd882f94b2680f9', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区机关车队2026年1月至6月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 40, 10), purchase_name='广西壮族自治区机关车队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=i46wKAwjpLnW1nnLiYqMLQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='5603f05cbeed6320024040d3ecadde8f', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区机关车队2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 40), purchase_name='广西壮族自治区机关车队', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=V3G1V07VJIXQ8iwAtpDcrQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='b87d4d8d72a5c7772fa109c0f1de649b', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西中医药大学附属瑞康医院2026年1月至2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 25, 54), purchase_name='广西中医药大学附属瑞康医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=CINQXWq7A6yHupQS8RvE/g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='418c3ce87b2dbe0dd6f29de0dc6201dc', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西中医药大学附属瑞康医院2026年1月至2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 25, 46), purchase_name='广西中医药大学附属瑞康医院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=qxARirDs5Rz4yDPnxad2Ew==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='e7959b868286fc6bf39292a5cb73fb17', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区金城江公路养护中心2026年1月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 9, 11, 1), purchase_name='广西壮族自治区金城江公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=a2qdzECtGISHi950Uj7aaQ==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='83cf61ae6a65e3b6117dca795db63568', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='崇左市广西弄岗国家级自然保护区管理中心2026年1月至2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 8, 56, 20), purchase_name='崇左市广西弄岗国家级自然保护区管理中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aCYiLTdCCU9bXv+qs7bZcA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='56026d4c0033e19c63bba2c43c93dea4', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西壮族自治区临桂公路养护中心2026年2月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 8, 37, 52), purchase_name='广西壮族自治区临桂公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=NRI92ImJjOH1Xct+94dmnw==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='9b18cdc568346d570f0c6f88364f7e9a', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='广西财经学院中国-东盟统计学院综合实验楼中国-东盟宏观经济大数据与政策评估实验室一期基础设施建设项目2026年1月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 8, 24, 56), purchase_name='广西财经学院', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=cpoJDWpDSLXUlJDdsdKtYA==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 18, 21, 39, 874158), created_at=None, updated_at=None, content_hash='87852599dfd8655b9e8fa3e9afe39e20', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} -2026-01-08 18:21:40 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-08 18:21:40 - gx_gp_monitor.notification.wechat - INFO - 内容长度 37933 超过限制,开始拆分发送 -2026-01-08 18:21:40 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-08 18:21:40 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:40 - gx_gp_monitor.notification.wechat - INFO - 第 1/9 段消息发送成功 -2026-01-08 18:21:41 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:41 - gx_gp_monitor.notification.wechat - INFO - 第 2/9 段消息发送成功 -2026-01-08 18:21:42 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:42 - gx_gp_monitor.notification.wechat - INFO - 第 3/9 段消息发送成功 -2026-01-08 18:21:42 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:42 - gx_gp_monitor.notification.wechat - INFO - 第 4/9 段消息发送成功 -2026-01-08 18:21:43 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:43 - gx_gp_monitor.notification.wechat - INFO - 第 5/9 段消息发送成功 -2026-01-08 18:21:44 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:44 - gx_gp_monitor.notification.wechat - INFO - 第 6/9 段消息发送成功 -2026-01-08 18:21:45 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:45 - gx_gp_monitor.notification.wechat - INFO - 第 7/9 段消息发送成功 -2026-01-08 18:21:45 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:45 - gx_gp_monitor.notification.wechat - INFO - 第 8/9 段消息发送成功 -2026-01-08 18:21:46 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 -2026-01-08 18:21:46 - gx_gp_monitor.notification.wechat - INFO - 第 9/9 段消息发送成功 -2026-01-08 18:31:31 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 18:31:31 - gx_gp_monitor.main - INFO - 版本: 1.0.0 -2026-01-08 18:31:31 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 -2026-01-08 18:31:32 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:31:32 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:31:32 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:31:32 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:31:32 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:31:32 - gx_gp_monitor.main - INFO - 应用初始化完成 -2026-01-08 18:31:32 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) -2026-01-08 18:31:32 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:31:32 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:32:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:02 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.49秒 -2026-01-08 18:32:02 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:32:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:02 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 18:32:02 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:32:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:32:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:32:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:32:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 18:32:03 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:32:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:32:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:32:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:32:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:32:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:32:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 18:32:04 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:32:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:32:05 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:32:05 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:32:05 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:32:05 - gx_gp_monitor.main - INFO - 手动爬取模式:跳过数据库保存 -2026-01-08 18:32:05 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 519 条公告 -2026-01-08 18:32:05 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 519 -> 0 条公告 -2026-01-08 18:32:05 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 0 -> 0 条公告 -2026-01-08 18:32:05 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 -2026-01-08 18:32:05 - gx_gp_monitor.main - INFO - 手动爬取模式:跳过筛选后公告的数据库保存 -2026-01-08 18:32:05 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': False, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 519, 'date_filtered': 781, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': []} -2026-01-08 18:33:24 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:33:24 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:33:24 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:33:24 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:33:43 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 18:33:43 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:33:43 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:33:43 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:33:43 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:33:43 - __main__ - INFO - 开始执行爬取... -2026-01-08 18:33:43 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:33:43 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:33:43 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:33:43 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:43 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.44秒 -2026-01-08 18:33:43 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:33:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:33:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:33:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:33:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:33:44 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:33:44 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:33:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.33秒 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:33:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:33:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:33:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:33:45 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:33:45 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:33:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:46 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:33:46 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:33:46 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:33:46 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:33:46 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:33:46 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:33:46 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:33:46 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 18:33:46 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 18:33:46 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 18:33:46 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 18:33:46 - __main__ - INFO - 关键词筛选后剩余 0 条公告 -2026-01-08 18:33:46 - __main__ - INFO - 没有匹配关键词的公告,任务完成 -2026-01-08 18:34:22 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:34:22 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:34:22 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:34:22 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:48:58 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:48:58 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:48:58 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:48:58 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:49:47 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 18:49:47 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:49:47 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:49:47 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:49:47 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:49:47 - __main__ - INFO - 开始执行爬取... -2026-01-08 18:49:48 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:49:48 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:49:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.47秒 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:49:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:49:48 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:49:48 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:49:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:49:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:49:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:49:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.35秒 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:49:49 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:49:49 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:49:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:49:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:49:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:49:50 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:49:50 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:49:51 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:49:51 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:49:51 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:49:51 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:49:51 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:49:51 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 18:49:51 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 18:49:51 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 18:49:51 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 18:49:51 - __main__ - INFO - 关键词筛选后剩余 0 条公告 -2026-01-08 18:49:51 - __main__ - INFO - 没有匹配关键词的公告,任务完成 -2026-01-08 18:56:04 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 18:56:04 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:56:04 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:56:04 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:56:04 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:56:04 - __main__ - INFO - 开始执行爬取... -2026-01-08 18:56:04 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:56:04 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:56:04 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:56:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:56:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:56:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:56:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:56:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:56:05 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:56:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 18:56:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 18:56:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 18:56:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:56:06 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 18:56:07 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 18:56:07 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 18:56:07 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 18:56:07 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:56:07 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:56:07 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 18:56:07 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 18:56:07 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 18:56:07 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 18:56:07 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 18:56:07 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 18:56:07 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 18:56:07 - __main__ - INFO - 关键词筛选后剩余 0 条公告 -2026-01-08 18:56:07 - __main__ - INFO - 没有匹配关键词的公告,任务完成 -2026-01-08 18:56:42 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:56:42 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:56:42 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:56:42 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:58:26 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 18:58:26 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:58:26 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:58:26 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:58:26 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:58:26 - __main__ - INFO - 开始执行爬取... -2026-01-08 18:58:26 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:58:26 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:58:26 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:59:28 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 18:59:28 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 18:59:28 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 18:59:28 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 18:59:28 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 18:59:28 - __main__ - INFO - 开始执行爬取... -2026-01-08 18:59:28 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 18:59:28 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 18:59:28 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 18:59:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:59:58 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.44秒 -2026-01-08 18:59:58 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 18:59:58 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:59:58 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:59:58 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 18:59:59 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 18:59:59 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 18:59:59 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 18:59:59 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 18:59:59 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 19:00:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.41秒 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 19:00:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 19:00:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 19:00:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 19:00:00 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 19:00:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:01 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 19:00:01 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 19:00:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:01 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 19:00:01 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 19:00:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:01 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-08 19:00:01 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 19:00:01 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 19:00:01 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 19:00:01 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 19:00:01 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 19:00:01 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 19:00:01 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 19:00:01 - __main__ - INFO - 关键词筛选后剩余 0 条公告 -2026-01-08 19:00:01 - __main__ - INFO - 没有匹配关键词的公告,任务完成 -2026-01-08 19:00:04 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 19:00:04 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 19:00:04 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 19:00:04 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 19:00:04 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 19:00:04 - __main__ - INFO - 开始执行爬取... -2026-01-08 19:00:04 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 19:00:04 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 19:00:04 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 19:00:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:04 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-08 19:00:04 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 19:00:04 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:04 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 19:00:04 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 19:00:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 19:00:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 19:00:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 19:00:05 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 19:00:05 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 19:00:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.37秒 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 19:00:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 19:00:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 19:00:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 19:00:06 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-08 19:00:06 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 19:00:07 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:07 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 19:00:07 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 19:00:07 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:00:07 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 19:00:07 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 19:00:07 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 19:00:07 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 19:00:07 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 19:00:07 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 19:00:07 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 19:00:07 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 19:00:07 - __main__ - INFO - 关键词筛选后剩余 0 条公告 -2026-01-08 19:00:07 - __main__ - INFO - 没有匹配关键词的公告,任务完成 -2026-01-08 19:02:07 - __main__ - INFO - === 开始定时爬取任务 === -2026-01-08 19:02:07 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 -2026-01-08 19:02:07 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 -2026-01-08 19:02:07 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 -2026-01-08 19:02:08 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 -2026-01-08 19:02:08 - __main__ - INFO - 开始执行爬取... -2026-01-08 19:02:08 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 -2026-01-08 19:02:08 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 19:02:08 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 19:02:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:38 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.40秒 -2026-01-08 19:02:38 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 19:02:38 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:38 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 19:02:38 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 19:02:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 19:02:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.29秒 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 19:02:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 19:02:39 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 19:02:39 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 19:02:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 19:02:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 19:02:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 19:02:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 19:02:40 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 19:02:40 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 19:02:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:41 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-08 19:02:41 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 19:02:41 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 19:02:41 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 19:02:41 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 19:02:41 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 -2026-01-08 19:02:41 - __main__ - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} -2026-01-08 19:02:41 - __main__ - INFO - 筛选出 1300 条新公告 -2026-01-08 19:02:41 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 -2026-01-08 19:02:41 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 -2026-01-08 19:02:41 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) -2026-01-08 19:02:41 - __main__ - INFO - 关键词筛选后剩余 0 条公告 -2026-01-08 19:02:41 - __main__ - INFO - 没有匹配关键词的公告,任务完成 +2026-01-08 21:39:23 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:39:23 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:40:03 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:40:03 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:40:12 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:40:12 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:42:21 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:42:21 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:42:30 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:42:30 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: wZm4V0y7wZ7GCKNacdIhhN+KCQoX6c6peaCl8aCxA7zeHQy9H1... +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: f1e34ecdef54dcb3f3ea1b84898cec64c54a128e +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: f1e34ecdef54dcb3f3ea1b84898cec64c54a128e +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 21:42:59 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=帮助..., user=WeiJueSen +2026-01-08 21:42:59 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 帮助, user: WeiJueSen +2026-01-08 21:46:51 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:46:51 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:47:00 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:47:00 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:47:42 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:47:42 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:48:17 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:48:17 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:49:11 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:49:11 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:50:36 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:50:36 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: jiJ2j73W7wKovmd8M9YmBGuai+FUfQCGkPH1KYPM4mCA1q/3jr... +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: a62b23e0fce089e9ee78072a8467642588448e65 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: a62b23e0fce089e9ee78072a8467642588448e65 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen +2026-01-08 21:51:00 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen +2026-01-08 21:51:00 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 版本: 1.0.0 +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 +2026-01-08 21:51:00 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 +2026-01-08 21:51:00 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 +2026-01-08 21:51:00 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 +2026-01-08 21:51:00 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 应用初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) +2026-01-08 21:51:00 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 21:51:00 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 21:51:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:00 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.49秒 +2026-01-08 21:51:00 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.26秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.26秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.39秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.25秒 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 手动爬取模式:跳过数据库保存 +2026-01-08 21:51:03 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 537 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 537 -> 2 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 手动爬取模式:跳过筛选后公告的数据库保存 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 535, 'date_filtered': 763, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 21, 51, 3, 530262), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 21, 51, 3, 530262), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} +2026-01-08 21:51:03 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 +2026-01-08 21:51:04 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 +2026-01-08 21:51:04 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 diff --git a/logs/uwsgi-wechat.log b/logs/uwsgi-wechat.log new file mode 100644 index 0000000..a2c5bfc --- /dev/null +++ b/logs/uwsgi-wechat.log @@ -0,0 +1,119 @@ +Thu Jan 8 21:50:36 2026 - *** Starting uWSGI 2.0.31 (64bit) on [Thu Jan 8 21:50:36 2026] *** +Thu Jan 8 21:50:36 2026 - compiled with version: 14.2.0 on 06 January 2026 09:35:56 +Thu Jan 8 21:50:36 2026 - os: Linux-6.14.0-37-generic #37-Ubuntu SMP PREEMPT_DYNAMIC Fri Nov 14 22:10:32 UTC 2025 +Thu Jan 8 21:50:36 2026 - nodename: ubserver +Thu Jan 8 21:50:36 2026 - machine: x86_64 +Thu Jan 8 21:50:36 2026 - clock source: unix +Thu Jan 8 21:50:36 2026 - pcre jit disabled +Thu Jan 8 21:50:36 2026 - detected number of CPU cores: 12 +Thu Jan 8 21:50:36 2026 - current working directory: /home/v6ole/pyproject/GX-gp-notify +Thu Jan 8 21:50:36 2026 - writing pidfile to ./uwsgi-wechat.pid +Thu Jan 8 21:50:36 2026 - detected binary path: /home/v6ole/pyproject/GX-gp-notify/venv/bin/uwsgi +Thu Jan 8 21:50:36 2026 - uWSGI running as root, you can use --uid/--gid/--chroot options +Thu Jan 8 21:50:36 2026 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** +Thu Jan 8 21:50:36 2026 - chdir() to /home/v6ole/pyproject/GX-gp-notify +Thu Jan 8 21:50:36 2026 - your processes number limit is 61306 +Thu Jan 8 21:50:36 2026 - your memory page size is 4096 bytes +Thu Jan 8 21:50:36 2026 - *** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers *** +Thu Jan 8 21:50:36 2026 - detected max file descriptor number: 1073741816 +Thu Jan 8 21:50:36 2026 - lock engine: pthread robust mutexes +Thu Jan 8 21:50:36 2026 - thunder lock: disabled (you can enable it with --thunder-lock) +Thu Jan 8 21:50:36 2026 - uWSGI http bound on 0.0.0.0:18001 # 指定 uWSGI 监听的 HTTP 地址和端口 fd 4 +Thu Jan 8 21:50:36 2026 - uwsgi socket 0 bound to TCP address 127.0.0.1:40181 (port auto-assigned) fd 3 +Thu Jan 8 21:50:36 2026 - uWSGI running as root, you can use --uid/--gid/--chroot options +Thu Jan 8 21:50:36 2026 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** +Thu Jan 8 21:50:36 2026 - Python version: 3.13.11 | packaged by Anaconda, Inc. | (main, Dec 10 2025, 21:39:52) [GCC 14.3.0] +Thu Jan 8 21:50:36 2026 - PEP 405 virtualenv detected: /home/v6ole/pyproject/GX-gp-notify/venv +Thu Jan 8 21:50:36 2026 - Set PythonHome to /home/v6ole/pyproject/GX-gp-notify/venv +Thu Jan 8 21:50:36 2026 - Python main interpreter initialized at 0x7eb9b7352d10 +Thu Jan 8 21:50:36 2026 - uWSGI running as root, you can use --uid/--gid/--chroot options +Thu Jan 8 21:50:36 2026 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** +Thu Jan 8 21:50:36 2026 - python threads support enabled +Thu Jan 8 21:50:36 2026 - your server socket listen backlog is limited to 100 connections +Thu Jan 8 21:50:36 2026 - your mercy for graceful operations on workers is 60 seconds +Thu Jan 8 21:50:36 2026 - mapped 250032 bytes (244 KB) for 4 cores +Thu Jan 8 21:50:36 2026 - *** Operational MODE: preforking+threaded *** +2026-01-08 21:50:36 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 21:50:36 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +Thu Jan 8 21:50:36 2026 - WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7eb9b7352d10 pid: 1560152 (default app) +Thu Jan 8 21:50:36 2026 - uWSGI running as root, you can use --uid/--gid/--chroot options +Thu Jan 8 21:50:36 2026 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** +Thu Jan 8 21:50:36 2026 - *** uWSGI is running in multiple interpreter mode *** +Thu Jan 8 21:50:36 2026 - spawned uWSGI master process (pid: 1560152) +Thu Jan 8 21:50:36 2026 - spawned uWSGI worker 1 (pid: 1560188, cores: 2) +Thu Jan 8 21:50:36 2026 - spawned uWSGI worker 2 (pid: 1560190, cores: 2) +Thu Jan 8 21:50:36 2026 - Python auto-reloader enabled +Thu Jan 8 21:50:36 2026 - spawned uWSGI http 1 (pid: 1560194) +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: jiJ2j73W7wKovmd8M9YmBGuai+FUfQCGkPH1KYPM4mCA1q/3jr... +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: a62b23e0fce089e9ee78072a8467642588448e65 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: a62b23e0fce089e9ee78072a8467642588448e65 +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 21:51:00 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen +2026-01-08 21:51:00 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen +2026-01-08 21:51:00 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 版本: 1.0.0 +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 +2026-01-08 21:51:00 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 +2026-01-08 21:51:00 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 +2026-01-08 21:51:00 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 +2026-01-08 21:51:00 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 应用初始化完成 +2026-01-08 21:51:00 - gx_gp_monitor.main - INFO - 开始执行爬取任务 (手动爬取: True) +2026-01-08 21:51:00 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 21:51:00 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 21:51:00 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:00 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.49秒 +2026-01-08 21:51:00 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.26秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 21:51:01 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.26秒 +2026-01-08 21:51:01 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.39秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 21:51:02 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:02 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.25秒 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 21:51:03 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 21:51:03 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 手动爬取模式:跳过数据库保存 +2026-01-08 21:51:03 - gx_gp_monitor.filters.filters - INFO - 日期筛选: 1300 -> 537 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 537 -> 2 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 2 -> 2 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 筛选后剩余 2 条公告 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 手动爬取模式:跳过筛选后公告的数据库保存 +2026-01-08 21:51:03 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 2, 'saved': 0, 'markdown_generated': False, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 535, 'date_filtered': 763, 'duplicate_filtered': 0, 'source_filtered': 0}, 'filtered_announcements': [Announcement(id=None, title='广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 16, 55, 31), purchase_name='广西壮族自治区大化公路养护中心', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=aMzhKRWZyOvYpGoEA4k/8g==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 21, 51, 3, 530262), created_at=None, updated_at=None, content_hash='1895a00610c2dc0dfbcdb724260f4597', keyword_matched=True, date_filtered=True, is_new=True, is_today=True), Announcement(id=None, title='中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向', publish_date=datetime.datetime(2026, 1, 8, 11, 41, 6), purchase_name='中国共产党大化瑶族自治县委员会组织部', content_url='https://zfcg.gxzf.gov.cn/site/detail?parentId=66485&articleId=Qgm7DlkoLsuw6Asij2HL8w==', source_code='61-266648', source_name='采购意向公开', announcement_type=, crawled_at=datetime.datetime(2026, 1, 8, 21, 51, 3, 530262), created_at=None, updated_at=None, content_hash='4a57bc4330c2885de63b8d96b8f686bb', keyword_matched=True, date_filtered=True, is_new=True, is_today=True)]} +2026-01-08 21:51:03 - gx_gp_monitor.notification.wechat - INFO - 企业微信服务初始化完成 +2026-01-08 21:51:04 - gx_gp_monitor.notification.wechat - INFO - 成功获取企业微信访问令牌 +2026-01-08 21:51:04 - gx_gp_monitor.notification.wechat - INFO - Markdown消息发送成功 +{address space usage: 241336320 bytes/230MB} {rss usage: 53772288 bytes/51MB} [pid: 1560190|app: 0|req: 1/1] 14.116.241.251 () {36 vars in 679 bytes} [Thu Jan 8 21:51:00 2026] POST /api/v1/wechat/callback?msg_signature=a62b23e0fce089e9ee78072a8467642588448e65×tamp=1767880260&nonce=1767803646 => generated 582 bytes in 4177 msecs (HTTP/1.1 200) 2 headers in 80 bytes (1 switches on core 0) diff --git a/test_cron.py b/test_cron.py deleted file mode 100755 index eab194c..0000000 --- a/test_cron.py +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env python3 -""" -测试定时爬取脚本配置 -""" - -import sys -import os - -# 添加项目路径 -sys.path.insert(0, os.path.dirname(__file__)) - -try: - from gx_gp_monitor.core.config_manager import load_config - from gx_gp_monitor.core.logger import init_logger - from gx_gp_monitor.storage.postgresql import init_storage - - def test_config(): - """测试配置加载""" - print("🔍 测试配置加载...") - - config = load_config() - if not config: - print("❌ 配置加载失败") - return False - - print("✅ 配置加载成功") - print(f" 关键词: {config.crawler.keyword}") - print(f" 企业微信启用: {config.wechat_app.enabled}") - print(f" 数据库启用: {config.database.enabled}") - - return True - - def test_logger(): - """测试日志系统""" - print("\n🔍 测试日志系统...") - - try: - init_logger() - print("✅ 日志系统初始化成功") - return True - except Exception as e: - print(f"❌ 日志系统初始化失败: {e}") - return False - - def test_database(): - """测试数据库连接""" - print("\n🔍 测试数据库连接...") - - try: - init_storage() - print("✅ 数据库连接成功") - return True - except Exception as e: - print(f"❌ 数据库连接失败: {e}") - return False - - def main(): - """主测试函数""" - print("🚀 开始测试定时爬取脚本配置\n") - - results = [] - results.append(("配置加载", test_config())) - results.append(("日志系统", test_logger())) - results.append(("数据库连接", test_database())) - - print("\n" + "="*50) - print("📊 测试结果:") - - all_passed = True - for test_name, passed in results: - status = "✅ 通过" if passed else "❌ 失败" - print(f" {test_name}: {status}") - if not passed: - all_passed = False - - print("\n" + "="*50) - if all_passed: - print("🎉 所有测试通过!可以安全使用定时爬取脚本。") - print("\n💡 使用方法:") - print(" 直接运行: python cron_crawl.py") - print(" 定时运行: 参考 CRON_README.md 或 cron_example.txt") - else: - print("⚠️ 部分测试失败,请检查配置后再使用脚本。") - - return all_passed - - if __name__ == "__main__": - success = main() - sys.exit(0 if success else 1) - -except ImportError as e: - print(f"❌ 导入失败: {e}", file=sys.stderr) - print("请确保已安装所有依赖: pip install -r gx_gp_monitor/requirements.txt", file=sys.stderr) - sys.exit(1) -except Exception as e: - print(f"❌ 测试失败: {e}", file=sys.stderr) - sys.exit(1) diff --git a/uwsgi-wechat.pid b/uwsgi-wechat.pid new file mode 100644 index 0000000..4bc0bb6 --- /dev/null +++ b/uwsgi-wechat.pid @@ -0,0 +1 @@ +1560152 diff --git a/uwsgi_wechat.ini b/uwsgi_wechat.ini new file mode 100644 index 0000000..f42da76 --- /dev/null +++ b/uwsgi_wechat.ini @@ -0,0 +1,28 @@ +[uwsgi] +# 企业微信回调服务器 uWSGI 配置 +# 指定 WSGI 应用的入口模块和对象 +module = app:app + +# 项目基本配置 +chdir = /home/v6ole/pyproject/GX-gp-notify +virtualenv = /home/v6ole/pyproject/GX-gp-notify/venv +http = 0.0.0.0:18001 # 指定 uWSGI 监听的 HTTP 地址和端口 +master = true # 启用主进程模式 +processes = 2 # 设置进程数 +threads = 2 # 设置每个进程的线程数 +enable-threads = true # 启用线程 +harakiri = 30 # 设置超时时间(秒) +http-timeout = 30 # 设置HTTP请求超时 +max-requests = 5000 # 每个进程处理请求数达到此值后自动重启 +reload-on-rss = 200 # 当进程占用内存超过此值(MB)时自动重启 +# 指定日志文件的路径和PID文件的路径 +logto = ./logs/uwsgi-wechat.log +pidfile = ./uwsgi-wechat.pid +# 当 uWSGI 退出时,自动清理其创建的套接字和 PID 文件 +vacuum = true +# 添加日期到日志 +log-date = true + +# 自动重载和内存报告配置 +py-autoreload = 1 +memory-report = true diff --git a/start_wechat_server.py b/wechat_server.py similarity index 100% rename from start_wechat_server.py rename to wechat_server.py diff --git a/weworkapi_python-master/README.md b/weworkapi_python-master/README.md deleted file mode 100644 index 6d3cca3..0000000 --- a/weworkapi_python-master/README.md +++ /dev/null @@ -1,53 +0,0 @@ - -# About -weworkapi_python 是为了简化开发者对企业微信API接口的使用而设计的,API调用库系列之python版本     -本库仅做示范用,并不保证完全无bug; -作者会不定期更新本库,但不保证与官方API接口文档同步,因此一切以[官方文档](https://work.weixin.qq.com/api/doc)为准。 - -更多来自个人开发者的其它语言的库推荐: -python : https://github.com/sbzhu/weworkapi_python abelzhu@tencent.com(企业微信团队) -ruby : https://github.com/mycolorway/wework MyColorway(个人开发者) -php : https://github.com/sbzhu/weworkapi_php abelzhu@tencent.com(企业微信团队) -golang : https://github.com/sbzhu/weworkapi_golang ryanjelin@tencent.com(企业微信团队) -golang : https://github.com/doubliekill/EnterpriseWechatSDK 1006401052yh@gmail.com(个人开发者) - -# Director -├── api // API 接口 -│   ├── examples // API接口的测试用例 -│   ├── README.md -│   └── src // API接口的关键逻辑 -├── callback // 加解密库,python2, xml格式) - -├── callback_json // 加解密库,Python2, json格式, 仅适用于企业机器人/智能机器人 - -├── callback_json_python3 // 加解密库,Python3, json格式, 仅适用于企业机器人/智能机器人 - -├── callback_python3 // 加解密库,python2, xml格式 - -├── conf.py -└── README.md - -# Usage -将本项目下载到你的目录,既可直接引用相关文件   -详细使用方法参考examples路径下的测试用例 - -# 关于token的缓存 -token是需要缓存的,不能每次调用都去获取token,[否则会中频率限制](https://work.weixin.qq.com/api/doc#10013/%E7%AC%AC%E5%9B%9B%E6%AD%A5%EF%BC%9A%E7%BC%93%E5%AD%98%E5%92%8C%E5%88%B7%E6%96%B0access_token) -在本库的设计里,token是以类里的一个变量缓存的 -比如api/src/CorpApi.py 里的access_token变量 -在类的生命周期里,这个accessToken都是存在的, 当且仅当发现token过期,CorpAPI类会自动刷新token -刷新机制在 api/src/AbstractApi.py -所以,使用时,只需要全局实例化一个CorpAPI类,不要析构它,就可一直用它调函数,不用关心 token -``` -api = CorpAPI(corpid, corpsecret); -api.dosomething() -api.dosomething() -api.dosomething() -.... -``` -当然,如果要更严格的做的话,建议自行修改,全局缓存token,比如存redis、存文件等,失效周期设置为2小时。 - -# Contact us -abelzhu@tencent.com - -# diff --git a/weworkapi_python-master/api/examples/AppChatTest.py b/weworkapi_python-master/api/examples/AppChatTest.py deleted file mode 100644 index aed9add..0000000 --- a/weworkapi_python-master/api/examples/AppChatTest.py +++ /dev/null @@ -1,223 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File UserTest.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -import sys -sys.path.append("../src/") - -import random - -from CorpApi import * -from TestConf import * - -## test -api = CorpApi(TestConf['CORP_ID'], TestConf['APP_SECRET']) - -chatid = "test210"; -try : -## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_CREATE'], - { - 'name' : 'appchat_test', - 'owner' : 'ZhuBiaoYi', - 'userlist' : ['LiShuang', 'ZhuShengBen', 'LinJianEn', 'ZhuBiaoYi', 'XuBin', 'yangpeiyi', 'HaLuoTeQu', 'lucky', 'raindong', 'simon', 'Wang', 'ZhaoDong', 'DengLinSheng', 'Li'], - 'chatid' : chatid, - }) - print response - chatid = response['chatid'] -except ApiException as e : - print e.errCode, e.errMsg - -try : - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_UPDATE'], - { - 'chatid' : chatid, - 'name' : 'appchat_test_new_name', - 'owner' : 'ZhuShengBen', - 'add_user_list' : ['huqiqi', 'Wang'] - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_UPDATE'], - { - 'chatid' : chatid, - 'name' : '应用发消息测试', - 'owner' : 'ZhuBiaoYi', - 'del_user_list' : 'huqiqi', - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'msgtype' : 'text', - 'text' : {'content':'我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党我是文本消息热爱祖国热爱人民热爱中国共产党'}, - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'safe' : 1, - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'msgtype' : 'image', - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'image' : { - 'media_id':'3A9Jo9CHit_5UTfOVE38_067dUJQlLs30mOa9FC0a4jEGeoQgpLCZgc7rEza6TbfB', - }, - 'safe' : 1, - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'msgtype' : 'file', - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'file' : { - 'media_id':'35L7MmcpGdyFfqjbGhbECCkGcaNsUajaPQifGLJq_H5E', - }, - 'safe' : 1, - }) - print response - - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'msgtype' : 'voice', - 'voice' : { - 'media_id':'3x1yb34061fDXjyUXy2rWNd-a-hWe-l8eTw2VKyh3bDQ', - }, - 'safe' : 1, - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'msgtype' : 'video', - 'video' : { - 'media_id':'3neA1ypnC3k5QnAZqvyVvCesFYUrXietU5F-Ipnj6ZobiD-PuFlXngzPplWXibw9r', - }, - 'safe' : 1, - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'msgtype' : 'news', - "news" : { - "articles" : [ - { - "title" : "图文消息", - "description" : "今年中秋节公司有豪礼相送", - "url" : "URL", - "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", - "btntxt":"更多", - }, - { - "title" : "图文消息", - "description" : "今年中秋节公司有豪礼相送", - "url" : "URL", - "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", - "btntxt":"更多", - }, - { - "title" : "图文消息", - "description" : "今年中秋节公司有豪礼相送", - "url" : "URL", - "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", - "btntxt":"更多", - }, - ]}, - 'safe' : 1, - }, - ) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - 'msgtype' : 'textcard', - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'textcard' : { - 'title':'我是文本卡片消息', - 'description' : 'aaaaaaa', - 'url' : 'www.qq.com', - 'btntxt' : '更多', - }, - 'safe' : 1, - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['APP_CHAT_SEND'], - { - 'chatid':chatid, - "msgtype" : "mpnews", - "mpnews": { - "articles" : [ - { - "title" : "图文消息(mpnews)", - "thumb_media_id" : "3uFTZs4MRTr-OwUArqaoXPyqtuedcwCUW1x4sgKcOeQc", - "author" : "author", - "content" : "content", - "digest" : "我是图文" - }, - { - "title" : "图文消息(mpnews)", - "thumb_media_id" : "3uFTZs4MRTr-OwUArqaoXPyqtuedcwCUW1x4sgKcOeQc", - "author" : "author", - "content" : "content", - "digest" : "我是图文" - }, - { - "title" : "图文消息(mpnews)", - "thumb_media_id" : "3uFTZs4MRTr-OwUArqaoXPyqtuedcwCUW1x4sgKcOeQc", - "author" : "author", - "content" : "content", - "digest" : "我是图文" - }, - ] - }, - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'safe' : 1, - }) - print response - -except ApiException as e : - print e.errCode, e.errMsg diff --git a/weworkapi_python-master/api/examples/MessageTest.py b/weworkapi_python-master/api/examples/MessageTest.py deleted file mode 100644 index c07b005..0000000 --- a/weworkapi_python-master/api/examples/MessageTest.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File UserTest.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -import sys -sys.path.append("../src/") - -import random - -from CorpApi import * -from TestConf import * - -## test -api = CorpApi(TestConf['CORP_ID'], TestConf['APP_SECRET']) - -try : -## - response = api.httpCall( - CORP_API_TYPE['MESSAGE_SEND'], - { - "touser": "ZhuShengBen", - "agentid": 1000002, - 'msgtype' : 'text', - 'climsgid' : 'climsgidclimsgid_%f' % (random.random()), - 'text' : { - 'content':'方法论', - }, - 'safe' : 0, - }) - print response -except ApiException as e : - print e.errCode, e.errMsg - diff --git a/weworkapi_python-master/api/examples/MiniprogramTest.py b/weworkapi_python-master/api/examples/MiniprogramTest.py deleted file mode 100644 index 1ec96c8..0000000 --- a/weworkapi_python-master/api/examples/MiniprogramTest.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File UserTest.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -import sys -sys.path.append("../src/") - -import random - -from CorpApi import * -from TestConf import * - -## test -api = CorpApi(TestConf['CORP_ID'], TestConf['APP_SECRET']) - -try : -## - response = api.httpCall( - CORP_API_TYPE['MINIPROGRAM_CODE_TO_SESSION_KEY'], - { - "js_code" : "sVqtL3itg0L30LTGJtZ_isKC0efG5FqGw470fVp8Dpw", - "grant_type" : "authorization_code" - }) - print response - -except ApiException as e : - print e.errCode, e.errMsg - diff --git a/weworkapi_python-master/api/examples/ServiceCorpTest.py b/weworkapi_python-master/api/examples/ServiceCorpTest.py deleted file mode 100644 index f7d97ab..0000000 --- a/weworkapi_python-master/api/examples/ServiceCorpTest.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File ServiceCorpTest.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -import sys -sys.path.append("../src/") - -from ServiceCorpApi import * -from TestConf import * - - -## 第三方服务商接口的使用方法 -api = ServiceCorpApi( - "SUITE_ID", - "SUITE_SECRET", - "SUITE_TICKET" -); - -try : - pre_auth_code = api.httpCall(SERVICE_CORP_API_TYPE['GET_PRE_AUTH_CODE']).get('pre_auth_code') - print pre_auth_code -except ApiException as e : - print e.errCode, e.errMsg - - -## 第三方服务商使用永久授权码调用企业接口的方法 -api = ServiceCorpApi( - "SUITE_ID", - "SUITE_SECRET", - "SUITE_TICKET", - 'AUTH_CORPID', - 'PERMANENT_CODE' -); -try : - response = api.httpCall( - CORP_API_TYPE['USER_GET'], - { - 'userid' : 'zhangsan', - }) - print response -except ApiException as e : - print e.errCode, e.errMsg diff --git a/weworkapi_python-master/api/examples/ServiceProviderTest.py b/weworkapi_python-master/api/examples/ServiceProviderTest.py deleted file mode 100644 index 5f3f238..0000000 --- a/weworkapi_python-master/api/examples/ServiceProviderTest.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File ServiceProviderTest.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-26 - # - # - -import sys -sys.path.append("../src/") - -from ServiceProviderApi import * -from TestConf import * - -api = ServiceProviderApi('CORPID', 'PROVIDER_SECRET') - -try : - response = api.httpCall( - SERVICE_PROVIDER_API_TYPE['GET_LOGIN_INFO'], - { - 'auth_code' : 'XXXXXXX', - }) - print response -except ApiException as e : - print e.errCode, e.errMsg diff --git a/weworkapi_python-master/api/examples/TestConf.py b/weworkapi_python-master/api/examples/TestConf.py deleted file mode 100644 index 9cb01af..0000000 --- a/weworkapi_python-master/api/examples/TestConf.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File conf.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -# 请将下面参数改为自己的企业相关参数再进行测试 - -TestConf = { - - # 企业的id,在管理端->"我的企业" 可以看到 - "CORP_ID" : "ww55ca070cb9b7eb22", - - # "通讯录同步"应用的secret, 开启api接口同步后,可以在管理端->"通讯录同步"看到 - "CONTACT_SYNC_SECRET" : "ktmzrVIlUH0UW63zi7-JyzsgTL9NfwUhHde6or6zwQY", - - # 某个自建应用的id及secret, 在管理端 -> 企业应用 -> 自建应用, 点进相应应用可以看到 - "APP_ID" : 1000002, - "APP_SECRET" : "v1Z2KSw2WqPFECAwn2R0a1dFsanVF5sE4IE6X5ogveQ", - - # 打卡应用的 id 及secrete, 在管理端 -> 企业应用 -> 基础应用 -> 打卡, - # 点进去,有个"api"按钮,点开后,会看到 - "CHECKIN_APP_ID" : 3010011, - "CHECKIN_APP_SECRET" : "3Qz2OGPvE1Eb6WKpEDfczvyQjL5Lr1CjrDTKn0RHdLE", - - # 审批应用的 id 及secrete, 在管理端 -> 企业应用 -> 基础应用 -> 审批, - # 点进去,有个"api"按钮,点开后,会看到 - "APPROVAL_APP_ID" : 3010040, - "APPROVAL_APP_SECRET" : "1vrlwItWpz_5Qkud55aImQPCvpzi51H3F2j-1OQzhYE", -} diff --git a/weworkapi_python-master/api/examples/UserTest.py b/weworkapi_python-master/api/examples/UserTest.py deleted file mode 100644 index 1dd6677..0000000 --- a/weworkapi_python-master/api/examples/UserTest.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File UserTest.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -import sys -sys.path.append("../src/") - -from CorpApi import * -from TestConf import * - -## test -api = CorpApi(TestConf['CORP_ID'], TestConf['CONTACT_SYNC_SECRET']) - -try : - ## - response = api.httpCall( - CORP_API_TYPE['USER_CREATE'], - { - 'userid' : 'zhangsan', - 'name' : 'zhangsanfeng', - 'mobile' : '131488888888', - 'email' : 'zhangsan@ipp.cas.cn', - 'department' : 1, - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['USER_GET'], - { - 'userid' : 'zhangsan', - }) - print response - - ## - response = api.httpCall( - CORP_API_TYPE['USER_DELETE'], - { - 'userid' : 'zhangsan', - }) - print response - -except ApiException as e : - print e.errCode, e.errMsg - - ## - response = api.httpCall( - CORP_API_TYPE['USER_DELETE'], - { - 'userid' : 'zhangsan', - }) - print response - - diff --git a/weworkapi_python-master/api/src/AbstractApi.py b/weworkapi_python-master/api/src/AbstractApi.py deleted file mode 100644 index 9c15796..0000000 --- a/weworkapi_python-master/api/src/AbstractApi.py +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File AbstractApi.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -import sys -import os -import re - -import json -import requests - -sys.path.append("../../") - -from conf import DEBUG - -class ApiException(Exception) : - def __init__(self, errCode, errMsg) : - self.errCode = errCode - self.errMsg = errMsg - -class AbstractApi(object) : - def __init__(self) : - return - - def getAccessToken(self) : - raise NotImplementedError - def refreshAccessToken(self) : - raise NotImplementedError - - def getSuiteAccessToken(self) : - raise NotImplementedError - def refreshSuiteAccessToken(self) : - raise NotImplementedError - - def getProviderAccessToken(self) : - raise NotImplementedError - def refreshProviderAccessToken(self) : - raise NotImplementedError - - def httpCall(self, urlType, args=None) : - shortUrl = urlType[0] - method = urlType[1] - response = {} - for retryCnt in range(0, 3) : - if 'POST' == method : - url = self.__makeUrl(shortUrl) - response = self.__httpPost(url, args) - elif 'GET' == method : - url = self.__makeUrl(shortUrl) - url = self.__appendArgs(url, args) - response = self.__httpGet(url) - else : - raise ApiException(-1, "unknown method type") - - # check if token expired - if self.__tokenExpired(response.get('errcode')) : - self.__refreshToken(shortUrl) - retryCnt += 1 - continue - else : - break - - return self.__checkResponse(response) - - @staticmethod - def __appendArgs(url, args) : - if args is None : - return url - - for key, value in args.items() : - if '?' in url : - url += ('&' + key + '=' + value) - else : - url += ('?' + key + '=' + value) - return url - - @staticmethod - def __makeUrl(shortUrl) : - base = "https://qyapi.weixin.qq.com" - if shortUrl[0] == '/' : - return base + shortUrl - else : - return base + '/' + shortUrl - - def __appendToken(self, url) : - if 'SUITE_ACCESS_TOKEN' in url : - return url.replace('SUITE_ACCESS_TOKEN', self.getSuiteAccessToken()) - elif 'PROVIDER_ACCESS_TOKEN' in url : - return url.replace('PROVIDER_ACCESS_TOKEN', self.getProviderAccessToken()) - elif 'ACCESS_TOKEN' in url : - return url.replace('ACCESS_TOKEN', self.getAccessToken()) - else : - return url - - def __httpPost(self, url, args) : - realUrl = self.__appendToken(url) - - if DEBUG is True : - print realUrl, args - - return requests.post(realUrl, data = json.dumps(args, ensure_ascii = False).encode('utf-8')).json() - - def __httpGet(self, url) : - realUrl = self.__appendToken(url) - - if DEBUG is True : - print realUrl - - return requests.get(realUrl).json() - - def __post_file(self, url, media_file): - return requests.post(url, file=media_file).json() - - @staticmethod - def __checkResponse(response): - errCode = response.get('errcode') - errMsg = response.get('errmsg') - - if errCode is 0: - return response - else: - raise ApiException(errCode, errMsg) - - @staticmethod - def __tokenExpired(errCode) : - if errCode == 40014 or errCode == 42001 or errCode == 42007 or errCode == 42009 : - return True - else : - return False - - def __refreshToken(self, url) : - if 'SUITE_ACCESS_TOKEN' in url : - self.refreshSuiteAccessToken() - elif 'PROVIDER_ACCESS_TOKEN' in url : - self.refreshProviderAccessToken() - elif 'ACCESS_TOKEN' in url : - self.refreshAccessToken() diff --git a/weworkapi_python-master/api/src/CorpApi.py b/weworkapi_python-master/api/src/CorpApi.py deleted file mode 100644 index 4f04a23..0000000 --- a/weworkapi_python-master/api/src/CorpApi.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File CorpApi.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -from AbstractApi import * - -CORP_API_TYPE = { - 'GET_ACCESS_TOKEN' : ['/cgi-bin/gettoken', 'GET'], - 'USER_CREATE' : ['/cgi-bin/user/create?access_token=ACCESS_TOKEN', 'POST'], - 'USER_GET' : ['/cgi-bin/user/get?access_token=ACCESS_TOKEN', 'GET'], - 'USER_UPDATE' : ['/cgi-bin/user/update?access_token=ACCESS_TOKEN', 'POST'], - 'USER_DELETE' : ['/cgi-bin/user/delete?access_token=ACCESS_TOKEN', 'GET'], - 'USER_BATCH_DELETE': ['/cgi-bin/user/batchdelete?access_token=ACCESS_TOKEN', 'POST'], - 'USER_SIMPLE_LIST': ['/cgi-bin/user/simplelist?access_token=ACCESS_TOKEN', 'GET'], - 'USER_LIST' : ['/cgi-bin/user/list?access_token=ACCESS_TOKEN', 'GET'], - 'USERID_TO_OPENID' : ['/cgi-bin/user/convert_to_openid?access_token=ACCESS_TOKEN', 'POST'], - 'OPENID_TO_USERID' : ['/cgi-bin/user/convert_to_userid?access_token=ACCESS_TOKEN', 'POST'], - 'USER_AUTH_SUCCESS': ['/cgi-bin/user/authsucc?access_token=ACCESS_TOKEN', 'GET'], - - 'DEPARTMENT_CREATE': ['/cgi-bin/department/create?access_token=ACCESS_TOKEN', 'POST'], - 'DEPARTMENT_UPDATE': ['/cgi-bin/department/update?access_token=ACCESS_TOKEN', 'POST'], - 'DEPARTMENT_DELETE': ['/cgi-bin/department/delete?access_token=ACCESS_TOKEN', 'GET'], - 'DEPARTMENT_LIST' : ['/cgi-bin/department/list?access_token=ACCESS_TOKEN', 'GET'], - - 'TAG_CREATE' : ['/cgi-bin/tag/create?access_token=ACCESS_TOKEN', 'POST'], - 'TAG_UPDATE' : ['/cgi-bin/tag/update?access_token=ACCESS_TOKEN', 'POST'], - 'TAG_DELETE' : ['/cgi-bin/tag/delete?access_token=ACCESS_TOKEN', 'GET'], - 'TAG_GET_USER' : ['/cgi-bin/tag/get?access_token=ACCESS_TOKEN', 'GET'], - 'TAG_ADD_USER' : ['/cgi-bin/tag/addtagusers?access_token=ACCESS_TOKEN', 'POST'], - 'TAG_DELETE_USER' : ['/cgi-bin/tag/deltagusers?access_token=ACCESS_TOKEN', 'POST'], - 'TAG_GET_LIST' : ['/cgi-bin/tag/list?access_token=ACCESS_TOKEN', 'GET'], - - 'BATCH_JOB_GET_RESULT' : ['/cgi-bin/batch/getresult?access_token=ACCESS_TOKEN', 'GET'], - - 'BATCH_INVITE' : ['/cgi-bin/batch/invite?access_token=ACCESS_TOKEN', 'POST'], - - 'AGENT_GET' : ['/cgi-bin/agent/get?access_token=ACCESS_TOKEN', 'GET'], - 'AGENT_SET' : ['/cgi-bin/agent/set?access_token=ACCESS_TOKEN', 'POST'], - 'AGENT_GET_LIST' : ['/cgi-bin/agent/list?access_token=ACCESS_TOKEN', 'GET'], - - 'MENU_CREATE' : ['/cgi-bin/menu/create?access_token=ACCESS_TOKEN', 'POST'], ## TODO - 'MENU_GET' : ['/cgi-bin/menu/get?access_token=ACCESS_TOKEN', 'GET'], - 'MENU_DELETE' : ['/cgi-bin/menu/delete?access_token=ACCESS_TOKEN', 'GET'], - - 'MESSAGE_SEND' : ['/cgi-bin/message/send?access_token=ACCESS_TOKEN', 'POST'], - 'MESSAGE_REVOKE' : ['/cgi-bin/message/revoke?access_token=ACCESS_TOKEN', 'POST'], - - 'MEDIA_GET' : ['/cgi-bin/media/get?access_token=ACCESS_TOKEN', 'GET'], - - 'GET_USER_INFO_BY_CODE' : ['/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN', 'GET'], - 'GET_USER_DETAIL' : ['/cgi-bin/user/getuserdetail?access_token=ACCESS_TOKEN', 'POST'], - - 'GET_TICKET' : ['/cgi-bin/ticket/get?access_token=ACCESS_TOKEN', 'GET'], - 'GET_JSAPI_TICKET' : ['/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN', 'GET'], - - 'GET_CHECKIN_OPTION' : ['/cgi-bin/checkin/getcheckinoption?access_token=ACCESS_TOKEN', 'POST'], - 'GET_CHECKIN_DATA' : ['/cgi-bin/checkin/getcheckindata?access_token=ACCESS_TOKEN', 'POST'], - 'GET_APPROVAL_DATA': ['/cgi-bin/corp/getapprovaldata?access_token=ACCESS_TOKEN', 'POST'], - - 'GET_INVOICE_INFO' : ['/cgi-bin/card/invoice/reimburse/getinvoiceinfo?access_token=ACCESS_TOKEN', 'POST'], - 'UPDATE_INVOICE_STATUS' : - ['/cgi-bin/card/invoice/reimburse/updateinvoicestatus?access_token=ACCESS_TOKEN', 'POST'], - 'BATCH_UPDATE_INVOICE_STATUS' : - ['/cgi-bin/card/invoice/reimburse/updatestatusbatch?access_token=ACCESS_TOKEN', 'POST'], - 'BATCH_GET_INVOICE_INFO' : - ['/cgi-bin/card/invoice/reimburse/getinvoiceinfobatch?access_token=ACCESS_TOKEN', 'POST'], - - 'APP_CHAT_CREATE' : ['/cgi-bin/appchat/create?access_token=ACCESS_TOKEN', 'POST'], - 'APP_CHAT_GET' : ['/cgi-bin/appchat/get?access_token=ACCESS_TOKEN', 'GET'], - 'APP_CHAT_UPDATE' : ['/cgi-bin/appchat/update?access_token=ACCESS_TOKEN', 'POST'], - 'APP_CHAT_SEND' : ['/cgi-bin/appchat/send?access_token=ACCESS_TOKEN', 'POST'], - - 'MINIPROGRAM_CODE_TO_SESSION_KEY' : ['/cgi-bin/miniprogram/jscode2session?access_token=ACCESS_TOKEN', 'GET'], -} - -class CorpApi(AbstractApi) : - def __init__(self, corpid, secret) : - self.corpid = corpid - self.secret = secret - self.access_token = None - - def getAccessToken(self) : - if self.access_token is None : - self.refreshAccessToken() - return self.access_token - - def refreshAccessToken(self) : - response = self.httpCall( - CORP_API_TYPE['GET_ACCESS_TOKEN'], - { - 'corpid' : self.corpid, - 'corpsecret': self.secret, - }) - self.access_token = response.get('access_token') - diff --git a/weworkapi_python-master/api/src/ServiceCorpApi.py b/weworkapi_python-master/api/src/ServiceCorpApi.py deleted file mode 100644 index a700e43..0000000 --- a/weworkapi_python-master/api/src/ServiceCorpApi.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File ServiceCorp.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-24 - # - # - -from CorpApi import * - -SERVICE_CORP_API_TYPE = { - 'GET_CORP_TOKEN' : ['/cgi-bin/service/get_corp_token?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_SUITE_TOKEN' : ['/cgi-bin/service/get_suite_token', 'POST'], - 'GET_PRE_AUTH_CODE' : ['/cgi-bin/service/get_pre_auth_code?suite_access_token=SUITE_ACCESS_TOKEN', 'GET'], - 'SET_SESSION_INFO' : ['/cgi-bin/service/set_session_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_PERMANENT_CODE': ['/cgi-bin/service/get_permanent_code?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_AUTH_INFO' : ['/cgi-bin/service/get_auth_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_ADMIN_LIST' : ['/cgi-bin/service/get_admin_list?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_USER_INFO_BY_3RD' : ['/cgi-bin/service/getuserinfo3rd?suite_access_token=SUITE_ACCESS_TOKEN', 'GET'], - 'GET_USER_DETAIL_BY_3RD' : ['/cgi-bin/service/getuserdetail3rd?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], -} - -class ServiceCorpApi(CorpApi) : - def __init__(self, suite_id, suite_secret, suite_ticket, auth_corpid=None, permanent_code=None) : - self.suite_id = suite_id - self.suite_secret = suite_secret - self.suite_ticket = suite_ticket - - # 调用 CorpAPI 的function, 需要设置这两个参数 - self.auth_corpid = auth_corpid - self.permanent_code = permanent_code - - self.access_token = None - self.suite_access_token = None - - ## override CorpApi 的 refreshAccessToken, 使用第三方服务商的方法 - def getAccessToken(self) : - if self.access_token is None : - self.refreshAccessToken() - return self.access_token - def refreshAccessToken(self) : - response = self.httpCall( - SERVICE_CORP_API_TYPE['GET_CORP_TOKEN'], - { - "auth_corpid" : self.auth_corpid, - "permanent_code": self.permanent_code, - }) - self.access_token = response.get('access_token') - - ## - def getSuiteAccessToken(self) : - if self.suite_access_token is None : - self.refreshSuiteAccessToken() - return self.suite_access_token - - def refreshSuiteAccessToken(self) : - response = self.httpCall( - SERVICE_CORP_API_TYPE['GET_SUITE_TOKEN'], - { - "suite_id" : self.suite_id, - "suite_secret" : self.suite_secret, - "suite_ticket" : self.suite_ticket, - }) - self.suite_access_token= response.get('suite_access_token') - diff --git a/weworkapi_python-master/api/src/ServiceProviderApi.py b/weworkapi_python-master/api/src/ServiceProviderApi.py deleted file mode 100644 index 2026714..0000000 --- a/weworkapi_python-master/api/src/ServiceProviderApi.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File ServiceProviderApi.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-26 - # - # - -from AbstractApi import * - -SERVICE_PROVIDER_API_TYPE = { - 'GET_PROVIDER_TOKEN': ['/cgi-bin/service/get_provider_token', 'POST'], - 'GET_LOGIN_INFO' : ['/cgi-bin/service/get_login_info?access_token=PROVIDER_ACCESS_TOKEN', 'POST'], - 'GET_REGISTER_CODE' : ['/cgi-bin/service/get_register_code?provider_access_token=PROVIDER_ACCESS_TOKEN', 'POST'], - 'GET_REGISTER_INFO' : ['/cgi-bin/service/get_register_info?provider_access_token=PROVIDER_ACCESS_TOKEN', 'POST'], - 'SET_AGENT_SCOPE' : ['/cgi-bin/agent/set_scope', 'POST'], ### TODO - 'SET_CONTACT_SYNC_SUCCESS' : ['/cgi-bin/sync/contact_sync_success', 'GET'], -} - -class ServiceProviderApi(AbstractApi) : - def __init__(self, corpid, provider_secret) : - self.corpid = corpid - self.provider_secret = provider_secret - - self.provider_access_token = None - - def getProviderAccessToken(self) : - if self.provider_access_token is None : - self.refreshProviderAccessToken() - return self.provider_access_token - - def refreshProviderAccessToken(self) : - response = self.httpCall( - SERVICE_PROVIDER_API_TYPE['GET_PROVIDER_TOKEN'], - { - 'corpid' : self.corpid, - 'provider_secret': self.provider_secret, - }) - self.provider_access_token = response.get('provider_access_token') - diff --git a/weworkapi_python-master/callback/Readme.txt b/weworkapi_python-master/callback/Readme.txt deleted file mode 100644 index 7b8dd0c..0000000 --- a/weworkapi_python-master/callback/Readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -注意事项 -1.WXBizMsgCrypt.py文件封装了WXBizMsgCrypt接口类(Python3以及以上版本使用 WXBizMsgCrypt3.py),提供了用户接入企业微信的三个接口,Sample.py文件提供了如何使用这三个接口的示例,ierror.py提供了错误码。 -2.WXBizMsgCrypt封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url,收到用户回复消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.py文件。 -3.加解密协议请参考企业微信官方文档。 -4.本代码用到了pycrypto第三方库,请开发者自行安装此库再使用。 diff --git a/weworkapi_python-master/callback/Sample.py b/weworkapi_python-master/callback/Sample.py deleted file mode 100644 index f1faa7c..0000000 --- a/weworkapi_python-master/callback/Sample.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 03:55:41 PM CST -# File Name: Sample.py -# Description: WXBizMsgCrypt 使用demo文件 -######################################################################### -from WXBizMsgCrypt import WXBizMsgCrypt -import xml.etree.cElementTree as ET -import sys - -if __name__ == "__main__": - # 企业在企业微信后台上设置的密钥相关配置在这里 TODO - sToken = "xxxxxxx" - sEncodingAESKey = "xxxxxxx" - sCorpID = "ww1436e0e65a779aee" - ''' - ------------使用示例一:验证回调URL--------------- - *企业开启回调模式时,企业号会向验证url发送一个get请求 - 假设点击验证时,企业收到类似请求: - * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D - * HTTP/1.1 Host: qy.weixin.qq.com - - 接收到该请求时,企业应 1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr), - 这一步注意作URL解码。 - 2.验证消息体签名的正确性 - 3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信 - 第2,3步可以用企业微信提供的库函数VerifyURL来实现。 - ''' - wxcpt=WXBizMsgCrypt(sToken,sEncodingAESKey,sCorpID) - #sVerifyMsgSig=HttpUtils.ParseUrl("msg_signature") - #ret = wxcpt.VerifyAESKey() - #print ret - sVerifyMsgSig="012bc692d0a58dd4b10f8dfe5c4ac00ae211ebeb" - #sVerifyTimeStamp=HttpUtils.ParseUrl("timestamp") - sVerifyTimeStamp="1476416373" - #sVerifyNonce=HttpUitls.ParseUrl("nonce") - sVerifyNonce="47744683" - #sVerifyEchoStr=HttpUtils.ParseUrl("echostr") - sVerifyEchoStr="fsi1xnbH4yQh0+PJxcOdhhK6TDXkjMyhEPA7xB2TGz6b+g7xyAbEkRxN/3cNXW9qdqjnoVzEtpbhnFyq6SVHyA==" - ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr) - if(ret!=0): - print "ERR: VerifyURL ret: " + str(ret) - sys.exit(1) - #验证URL成功,将sEchoStr返回给企业号 - #HttpUtils.SetResponse(sEchoStr) - - ''' - ------------使用示例二:对用户回复的消息解密--------------- - 用户回复消息或者点击事件响应时,企业会收到回调消息,此消息是经过企业微信加密之后的密文以post形式发送给企业,密文格式请参考官方文档 - 假设企业收到企业微信的回调消息如下: - POST /cgi-bin/wxpush? msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=1372623149 HTTP/1.1 - Host: qy.weixin.qq.com - Content-Length: 613 - - - - - 企业收到post请求之后应该 1.解析出url上的参数,包括消息体签名(msg_signature),时间戳(timestamp)以及随机数字串(nonce) - 2.验证消息体签名的正确性。 3.将post请求的数据进行xml解析,并将标签的内容进行解密,解密出来的明文即是用户回复消息的明文,明文格式请参考官方文档 - 第2,3步可以用企业微信提供的库函数DecryptMsg来实现。 - ''' - # sReqMsgSig = HttpUtils.ParseUrl("msg_signature") - sReqMsgSig = "0c3914025cb4b4d68103f6bfc8db550f79dcf48e" - sReqTimeStamp = "1476422779" - sReqNonce = "1597212914" - sReqData = "\n\n\n" - ret,sMsg=wxcpt.DecryptMsg( sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce) - print ret,sMsg - if( ret!=0 ): - print "ERR: DecryptMsg ret: " + str(ret) - sys.exit(1) - # 解密成功,sMsg即为xml格式的明文 - # TODO: 对明文的处理 - # For example: - xml_tree = ET.fromstring(sMsg) - content = xml_tree.find("Content").text - print content - # ... - # ... - - ''' - ------------使用示例三:企业回复用户消息的加密--------------- - 企业被动回复用户的消息也需要进行加密,并且拼接成密文格式的xml串。 - 假设企业需要回复用户的明文如下: - - - - 1348831860 - - - 1234567890123456 - 128 - - - 为了将此段明文回复给用户,企业应: 1.自己生成时间时间戳(timestamp),随机数字串(nonce)以便生成消息体签名,也可以直接用从企业微信的post url上解析出的对应值。 - 2.将明文加密得到密文。 3.用密文,步骤1生成的timestamp,nonce和企业在企业微信设定的token生成消息体签名。 4.将密文,消息体签名,时间戳,随机数字串拼接成xml格式的字符串,发送给企业号。 - 以上2,3,4步可以用企业微信提供的库函数EncryptMsg来实现。 - ''' - sRespData = "ww1436e0e65a779aeeChenJiaShun1476422779text你好14564537201000002" - ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp) - if( ret!=0 ): - print "ERR: EncryptMsg ret: " + str(ret) - sys.exit(1) - #ret == 0 加密成功,企业需要将sEncryptMsg返回给企业号 - #TODO: - #HttpUitls.SetResponse(sEncryptMsg) #测试解密 diff --git a/weworkapi_python-master/callback/WXBizMsgCrypt.py b/weworkapi_python-master/callback/WXBizMsgCrypt.py deleted file mode 100644 index 94e4e12..0000000 --- a/weworkapi_python-master/callback/WXBizMsgCrypt.py +++ /dev/null @@ -1,274 +0,0 @@ -#!/usr/bin/env python -#-*- encoding:utf-8 -*- - -""" 对企业微信发送给企业后台的消息加解密示例代码. -@copyright: Copyright (c) 1998-2014 Tencent Inc. - -""" -# ------------------------------------------------------------------------ - -import base64 -import string -import random -import hashlib -import time -import struct -from Crypto.Cipher import AES -import xml.etree.cElementTree as ET -import sys -import socket -stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr -reload(sys) -sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde -import ierror -sys.setdefaultencoding('utf-8') - -""" -关于Crypto.Cipher模块,ImportError: No module named 'Crypto'解决方案 -请到官方网站 https://www.dlitz.net/software/pycrypto/ 下载pycrypto。 -下载后,按照README中的“Installation”小节的提示进行pycrypto安装。 -""" -class FormatException(Exception): - pass - -def throw_exception(message, exception_class=FormatException): - """my define raise exception function""" - raise exception_class(message) - -class SHA1: - """计算企业微信的消息签名接口""" - - def getSHA1(self, token, timestamp, nonce, encrypt): - """用SHA1算法生成安全签名 - @param token: 票据 - @param timestamp: 时间戳 - @param encrypt: 密文 - @param nonce: 随机字符串 - @return: 安全签名 - """ - try: - sortlist = [token, timestamp, nonce, encrypt] - sortlist.sort() - sha = hashlib.sha1() - sha.update("".join(sortlist)) - return ierror.WXBizMsgCrypt_OK, sha.hexdigest() - except Exception,e: - print e - return ierror.WXBizMsgCrypt_ComputeSignature_Error, None - - -class XMLParse: - """提供提取消息格式中的密文及生成回复消息格式的接口""" - - # xml消息模板 - AES_TEXT_RESPONSE_TEMPLATE = """ - - -%(timestamp)s - -""" - - def extract(self, xmltext): - """提取出xml数据包中的加密消息 - @param xmltext: 待提取的xml字符串 - @return: 提取出的加密消息字符串 - """ - try: - xml_tree = ET.fromstring(xmltext) - encrypt = xml_tree.find("Encrypt") - return ierror.WXBizMsgCrypt_OK, encrypt.text - except Exception,e: - print e - return ierror.WXBizMsgCrypt_ParseXml_Error,None - - def generate(self, encrypt, signature, timestamp, nonce): - """生成xml消息 - @param encrypt: 加密后的消息密文 - @param signature: 安全签名 - @param timestamp: 时间戳 - @param nonce: 随机字符串 - @return: 生成的xml字符串 - """ - resp_dict = { - 'msg_encrypt' : encrypt, - 'msg_signaturet': signature, - 'timestamp' : timestamp, - 'nonce' : nonce, - } - resp_xml = self.AES_TEXT_RESPONSE_TEMPLATE % resp_dict - return resp_xml - - -class PKCS7Encoder(): - """提供基于PKCS7算法的加解密接口""" - - block_size = 32 - def encode(self, text): - """ 对需要加密的明文进行填充补位 - @param text: 需要进行填充补位操作的明文 - @return: 补齐明文字符串 - """ - text_length = len(text) - # 计算需要填充的位数 - amount_to_pad = self.block_size - (text_length % self.block_size) - if amount_to_pad == 0: - amount_to_pad = self.block_size - # 获得补位所用的字符 - pad = chr(amount_to_pad) - return text + pad * amount_to_pad - - def decode(self, decrypted): - """删除解密后明文的补位字符 - @param decrypted: 解密后的明文 - @return: 删除补位字符后的明文 - """ - pad = ord(decrypted[-1]) - if pad<1 or pad >32: - pad = 0 - return decrypted[:-pad] - - -class Prpcrypt(object): - """提供接收和推送给企业微信消息的加解密接口""" - - def __init__(self,key): - - #self.key = base64.b64decode(key+"=") - self.key = key - # 设置加解密模式为AES的CBC模式 - self.mode = AES.MODE_CBC - - - def encrypt(self,text,receiveid): - """对明文进行加密 - @param text: 需要加密的明文 - @return: 加密得到的字符串 - """ - # 16位随机字符串添加到明文开头 - text = self.get_random_str() + struct.pack("I",socket.htonl(len(text))) + text + receiveid - # 使用自定义的填充方式对明文进行补位填充 - pkcs7 = PKCS7Encoder() - text = pkcs7.encode(text) - # 加密 - cryptor = AES.new(self.key,self.mode,self.key[:16]) - try: - ciphertext = cryptor.encrypt(text) - # 使用BASE64对加密后的字符串进行编码 - return ierror.WXBizMsgCrypt_OK, base64.b64encode(ciphertext) - except Exception,e: - print e - return ierror.WXBizMsgCrypt_EncryptAES_Error,None - - def decrypt(self,text,receiveid): - """对解密后的明文进行补位删除 - @param text: 密文 - @return: 删除填充补位后的明文 - """ - try: - cryptor = AES.new(self.key,self.mode,self.key[:16]) - # 使用BASE64对密文进行解码,然后AES-CBC解密 - plain_text = cryptor.decrypt(base64.b64decode(text)) - except Exception,e: - print e - return ierror.WXBizMsgCrypt_DecryptAES_Error,None - try: - pad = ord(plain_text[-1]) - # 去掉补位字符串 - #pkcs7 = PKCS7Encoder() - #plain_text = pkcs7.encode(plain_text) - # 去除16位随机字符串 - content = plain_text[16:-pad] - xml_len = socket.ntohl(struct.unpack("I",content[ : 4])[0]) - xml_content = content[4 : xml_len+4] - from_receiveid = content[xml_len+4:] - except Exception,e: - print e - return ierror.WXBizMsgCrypt_IllegalBuffer,None - if from_receiveid != receiveid: - return ierror.WXBizMsgCrypt_ValidateCorpid_Error,None - return 0,xml_content - - def get_random_str(self): - """ 随机生成16位字符串 - @return: 16位字符串 - """ - rule = string.letters + string.digits - str = random.sample(rule, 16) - return "".join(str) - -class WXBizMsgCrypt(object): - #构造函数 - def __init__(self,sToken,sEncodingAESKey,sReceiveId): - try: - self.key = base64.b64decode(sEncodingAESKey+"=") - assert len(self.key) == 32 - except: - throw_exception("[error]: EncodingAESKey unvalid !", FormatException) - # return ierror.WXBizMsgCrypt_IllegalAesKey,None - self.m_sToken = sToken - self.m_sReceiveId = sReceiveId - - #验证URL - #@param sMsgSignature: 签名串,对应URL参数的msg_signature - #@param sTimeStamp: 时间戳,对应URL参数的timestamp - #@param sNonce: 随机串,对应URL参数的nonce - #@param sEchoStr: 随机串,对应URL参数的echostr - #@param sReplyEchoStr: 解密之后的echostr,当return返回0时有效 - #@return:成功0,失败返回对应的错误码 - - def VerifyURL(self, sMsgSignature, sTimeStamp, sNonce, sEchoStr): - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, sEchoStr) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret,sReplyEchoStr = pc.decrypt(sEchoStr,self.m_sReceiveId) - return ret,sReplyEchoStr - - def EncryptMsg(self, sReplyMsg, sNonce, timestamp = None): - #将企业回复用户的消息加密打包 - #@param sReplyMsg: 企业号待回复用户的消息,xml格式的字符串 - #@param sTimeStamp: 时间戳,可以自己生成,也可以用URL参数的timestamp,如为None则自动用当前时间 - #@param sNonce: 随机串,可以自己生成,也可以用URL参数的nonce - #sEncryptMsg: 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的xml格式的字符串, - #return:成功0,sEncryptMsg,失败返回对应的错误码None - pc = Prpcrypt(self.key) - ret,encrypt = pc.encrypt(sReplyMsg, self.m_sReceiveId) - if ret != 0: - return ret,None - if timestamp is None: - timestamp = str(int(time.time())) - # 生成安全签名 - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, timestamp, sNonce, encrypt) - if ret != 0: - return ret,None - xmlParse = XMLParse() - return ret,xmlParse.generate(encrypt, signature, timestamp, sNonce) - - def DecryptMsg(self, sPostData, sMsgSignature, sTimeStamp, sNonce): - # 检验消息的真实性,并且获取解密后的明文 - # @param sMsgSignature: 签名串,对应URL参数的msg_signature - # @param sTimeStamp: 时间戳,对应URL参数的timestamp - # @param sNonce: 随机串,对应URL参数的nonce - # @param sPostData: 密文,对应POST请求的数据 - # xml_content: 解密后的原文,当return返回0时有效 - # @return: 成功0,失败返回对应的错误码 - # 验证安全签名 - xmlParse = XMLParse() - ret,encrypt = xmlParse.extract(sPostData) - if ret != 0: - return ret, None - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, encrypt) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret,xml_content = pc.decrypt(encrypt,self.m_sReceiveId) - return ret,xml_content - - diff --git a/weworkapi_python-master/callback/ierror.py b/weworkapi_python-master/callback/ierror.py deleted file mode 100644 index 6678fec..0000000 --- a/weworkapi_python-master/callback/ierror.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 01:53:58 PM CST -# File Name: ierror.py -# Description:定义错误码含义 -######################################################################### -WXBizMsgCrypt_OK = 0 -WXBizMsgCrypt_ValidateSignature_Error = -40001 -WXBizMsgCrypt_ParseXml_Error = -40002 -WXBizMsgCrypt_ComputeSignature_Error = -40003 -WXBizMsgCrypt_IllegalAesKey = -40004 -WXBizMsgCrypt_ValidateCorpid_Error = -40005 -WXBizMsgCrypt_EncryptAES_Error = -40006 -WXBizMsgCrypt_DecryptAES_Error = -40007 -WXBizMsgCrypt_IllegalBuffer = -40008 -WXBizMsgCrypt_EncodeBase64_Error = -40009 -WXBizMsgCrypt_DecodeBase64_Error = -40010 -WXBizMsgCrypt_GenReturnXml_Error = -40011 diff --git a/weworkapi_python-master/callback_json/Readme.txt b/weworkapi_python-master/callback_json/Readme.txt deleted file mode 100644 index 79ebb21..0000000 --- a/weworkapi_python-master/callback_json/Readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -ע -1.WXBizMsgCrypt.pyļװWXBizMsgCryptӿ࣬ṩûҵ΢ŵӿڣSample.pyļṩʹӿڵʾierror.pyṩ˴롣 -2.WXBizMsgCryptװVerifyURL, DecryptMsg, EncryptMsgӿڣֱڿ֤صurlյûظϢĽԼ߻ظϢļ̡ܹʹ÷ԲοSample.pyļ -3.ӽЭοҵ΢Źٷĵ -4.õpycrypto⣬뿪аװ˿ʹá \ No newline at end of file diff --git a/weworkapi_python-master/callback_json/Sample.py b/weworkapi_python-master/callback_json/Sample.py deleted file mode 100644 index 5819337..0000000 --- a/weworkapi_python-master/callback_json/Sample.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 03:55:41 PM CST -# File Name: Sample.py -# Description: WXBizJsonMsgCrypt 使用demo文件 -######################################################################### -from WXBizJsonMsgCrypt import WXBizJsonMsgCrypt -import sys - -if __name__ == "__main__": - # 企业在企业微信后台上设置的密钥相关配置在这里 TODO - sToken = "xxxxxxx" - sEncodingAESKey = "xxxxxxx" - sCorpID = "ww1436e0e65a779aee" - ''' - ------------使用示例一:验证回调URL--------------- - *企业开启回调模式时,企业号会向验证url发送一个get请求 - 假设点击验证时,企业收到类似请求: - * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D - * HTTP/1.1 Host: qy.weixin.qq.com - - 接收到该请求时,企业应 1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr), - 这一步注意作URL解码。 - 2.验证消息体签名的正确性 - 3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信 - 第2,3步可以用企业微信提供的库函数VerifyURL来实现。 - ''' - wxcpt=WXBizJsonMsgCrypt(sToken,sEncodingAESKey,sCorpID) - sVerifyMsgSig="012bc692d0a58dd4b10f8dfe5c4ac00ae211ebeb" - sVerifyTimeStamp="1476416373" - sVerifyNonce="47744683" - sVerifyEchoStr="fsi1xnbH4yQh0+PJxcOdhhK6TDXkjMyhEPA7xB2TGz6b+g7xyAbEkRxN/3cNXW9qdqjnoVzEtpbhnFyq6SVHyA==" - ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr) - if(ret!=0): - print "ERR: VerifyURL ret: " + str(ret) - sys.exit(1) - else: - print "done VerifyURL" - #验证URL成功,将sEchoStr返回给企业号 - - print "==============================" - ''' - ------------使用示例二:对用户回复的消息解密--------------- - 用户回复消息或者点击事件响应时,企业会收到回调消息,此消息是经过企业微信加密之后的密文以post形式发送给企业,密文格式请参考官方文档 - 假设企业收到企业微信的回调消息如下: - POST /cgi-bin/wxpush? msg_signature=e3647471e395139e2308c1fa963f2d648a00b90e×tamp=1409659813&nonce=1372623149 HTTP/1.1 - Host: qy.weixin.qq.com - - { - "tousername": "wx5823bf96d3bd56c7", - "encrypt": "cjhLUX7UU4yCSelv1vz7T0zT8huF51bAMVWriNvO1FMegHrQZNrtvRxbwf0fUPsFvwqR0U0fgiJNEA5Y30F2MoI2S7vv3EjVQ68C0cjw9frBoUE2Hj0BvFp9h3u6Vbsg4lc1C8AtHdaN8orKuNKkLRLuYEL52R1J3v8olJGZRLnRdVKIivixmX/eQpzgeExtp20jI1HxRP1AAZ6xZoILdqDPO549LO4WeG+685JRUTdiwcY5fjZlqeMxuT4PpMn1X9OWsS7NRj06Wa5E3Tvg4twjWp39KPfOdRte6P1T4JU=", - "agentid": 218 - } - - 企业收到post请求之后应该 1.解析出url上的参数,包括消息体签名(msg_signature),时间戳(timestamp)以及随机数字串(nonce) - 2.验证消息体签名的正确性。 3.将post请求的数据进行json解析,并将"encrypt"标签的内容进行解密,解密出来的明文即是用户回复消息的明文,明文格式请参考官方文档 - 第2,3步可以用企业微信提供的库函数DecryptMsg来实现。 - ''' - - sReqNonce = "1372623149" - sReqTimeStamp = "1409659813" - - sReqMsgSig = "e3647471e395139e2308c1fa963f2d648a00b90e" - sReqData = '{ "tousername": "wx5823bf96d3bd56c7", "encrypt": "cjhLUX7UU4yCSelv1vz7T0zT8huF51bAMVWriNvO1FMegHrQZNrtvRxbwf0fUPsFvwqR0U0fgiJNEA5Y30F2MoI2S7vv3EjVQ68C0cjw9frBoUE2Hj0BvFp9h3u6Vbsg4lc1C8AtHdaN8orKuNKkLRLuYEL52R1J3v8olJGZRLnRdVKIivixmX/eQpzgeExtp20jI1HxRP1AAZ6xZoILdqDPO549LO4WeG+685JRUTdiwcY5fjZlqeMxuT4PpMn1X9OWsS7NRj06Wa5E3Tvg4twjWp39KPfOdRte6P1T4JU=", "agentid": 218 }'; - ret,sMsg=wxcpt.DecryptMsg( sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce) - if( ret!=0 ): - print "ERR: DecryptMsg ret: " + str(ret) - sys.exit(1) - else: - print sMsg - # 解密成功,sMsg即为json格式的明文 - # TODO: 对明文的处理 - # ... - # ... - - print "==============================" - - ''' - ------------使用示例三:企业回复用户消息的加密--------------- - 企业被动回复用户的消息也需要进行加密,并且拼接成密文格式的json串。 - 假设企业需要回复用户的明文如下: - - { - "ToUserName": "mycreate", - "FromUserName":"wx5823bf96d3bd56c7", - "CreateTime": 1348831860, - "MsgType": "text", - "Content": "this is a test", - "MsgId": 1234567890123456, - "AgentID": 128 - } - - 为了将此段明文回复给用户,企业应: 1.自己生成时间时间戳(timestamp),随机数字串(nonce)以便生成消息体签名,也可以直接用从企业微信的post url上解析出的对应值。 - 2.将明文加密得到密文。 3.用密文,步骤1生成的timestamp,nonce和企业在企业微信设定的token生成消息体签名。 4.将密文,消息体签名,时间戳,随机数字串拼接成json格式的字符串,发送给企业号。 - 以上2,3,4步可以用企业微信提供的库函数EncryptMsg来实现。 - ''' - #sRespData = ' { "ToUserName": "mycreate", "FromUserName":"wx5823bf96d3bd56c7", "CreateTime": 1348831860, "MsgType": "text", "Content": "this is a test", "MsgId": 1234567890123456, "AgentID": 128 }'; - sRespData = '{ "ToUserName": "wx5823bf96d3bd56c7", "FromUserName": :mycreate", "CreateTime": 1409659813, "MsgType": "text", "Content": "hello", "MsgId": 4561255354251345929, "AgentID": 218}' - ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp) - if( ret!=0 ): - print "ERR: EncryptMsg ret: " + str(ret) - sys.exit(1) - else: - print sEncryptMsg - #ret == 0 加密成功,企业需要将sEncryptMsg返回给企业号 - print "==============================" diff --git a/weworkapi_python-master/callback_json/WXBizJsonMsgCrypt.py b/weworkapi_python-master/callback_json/WXBizJsonMsgCrypt.py deleted file mode 100644 index d0be3cc..0000000 --- a/weworkapi_python-master/callback_json/WXBizJsonMsgCrypt.py +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env python -#-*- encoding:utf-8 -*- - -""" 对企业微信发送给企业后台的消息加解密示例代码. -@copyright: Copyright (c) 1998-2020 Tencent Inc. - -""" -# ------------------------------------------------------------------------ - -import base64 -import string -import random -import hashlib -import time -import struct -from Crypto.Cipher import AES -import sys -import socket -import json - -reload(sys) -import ierror -sys.setdefaultencoding('utf-8') - -""" -关于Crypto.Cipher模块,ImportError: No module named 'Crypto'解决方案 -请到官方网站 https://www.dlitz.net/software/pycrypto/ 下载pycrypto。 -下载后,按照README中的“Installation”小节的提示进行pycrypto安装。 -""" -class FormatException(Exception): - pass - -def throw_exception(message, exception_class=FormatException): - """my define raise exception function""" - raise exception_class(message) - -class SHA1: - """计算企业微信的消息签名接口""" - - def getSHA1(self, token, timestamp, nonce, encrypt): - """用SHA1算法生成安全签名 - @param token: 票据 - @param timestamp: 时间戳 - @param encrypt: 密文 - @param nonce: 随机字符串 - @return: 安全签名 - """ - try: - sortlist = [token, timestamp, nonce, encrypt] - sortlist.sort() - sha = hashlib.sha1() - sha.update("".join(sortlist)) - return ierror.WXBizMsgCrypt_OK, sha.hexdigest() - except Exception,e: - print e - return ierror.WXBizMsgCrypt_ComputeSignature_Error, None - - -class JsonParse: - """提供提取消息格式中的密文及生成回复消息格式的接口""" - - # json消息模板 - AES_TEXT_RESPONSE_TEMPLATE = '''{ - "encrypt": "%(msg_encrypt)s", - "msgsignature": "%(msg_signaturet)s", - "timestamp": "%(timestamp)s", - "nonce": "%(nonce)s" - }''' - - def extract(self, jsontext): - """提取出json数据包中的加密消息 - @param jsontext: 待提取的json字符串 - @return: 提取出的加密消息字符串 - """ - try: - json_dict = json.loads(jsontext) - return ierror.WXBizMsgCrypt_OK, json_dict['encrypt'] - except Exception,e: - print e - return ierror.WXBizMsgCrypt_ParseJson_Error, None - def generate(self, encrypt, signature, timestamp, nonce): - """生成json消息 - @param encrypt: 加密后的消息密文 - @param signature: 安全签名 - @param timestamp: 时间戳 - @param nonce: 随机字符串 - @return: 生成的json字符串 - """ - resp_dict = { - 'msg_encrypt' : encrypt, - 'msg_signaturet': signature, - 'timestamp' : timestamp, - 'nonce' : nonce, - } - resp_json = self.AES_TEXT_RESPONSE_TEMPLATE % resp_dict - return resp_json - - -class PKCS7Encoder(): - """提供基于PKCS7算法的加解密接口""" - - block_size = 32 - def encode(self, text): - """ 对需要加密的明文进行填充补位 - @param text: 需要进行填充补位操作的明文 - @return: 补齐明文字符串 - """ - text_length = len(text) - # 计算需要填充的位数 - amount_to_pad = self.block_size - (text_length % self.block_size) - if amount_to_pad == 0: - amount_to_pad = self.block_size - # 获得补位所用的字符 - pad = chr(amount_to_pad) - return text + pad * amount_to_pad - - def decode(self, decrypted): - """删除解密后明文的补位字符 - @param decrypted: 解密后的明文 - @return: 删除补位字符后的明文 - """ - pad = ord(decrypted[-1]) - if pad<1 or pad >32: - pad = 0 - return decrypted[:-pad] - - -class Prpcrypt(object): - """提供接收和推送给企业微信消息的加解密接口""" - - def __init__(self,key): - - #self.key = base64.b64decode(key+"=") - self.key = key - # 设置加解密模式为AES的CBC模式 - self.mode = AES.MODE_CBC - - - def encrypt(self,text,receiveid): - """对明文进行加密 - @param text: 需要加密的明文 - @return: 加密得到的字符串 - """ - # 16位随机字符串添加到明文开头 - text = self.get_random_str() + struct.pack("I",socket.htonl(len(text))) + text + receiveid - # 使用自定义的填充方式对明文进行补位填充 - pkcs7 = PKCS7Encoder() - text = pkcs7.encode(text) - # 加密 - cryptor = AES.new(self.key,self.mode,self.key[:16]) - try: - ciphertext = cryptor.encrypt(text) - # 使用BASE64对加密后的字符串进行编码 - return ierror.WXBizMsgCrypt_OK, base64.b64encode(ciphertext) - except Exception,e: - print e - return ierror.WXBizMsgCrypt_EncryptAES_Error,None - - def decrypt(self,text,receiveid): - """对解密后的明文进行补位删除 - @param text: 密文 - @return: 删除填充补位后的明文 - """ - try: - cryptor = AES.new(self.key,self.mode,self.key[:16]) - # 使用BASE64对密文进行解码,然后AES-CBC解密 - plain_text = cryptor.decrypt(base64.b64decode(text)) - except Exception,e: - print e - return ierror.WXBizMsgCrypt_DecryptAES_Error,None - try: - pad = ord(plain_text[-1]) - # 去掉补位字符串 - #pkcs7 = PKCS7Encoder() - #plain_text = pkcs7.encode(plain_text) - # 去除16位随机字符串 - content = plain_text[16:-pad] - json_len = socket.ntohl(struct.unpack("I",content[ : 4])[0]) - json_content = content[4 : json_len+4] - from_receiveid = content[json_len+4:] - except Exception,e: - print e - return ierror.WXBizMsgCrypt_IllegalBuffer,None - if from_receiveid != receiveid: - print "receiveid not match" - print from_receiveid - return ierror.WXBizMsgCrypt_ValidateCorpid_Error,None - return 0,json_content - - def get_random_str(self): - """ 随机生成16位字符串 - @return: 16位字符串 - """ - rule = string.letters + string.digits - str = random.sample(rule, 16) - return "".join(str) - -class WXBizJsonMsgCrypt(object): - #构造函数 - def __init__(self,sToken,sEncodingAESKey,sReceiveId): - try: - self.key = base64.b64decode(sEncodingAESKey+"=") - assert len(self.key) == 32 - except: - throw_exception("[error]: EncodingAESKey unvalid !", FormatException) - # return ierror.WXBizMsgCrypt_IllegalAesKey,None - self.m_sToken = sToken - self.m_sReceiveId = sReceiveId - - #验证URL - #@param sMsgSignature: 签名串,对应URL参数的msg_signature - #@param sTimeStamp: 时间戳,对应URL参数的timestamp - #@param sNonce: 随机串,对应URL参数的nonce - #@param sEchoStr: 随机串,对应URL参数的echostr - #@param sReplyEchoStr: 解密之后的echostr,当return返回0时有效 - #@return:成功0,失败返回对应的错误码 - - def VerifyURL(self, sMsgSignature, sTimeStamp, sNonce, sEchoStr): - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, sEchoStr) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret,sReplyEchoStr = pc.decrypt(sEchoStr,self.m_sReceiveId) - return ret,sReplyEchoStr - - def EncryptMsg(self, sReplyMsg, sNonce, timestamp = None): - #将企业回复用户的消息加密打包 - #@param sReplyMsg: 企业号待回复用户的消息,json格式的字符串 - #@param sTimeStamp: 时间戳,可以自己生成,也可以用URL参数的timestamp,如为None则自动用当前时间 - #@param sNonce: 随机串,可以自己生成,也可以用URL参数的nonce - #sEncryptMsg: 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的json格式的字符串, - #return:成功0,sEncryptMsg,失败返回对应的错误码None - pc = Prpcrypt(self.key) - ret,encrypt = pc.encrypt(sReplyMsg, self.m_sReceiveId) - if ret != 0: - return ret,None - if timestamp is None: - timestamp = str(int(time.time())) - # 生成安全签名 - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, timestamp, sNonce, encrypt) - if ret != 0: - return ret,None - jsonParse = JsonParse() - return ret,jsonParse.generate(encrypt, signature, timestamp, sNonce) - - def DecryptMsg(self, sPostData, sMsgSignature, sTimeStamp, sNonce): - # 检验消息的真实性,并且获取解密后的明文 - # @param sMsgSignature: 签名串,对应URL参数的msg_signature - # @param sTimeStamp: 时间戳,对应URL参数的timestamp - # @param sNonce: 随机串,对应URL参数的nonce - # @param sPostData: 密文,对应POST请求的数据 - # json_content: 解密后的原文,当return返回0时有效 - # @return: 成功0,失败返回对应的错误码 - # 验证安全签名 - jsonParse = JsonParse() - ret,encrypt = jsonParse.extract(sPostData) - if ret != 0: - return ret, None - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, encrypt) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - print "signature not match" - print signature - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret,json_content = pc.decrypt(encrypt,self.m_sReceiveId) - return ret,json_content - - diff --git a/weworkapi_python-master/callback_json/ierror.py b/weworkapi_python-master/callback_json/ierror.py deleted file mode 100644 index 51c02c3..0000000 --- a/weworkapi_python-master/callback_json/ierror.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 01:53:58 PM CST -# File Name: ierror.py -# Description:定义错误码含义 -######################################################################### -WXBizMsgCrypt_OK = 0 -WXBizMsgCrypt_ValidateSignature_Error = -40001 -WXBizMsgCrypt_ParseJson_Error = -40002 -WXBizMsgCrypt_ComputeSignature_Error = -40003 -WXBizMsgCrypt_IllegalAesKey = -40004 -WXBizMsgCrypt_ValidateCorpid_Error = -40005 -WXBizMsgCrypt_EncryptAES_Error = -40006 -WXBizMsgCrypt_DecryptAES_Error = -40007 -WXBizMsgCrypt_IllegalBuffer = -40008 -WXBizMsgCrypt_EncodeBase64_Error = -40009 -WXBizMsgCrypt_DecodeBase64_Error = -40010 -WXBizMsgCrypt_GenReturnJson_Error = -40011 diff --git a/weworkapi_python-master/callback_json_python3/Readme.txt b/weworkapi_python-master/callback_json_python3/Readme.txt deleted file mode 100644 index 79ebb21..0000000 --- a/weworkapi_python-master/callback_json_python3/Readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -ע -1.WXBizMsgCrypt.pyļװWXBizMsgCryptӿ࣬ṩûҵ΢ŵӿڣSample.pyļṩʹӿڵʾierror.pyṩ˴롣 -2.WXBizMsgCryptװVerifyURL, DecryptMsg, EncryptMsgӿڣֱڿ֤صurlյûظϢĽԼ߻ظϢļ̡ܹʹ÷ԲοSample.pyļ -3.ӽЭοҵ΢Źٷĵ -4.õpycrypto⣬뿪аװ˿ʹá \ No newline at end of file diff --git a/weworkapi_python-master/callback_json_python3/Sample.py b/weworkapi_python-master/callback_json_python3/Sample.py deleted file mode 100644 index 7b76caf..0000000 --- a/weworkapi_python-master/callback_json_python3/Sample.py +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 03:55:41 PM CST -# File Name: Sample.py -# Description: WXBizJsonMsgCrypt 使用demo文件 -######################################################################### -from WXBizJsonMsgCrypt import WXBizJsonMsgCrypt -import sys -import json - -if __name__ == "__main__": - # 企业在企业微信后台上设置的密钥相关配置在这里 TODO - sToken = "xxxxxxx" - sEncodingAESKey = "xxxxxxx" - sCorpID = "ww1436e0e65a779aee" - ''' - ------------使用示例一:验证回调URL--------------- - *企业开启回调模式时,企业号会向验证url发送一个get请求 - 假设点击验证时,企业收到类似请求: - * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D - * HTTP/1.1 Host: qy.weixin.qq.com - - 接收到该请求时,企业应 1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr), - 这一步注意作URL解码。 - 2.验证消息体签名的正确性 - 3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信 - 第2,3步可以用企业微信提供的库函数VerifyURL来实现。 - ''' - wxcpt=WXBizJsonMsgCrypt(sToken,sEncodingAESKey,sCorpID) - sVerifyMsgSig="012bc692d0a58dd4b10f8dfe5c4ac00ae211ebeb" - sVerifyTimeStamp="1476416373" - sVerifyNonce="47744683" - sVerifyEchoStr="fsi1xnbH4yQh0+PJxcOdhhK6TDXkjMyhEPA7xB2TGz6b+g7xyAbEkRxN/3cNXW9qdqjnoVzEtpbhnFyq6SVHyA==" - ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr) - if(ret!=0): - print("ERR: VerifyURL ret: " + str(ret)) - sys.exit(1) - else: - print("done VerifyURL") - #验证URL成功,将sEchoStr返回给企业号 - - print("==============================") - ''' - ------------使用示例二:对用户回复的消息解密--------------- - 用户回复消息或者点击事件响应时,企业会收到回调消息,此消息是经过企业微信加密之后的密文以post形式发送给企业,密文格式请参考官方文档 - 假设企业收到企业微信的回调消息如下: - POST /cgi-bin/wxpush? msg_signature=e3647471e395139e2308c1fa963f2d648a00b90e×tamp=1409659813&nonce=1372623149 HTTP/1.1 - Host: qy.weixin.qq.com - - { - "tousername": "wx5823bf96d3bd56c7", - "encrypt": "cjhLUX7UU4yCSelv1vz7T0zT8huF51bAMVWriNvO1FMegHrQZNrtvRxbwf0fUPsFvwqR0U0fgiJNEA5Y30F2MoI2S7vv3EjVQ68C0cjw9frBoUE2Hj0BvFp9h3u6Vbsg4lc1C8AtHdaN8orKuNKkLRLuYEL52R1J3v8olJGZRLnRdVKIivixmX/eQpzgeExtp20jI1HxRP1AAZ6xZoILdqDPO549LO4WeG+685JRUTdiwcY5fjZlqeMxuT4PpMn1X9OWsS7NRj06Wa5E3Tvg4twjWp39KPfOdRte6P1T4JU=", - "agentid": 218 - } - - 企业收到post请求之后应该 1.解析出url上的参数,包括消息体签名(msg_signature),时间戳(timestamp)以及随机数字串(nonce) - 2.验证消息体签名的正确性。 3.将post请求的数据进行json解析,并将"encrypt"标签的内容进行解密,解密出来的明文即是用户回复消息的明文,明文格式请参考官方文档 - 第2,3步可以用企业微信提供的库函数DecryptMsg来实现。 - ''' - - sReqNonce = "1372623149" - sReqTimeStamp = "1409659813" - - sReqMsgSig = "e3647471e395139e2308c1fa963f2d648a00b90e" - sReqData = '{ "tousername": "wx5823bf96d3bd56c7", "encrypt": "cjhLUX7UU4yCSelv1vz7T0zT8huF51bAMVWriNvO1FMegHrQZNrtvRxbwf0fUPsFvwqR0U0fgiJNEA5Y30F2MoI2S7vv3EjVQ68C0cjw9frBoUE2Hj0BvFp9h3u6Vbsg4lc1C8AtHdaN8orKuNKkLRLuYEL52R1J3v8olJGZRLnRdVKIivixmX/eQpzgeExtp20jI1HxRP1AAZ6xZoILdqDPO549LO4WeG+685JRUTdiwcY5fjZlqeMxuT4PpMn1X9OWsS7NRj06Wa5E3Tvg4twjWp39KPfOdRte6P1T4JU=", "agentid": 218 }'; - ret,sMsg=wxcpt.DecryptMsg( sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce) - if( ret!=0 ): - print("ERR: DecryptMsg ret: " + str(ret)) - sys.exit(1) - else: - print(sMsg) - # 解密成功,sMsg即为json格式的明文 - # TODO: 对明文的处理 - # ... - # ... - - print("==============================") - - ''' - ------------使用示例三:企业回复用户消息的加密--------------- - 企业被动回复用户的消息也需要进行加密,并且拼接成密文格式的json串。 - 假设企业需要回复用户的明文如下: - - { - "ToUserName": "mycreate", - "FromUserName":"wx5823bf96d3bd56c7", - "CreateTime": 1348831860, - "MsgType": "text", - "Content": "this is a test", - "MsgId": 1234567890123456, - "AgentID": 128 - } - - 为了将此段明文回复给用户,企业应: 1.自己生成时间时间戳(timestamp),随机数字串(nonce)以便生成消息体签名,也可以直接用从企业微信的post url上解析出的对应值。 - 2.将明文加密得到密文。 3.用密文,步骤1生成的timestamp,nonce和企业在企业微信设定的token生成消息体签名。 4.将密文,消息体签名,时间戳,随机数字串拼接成json格式的字符串,发送给企业号。 - 以上2,3,4步可以用企业微信提供的库函数EncryptMsg来实现。 - ''' - #sRespData = ' { "ToUserName": "mycreate", "FromUserName":"wx5823bf96d3bd56c7", "CreateTime": 1348831860, "MsgType": "text", "Content": "this is a test", "MsgId": 1234567890123456, "AgentID": 128 }'; - sRespData = '{ "ToUserName": "wx5823bf96d3bd56c7", "FromUserName": :mycreate", "CreateTime": 1409659813, "MsgType": "text", "Content": "hello", "MsgId": 4561255354251345929, "AgentID": 218}' - ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp) - if( ret!=0 ): - print("ERR: EncryptMsg ret: " + str(ret)) - sys.exit(1) - else: - print(sEncryptMsg) - #ret == 0 加密成功,企业需要将sEncryptMsg返回给企业号 - print("==============================") - - ''' - 对上面加密的包进行解密 - ''' - sReqMsgSig = json.loads(sEncryptMsg)['msgsignature'] - sReqTimeStamp = json.loads(sEncryptMsg)['timestamp'] - sReqNonce = json.loads(sEncryptMsg)['nonce'] - - ret,sMsg=wxcpt.DecryptMsg( sEncryptMsg, sReqMsgSig, sReqTimeStamp, sReqNonce) - if( ret!=0 ): - print("ERR: DecryptMsg ret: " + str(ret)) - sys.exit(1) - else: - print(sMsg) diff --git a/weworkapi_python-master/callback_json_python3/WXBizJsonMsgCrypt.py b/weworkapi_python-master/callback_json_python3/WXBizJsonMsgCrypt.py deleted file mode 100644 index a954283..0000000 --- a/weworkapi_python-master/callback_json_python3/WXBizJsonMsgCrypt.py +++ /dev/null @@ -1,282 +0,0 @@ -#!/usr/bin/env python -#-*- encoding:utf-8 -*- - -""" 对企业微信发送给企业后台的消息加解密示例代码. -@copyright: Copyright (c) 1998-2020 Tencent Inc. - -""" -# ------------------------------------------------------------------------ - -import base64 -import string -import random -import hashlib -import time -import struct -from Crypto.Cipher import AES -import sys -import socket -import json - -import ierror - -""" -关于Crypto.Cipher模块,ImportError: No module named 'Crypto'解决方案 -请到官方网站 https://www.dlitz.net/software/pycrypto/ 下载pycrypto。 -下载后,按照README中的“Installation”小节的提示进行pycrypto安装。 -""" -class FormatException(Exception): - pass - -def throw_exception(message, exception_class=FormatException): - """my define raise exception function""" - raise exception_class(message) - -class SHA1: - """计算企业微信的消息签名接口""" - - def getSHA1(self, token, timestamp, nonce, encrypt): - """用SHA1算法生成安全签名 - @param token: 票据 - @param timestamp: 时间戳 - @param encrypt: 密文 - @param nonce: 随机字符串 - @return: 安全签名 - """ - try: - # 确保所有输入都是字符串类型 - if isinstance(encrypt, bytes): - encrypt = encrypt.decode('utf-8') - - sortlist = [str(token), str(timestamp), str(nonce), str(encrypt)] - sortlist.sort() - sha = hashlib.sha1() - sha.update("".join(sortlist).encode('utf-8')) - return ierror.WXBizMsgCrypt_OK, sha.hexdigest() - - except Exception as e: - print(e) - return ierror.WXBizMsgCrypt_ComputeSignature_Error, None - - -class JsonParse: - """提供提取消息格式中的密文及生成回复消息格式的接口""" - - # json消息模板 - AES_TEXT_RESPONSE_TEMPLATE = '''{ - "encrypt": "%(msg_encrypt)s", - "msgsignature": "%(msg_signaturet)s", - "timestamp": "%(timestamp)s", - "nonce": "%(nonce)s" - }''' - - def extract(self, jsontext): - """提取出json数据包中的加密消息 - @param jsontext: 待提取的json字符串 - @return: 提取出的加密消息字符串 - """ - try: - json_dict = json.loads(jsontext) - return ierror.WXBizMsgCrypt_OK, json_dict['encrypt'] - except Exception as e: - print(e) - return ierror.WXBizMsgCrypt_ParseJson_Error, None - def generate(self, encrypt, signature, timestamp, nonce): - """生成json消息 - @param encrypt: 加密后的消息密文 - @param signature: 安全签名 - @param timestamp: 时间戳 - @param nonce: 随机字符串 - @return: 生成的json字符串 - """ - resp_dict = { - 'msg_encrypt' : encrypt, - 'msg_signaturet': signature, - 'timestamp' : timestamp, - 'nonce' : nonce, - } - resp_json = self.AES_TEXT_RESPONSE_TEMPLATE % resp_dict - return resp_json - - -class PKCS7Encoder(): - """提供基于PKCS7算法的加解密接口""" - - block_size = 32 - def encode(self, text): - """ 对需要加密的明文进行填充补位 - @param text: 需要进行填充补位操作的明文(bytes类型) - @return: 补齐明文字符串(bytes类型) - """ - text_length = len(text) - # 计算需要填充的位数 - amount_to_pad = self.block_size - (text_length % self.block_size) - if amount_to_pad == 0: - amount_to_pad = self.block_size - # 获得补位所用的字符 - pad = bytes([amount_to_pad]) - # 确保text是bytes类型 - if isinstance(text, str): - text = text.encode('utf-8') - return text + pad * amount_to_pad - - def decode(self, decrypted): - """删除解密后明文的补位字符 - @param decrypted: 解密后的明文 - @return: 删除补位字符后的明文 - """ - pad = ord(decrypted[-1]) - if pad<1 or pad >32: - pad = 0 - return decrypted[:-pad] - - -class Prpcrypt(object): - """提供接收和推送给企业微信消息的加解密接口""" - - def __init__(self,key): - - #self.key = base64.b64decode(key+"=") - self.key = key - # 设置加解密模式为AES的CBC模式 - self.mode = AES.MODE_CBC - - - def encrypt(self, text, receiveid): - """对明文进行加密 - @param text: 需要加密的明文 - @return: 加密得到的字符串 - """ - # 16位随机字符串添加到明文开头 - text = text.encode() - text = self.get_random_str() + struct.pack("I", socket.htonl(len(text))) + text + receiveid.encode() - - # 使用自定义的填充方式对明文进行补位填充 - pkcs7 = PKCS7Encoder() - text = pkcs7.encode(text) - # 加密 - cryptor = AES.new(self.key, self.mode, self.key[:16]) - try: - ciphertext = cryptor.encrypt(text) - # 使用BASE64对加密后的字符串进行编码 - return ierror.WXBizMsgCrypt_OK, base64.b64encode(ciphertext) - except Exception as e: - logger = logging.getLogger() - logger.error(e) - return ierror.WXBizMsgCrypt_EncryptAES_Error, None - - def decrypt(self,text,receiveid): - """对解密后的明文进行补位删除 - @param text: 密文 - @return: 删除填充补位后的明文 - """ - try: - cryptor = AES.new(self.key,self.mode,self.key[:16]) - # 使用BASE64对密文进行解码,然后AES-CBC解密 - plain_text = cryptor.decrypt(base64.b64decode(text)) - except Exception as e: - print(e) - return ierror.WXBizMsgCrypt_DecryptAES_Error,None - try: - pad = plain_text[-1] - # 去掉补位字符串 - #pkcs7 = PKCS7Encoder() - #plain_text = pkcs7.encode(plain_text) - # 去除16位随机字符串 - content = plain_text[16:-pad] - json_len = socket.ntohl(struct.unpack("I",content[ : 4])[0]) - json_content = content[4 : json_len+4].decode('utf-8') - from_receiveid = content[json_len+4:].decode('utf-8') - except Exception as e: - print(e) - return ierror.WXBizMsgCrypt_IllegalBuffer,None - if from_receiveid != receiveid: - print("receiveid not match", receiveid, from_receiveid) - return ierror.WXBizMsgCrypt_ValidateCorpid_Error,None - return 0,json_content - - def get_random_str(self): - """ 随机生成16位字符串 - @return: 16位字符串 - """ - return str(random.randint(1000000000000000, 9999999999999999)).encode() - -class WXBizJsonMsgCrypt(object): - #构造函数 - def __init__(self,sToken,sEncodingAESKey,sReceiveId): - try: - self.key = base64.b64decode(sEncodingAESKey+"=") - assert len(self.key) == 32 - except: - throw_exception("[error]: EncodingAESKey unvalid !", FormatException) - # return ierror.WXBizMsgCrypt_IllegalAesKey,None - self.m_sToken = sToken - self.m_sReceiveId = sReceiveId - - #验证URL - #@param sMsgSignature: 签名串,对应URL参数的msg_signature - #@param sTimeStamp: 时间戳,对应URL参数的timestamp - #@param sNonce: 随机串,对应URL参数的nonce - #@param sEchoStr: 随机串,对应URL参数的echostr - #@param sReplyEchoStr: 解密之后的echostr,当return返回0时有效 - #@return:成功0,失败返回对应的错误码 - - def VerifyURL(self, sMsgSignature, sTimeStamp, sNonce, sEchoStr): - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, sEchoStr) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret,sReplyEchoStr = pc.decrypt(sEchoStr,self.m_sReceiveId) - return ret,sReplyEchoStr - - def EncryptMsg(self, sReplyMsg, sNonce, timestamp = None): - #将企业回复用户的消息加密打包 - #@param sReplyMsg: 企业号待回复用户的消息,json格式的字符串 - #@param sTimeStamp: 时间戳,可以自己生成,也可以用URL参数的timestamp,如为None则自动用当前时间 - #@param sNonce: 随机串,可以自己生成,也可以用URL参数的nonce - #sEncryptMsg: 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的json格式的字符串, - #return:成功0,sEncryptMsg,失败返回对应的错误码None - pc = Prpcrypt(self.key) - ret,encrypt = pc.encrypt(sReplyMsg, self.m_sReceiveId) - encrypt = encrypt.decode('utf-8') - if ret != 0: - return ret,None - if timestamp is None: - timestamp = str(int(time.time())) - # 生成安全签名 - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, timestamp, sNonce, encrypt) - if ret != 0: - return ret,None - jsonParse = JsonParse() - return ret,jsonParse.generate(encrypt, signature, timestamp, sNonce) - - def DecryptMsg(self, sPostData, sMsgSignature, sTimeStamp, sNonce): - # 检验消息的真实性,并且获取解密后的明文 - # @param sMsgSignature: 签名串,对应URL参数的msg_signature - # @param sTimeStamp: 时间戳,对应URL参数的timestamp - # @param sNonce: 随机串,对应URL参数的nonce - # @param sPostData: 密文,对应POST请求的数据 - # json_content: 解密后的原文,当return返回0时有效 - # @return: 成功0,失败返回对应的错误码 - # 验证安全签名 - jsonParse = JsonParse() - ret,encrypt = jsonParse.extract(sPostData) - if ret != 0: - return ret, None - sha1 = SHA1() - ret,signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, encrypt) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - print("signature not match") - print(signature) - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret,json_content = pc.decrypt(encrypt,self.m_sReceiveId) - return ret,json_content - - diff --git a/weworkapi_python-master/callback_json_python3/ierror.py b/weworkapi_python-master/callback_json_python3/ierror.py deleted file mode 100644 index 51c02c3..0000000 --- a/weworkapi_python-master/callback_json_python3/ierror.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 01:53:58 PM CST -# File Name: ierror.py -# Description:定义错误码含义 -######################################################################### -WXBizMsgCrypt_OK = 0 -WXBizMsgCrypt_ValidateSignature_Error = -40001 -WXBizMsgCrypt_ParseJson_Error = -40002 -WXBizMsgCrypt_ComputeSignature_Error = -40003 -WXBizMsgCrypt_IllegalAesKey = -40004 -WXBizMsgCrypt_ValidateCorpid_Error = -40005 -WXBizMsgCrypt_EncryptAES_Error = -40006 -WXBizMsgCrypt_DecryptAES_Error = -40007 -WXBizMsgCrypt_IllegalBuffer = -40008 -WXBizMsgCrypt_EncodeBase64_Error = -40009 -WXBizMsgCrypt_DecodeBase64_Error = -40010 -WXBizMsgCrypt_GenReturnJson_Error = -40011 diff --git a/weworkapi_python-master/callback_python3/Readme.txt b/weworkapi_python-master/callback_python3/Readme.txt deleted file mode 100644 index 7b8dd0c..0000000 --- a/weworkapi_python-master/callback_python3/Readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -注意事项 -1.WXBizMsgCrypt.py文件封装了WXBizMsgCrypt接口类(Python3以及以上版本使用 WXBizMsgCrypt3.py),提供了用户接入企业微信的三个接口,Sample.py文件提供了如何使用这三个接口的示例,ierror.py提供了错误码。 -2.WXBizMsgCrypt封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url,收到用户回复消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.py文件。 -3.加解密协议请参考企业微信官方文档。 -4.本代码用到了pycrypto第三方库,请开发者自行安装此库再使用。 diff --git a/weworkapi_python-master/callback_python3/Sample.py b/weworkapi_python-master/callback_python3/Sample.py deleted file mode 100644 index 7b76caf..0000000 --- a/weworkapi_python-master/callback_python3/Sample.py +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 03:55:41 PM CST -# File Name: Sample.py -# Description: WXBizJsonMsgCrypt 使用demo文件 -######################################################################### -from WXBizJsonMsgCrypt import WXBizJsonMsgCrypt -import sys -import json - -if __name__ == "__main__": - # 企业在企业微信后台上设置的密钥相关配置在这里 TODO - sToken = "xxxxxxx" - sEncodingAESKey = "xxxxxxx" - sCorpID = "ww1436e0e65a779aee" - ''' - ------------使用示例一:验证回调URL--------------- - *企业开启回调模式时,企业号会向验证url发送一个get请求 - 假设点击验证时,企业收到类似请求: - * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D - * HTTP/1.1 Host: qy.weixin.qq.com - - 接收到该请求时,企业应 1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr), - 这一步注意作URL解码。 - 2.验证消息体签名的正确性 - 3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信 - 第2,3步可以用企业微信提供的库函数VerifyURL来实现。 - ''' - wxcpt=WXBizJsonMsgCrypt(sToken,sEncodingAESKey,sCorpID) - sVerifyMsgSig="012bc692d0a58dd4b10f8dfe5c4ac00ae211ebeb" - sVerifyTimeStamp="1476416373" - sVerifyNonce="47744683" - sVerifyEchoStr="fsi1xnbH4yQh0+PJxcOdhhK6TDXkjMyhEPA7xB2TGz6b+g7xyAbEkRxN/3cNXW9qdqjnoVzEtpbhnFyq6SVHyA==" - ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr) - if(ret!=0): - print("ERR: VerifyURL ret: " + str(ret)) - sys.exit(1) - else: - print("done VerifyURL") - #验证URL成功,将sEchoStr返回给企业号 - - print("==============================") - ''' - ------------使用示例二:对用户回复的消息解密--------------- - 用户回复消息或者点击事件响应时,企业会收到回调消息,此消息是经过企业微信加密之后的密文以post形式发送给企业,密文格式请参考官方文档 - 假设企业收到企业微信的回调消息如下: - POST /cgi-bin/wxpush? msg_signature=e3647471e395139e2308c1fa963f2d648a00b90e×tamp=1409659813&nonce=1372623149 HTTP/1.1 - Host: qy.weixin.qq.com - - { - "tousername": "wx5823bf96d3bd56c7", - "encrypt": "cjhLUX7UU4yCSelv1vz7T0zT8huF51bAMVWriNvO1FMegHrQZNrtvRxbwf0fUPsFvwqR0U0fgiJNEA5Y30F2MoI2S7vv3EjVQ68C0cjw9frBoUE2Hj0BvFp9h3u6Vbsg4lc1C8AtHdaN8orKuNKkLRLuYEL52R1J3v8olJGZRLnRdVKIivixmX/eQpzgeExtp20jI1HxRP1AAZ6xZoILdqDPO549LO4WeG+685JRUTdiwcY5fjZlqeMxuT4PpMn1X9OWsS7NRj06Wa5E3Tvg4twjWp39KPfOdRte6P1T4JU=", - "agentid": 218 - } - - 企业收到post请求之后应该 1.解析出url上的参数,包括消息体签名(msg_signature),时间戳(timestamp)以及随机数字串(nonce) - 2.验证消息体签名的正确性。 3.将post请求的数据进行json解析,并将"encrypt"标签的内容进行解密,解密出来的明文即是用户回复消息的明文,明文格式请参考官方文档 - 第2,3步可以用企业微信提供的库函数DecryptMsg来实现。 - ''' - - sReqNonce = "1372623149" - sReqTimeStamp = "1409659813" - - sReqMsgSig = "e3647471e395139e2308c1fa963f2d648a00b90e" - sReqData = '{ "tousername": "wx5823bf96d3bd56c7", "encrypt": "cjhLUX7UU4yCSelv1vz7T0zT8huF51bAMVWriNvO1FMegHrQZNrtvRxbwf0fUPsFvwqR0U0fgiJNEA5Y30F2MoI2S7vv3EjVQ68C0cjw9frBoUE2Hj0BvFp9h3u6Vbsg4lc1C8AtHdaN8orKuNKkLRLuYEL52R1J3v8olJGZRLnRdVKIivixmX/eQpzgeExtp20jI1HxRP1AAZ6xZoILdqDPO549LO4WeG+685JRUTdiwcY5fjZlqeMxuT4PpMn1X9OWsS7NRj06Wa5E3Tvg4twjWp39KPfOdRte6P1T4JU=", "agentid": 218 }'; - ret,sMsg=wxcpt.DecryptMsg( sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce) - if( ret!=0 ): - print("ERR: DecryptMsg ret: " + str(ret)) - sys.exit(1) - else: - print(sMsg) - # 解密成功,sMsg即为json格式的明文 - # TODO: 对明文的处理 - # ... - # ... - - print("==============================") - - ''' - ------------使用示例三:企业回复用户消息的加密--------------- - 企业被动回复用户的消息也需要进行加密,并且拼接成密文格式的json串。 - 假设企业需要回复用户的明文如下: - - { - "ToUserName": "mycreate", - "FromUserName":"wx5823bf96d3bd56c7", - "CreateTime": 1348831860, - "MsgType": "text", - "Content": "this is a test", - "MsgId": 1234567890123456, - "AgentID": 128 - } - - 为了将此段明文回复给用户,企业应: 1.自己生成时间时间戳(timestamp),随机数字串(nonce)以便生成消息体签名,也可以直接用从企业微信的post url上解析出的对应值。 - 2.将明文加密得到密文。 3.用密文,步骤1生成的timestamp,nonce和企业在企业微信设定的token生成消息体签名。 4.将密文,消息体签名,时间戳,随机数字串拼接成json格式的字符串,发送给企业号。 - 以上2,3,4步可以用企业微信提供的库函数EncryptMsg来实现。 - ''' - #sRespData = ' { "ToUserName": "mycreate", "FromUserName":"wx5823bf96d3bd56c7", "CreateTime": 1348831860, "MsgType": "text", "Content": "this is a test", "MsgId": 1234567890123456, "AgentID": 128 }'; - sRespData = '{ "ToUserName": "wx5823bf96d3bd56c7", "FromUserName": :mycreate", "CreateTime": 1409659813, "MsgType": "text", "Content": "hello", "MsgId": 4561255354251345929, "AgentID": 218}' - ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp) - if( ret!=0 ): - print("ERR: EncryptMsg ret: " + str(ret)) - sys.exit(1) - else: - print(sEncryptMsg) - #ret == 0 加密成功,企业需要将sEncryptMsg返回给企业号 - print("==============================") - - ''' - 对上面加密的包进行解密 - ''' - sReqMsgSig = json.loads(sEncryptMsg)['msgsignature'] - sReqTimeStamp = json.loads(sEncryptMsg)['timestamp'] - sReqNonce = json.loads(sEncryptMsg)['nonce'] - - ret,sMsg=wxcpt.DecryptMsg( sEncryptMsg, sReqMsgSig, sReqTimeStamp, sReqNonce) - if( ret!=0 ): - print("ERR: DecryptMsg ret: " + str(ret)) - sys.exit(1) - else: - print(sMsg) diff --git a/weworkapi_python-master/callback_python3/WXBizMsgCrypt.py b/weworkapi_python-master/callback_python3/WXBizMsgCrypt.py deleted file mode 100644 index fb9508c..0000000 --- a/weworkapi_python-master/callback_python3/WXBizMsgCrypt.py +++ /dev/null @@ -1,280 +0,0 @@ -#!/usr/bin/env python -# -*- encoding:utf-8 -*- - -""" 对企业微信发送给企业后台的消息加解密示例代码. -@copyright: Copyright (c) 1998-2014 Tencent Inc. - -""" -# ------------------------------------------------------------------------ -import logging -import base64 -import random -import hashlib -import time -import struct -from Crypto.Cipher import AES -import xml.etree.cElementTree as ET -import socket - -import ierror - - -""" -关于Crypto.Cipher模块,ImportError: No module named 'Crypto'解决方案 -请到官方网站 https://www.dlitz.net/software/pycrypto/ 下载pycrypto。 -下载后,按照README中的“Installation”小节的提示进行pycrypto安装。 -""" - - -class FormatException(Exception): - pass - - -def throw_exception(message, exception_class=FormatException): - """my define raise exception function""" - raise exception_class(message) - - -class SHA1: - """计算企业微信的消息签名接口""" - - def getSHA1(self, token, timestamp, nonce, encrypt): - """用SHA1算法生成安全签名 - @param token: 票据 - @param timestamp: 时间戳 - @param encrypt: 密文 - @param nonce: 随机字符串 - @return: 安全签名 - """ - try: - sortlist = [token, timestamp, nonce, encrypt] - sortlist.sort() - sha = hashlib.sha1() - sha.update("".join(sortlist).encode()) - return ierror.WXBizMsgCrypt_OK, sha.hexdigest() - except Exception as e: - logger = logging.getLogger() - logger.error(e) - return ierror.WXBizMsgCrypt_ComputeSignature_Error, None - - -class XMLParse: - """提供提取消息格式中的密文及生成回复消息格式的接口""" - - # xml消息模板 - AES_TEXT_RESPONSE_TEMPLATE = """ - - -%(timestamp)s - -""" - - def extract(self, xmltext): - """提取出xml数据包中的加密消息 - @param xmltext: 待提取的xml字符串 - @return: 提取出的加密消息字符串 - """ - try: - xml_tree = ET.fromstring(xmltext) - encrypt = xml_tree.find("Encrypt") - return ierror.WXBizMsgCrypt_OK, encrypt.text - except Exception as e: - logger = logging.getLogger() - logger.error(e) - return ierror.WXBizMsgCrypt_ParseXml_Error, None - - def generate(self, encrypt, signature, timestamp, nonce): - """生成xml消息 - @param encrypt: 加密后的消息密文 - @param signature: 安全签名 - @param timestamp: 时间戳 - @param nonce: 随机字符串 - @return: 生成的xml字符串 - """ - resp_dict = { - 'msg_encrypt': encrypt, - 'msg_signaturet': signature, - 'timestamp': timestamp, - 'nonce': nonce, - } - resp_xml = self.AES_TEXT_RESPONSE_TEMPLATE % resp_dict - return resp_xml - - -class PKCS7Encoder(): - """提供基于PKCS7算法的加解密接口""" - - block_size = 32 - - def encode(self, text): - """ 对需要加密的明文进行填充补位 - @param text: 需要进行填充补位操作的明文 - @return: 补齐明文字符串 - """ - text_length = len(text) - # 计算需要填充的位数 - amount_to_pad = self.block_size - (text_length % self.block_size) - if amount_to_pad == 0: - amount_to_pad = self.block_size - # 获得补位所用的字符 - pad = chr(amount_to_pad) - return text + (pad * amount_to_pad).encode() - - def decode(self, decrypted): - """删除解密后明文的补位字符 - @param decrypted: 解密后的明文 - @return: 删除补位字符后的明文 - """ - pad = ord(decrypted[-1]) - if pad < 1 or pad > 32: - pad = 0 - return decrypted[:-pad] - - -class Prpcrypt(object): - """提供接收和推送给企业微信消息的加解密接口""" - - def __init__(self, key): - - # self.key = base64.b64decode(key+"=") - self.key = key - # 设置加解密模式为AES的CBC模式 - self.mode = AES.MODE_CBC - - def encrypt(self, text, receiveid): - """对明文进行加密 - @param text: 需要加密的明文 - @return: 加密得到的字符串 - """ - # 16位随机字符串添加到明文开头 - text = text.encode() - text = self.get_random_str() + struct.pack("I", socket.htonl(len(text))) + text + receiveid.encode() - - # 使用自定义的填充方式对明文进行补位填充 - pkcs7 = PKCS7Encoder() - text = pkcs7.encode(text) - # 加密 - cryptor = AES.new(self.key, self.mode, self.key[:16]) - try: - ciphertext = cryptor.encrypt(text) - # 使用BASE64对加密后的字符串进行编码 - return ierror.WXBizMsgCrypt_OK, base64.b64encode(ciphertext) - except Exception as e: - logger = logging.getLogger() - logger.error(e) - return ierror.WXBizMsgCrypt_EncryptAES_Error, None - - def decrypt(self, text, receiveid): - """对解密后的明文进行补位删除 - @param text: 密文 - @return: 删除填充补位后的明文 - """ - try: - cryptor = AES.new(self.key, self.mode, self.key[:16]) - # 使用BASE64对密文进行解码,然后AES-CBC解密 - plain_text = cryptor.decrypt(base64.b64decode(text)) - except Exception as e: - logger = logging.getLogger() - logger.error(e) - return ierror.WXBizMsgCrypt_DecryptAES_Error, None - try: - pad = plain_text[-1] - # 去掉补位字符串 - # pkcs7 = PKCS7Encoder() - # plain_text = pkcs7.encode(plain_text) - # 去除16位随机字符串 - content = plain_text[16:-pad] - xml_len = socket.ntohl(struct.unpack("I", content[: 4])[0]) - xml_content = content[4: xml_len + 4] - from_receiveid = content[xml_len + 4:] - except Exception as e: - logger = logging.getLogger() - logger.error(e) - return ierror.WXBizMsgCrypt_IllegalBuffer, None - - if from_receiveid.decode('utf8') != receiveid: - return ierror.WXBizMsgCrypt_ValidateCorpid_Error, None - return 0, xml_content - - def get_random_str(self): - """ 随机生成16位字符串 - @return: 16位字符串 - """ - return str(random.randint(1000000000000000, 9999999999999999)).encode() - - -class WXBizMsgCrypt(object): - # 构造函数 - def __init__(self, sToken, sEncodingAESKey, sReceiveId): - try: - self.key = base64.b64decode(sEncodingAESKey + "=") - assert len(self.key) == 32 - except: - throw_exception("[error]: EncodingAESKey unvalid !", FormatException) - # return ierror.WXBizMsgCrypt_IllegalAesKey,None - self.m_sToken = sToken - self.m_sReceiveId = sReceiveId - - # 验证URL - # @param sMsgSignature: 签名串,对应URL参数的msg_signature - # @param sTimeStamp: 时间戳,对应URL参数的timestamp - # @param sNonce: 随机串,对应URL参数的nonce - # @param sEchoStr: 随机串,对应URL参数的echostr - # @param sReplyEchoStr: 解密之后的echostr,当return返回0时有效 - # @return:成功0,失败返回对应的错误码 - - def VerifyURL(self, sMsgSignature, sTimeStamp, sNonce, sEchoStr): - sha1 = SHA1() - ret, signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, sEchoStr) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret, sReplyEchoStr = pc.decrypt(sEchoStr, self.m_sReceiveId) - return ret, sReplyEchoStr - - def EncryptMsg(self, sReplyMsg, sNonce, timestamp=None): - # 将企业回复用户的消息加密打包 - # @param sReplyMsg: 企业号待回复用户的消息,xml格式的字符串 - # @param sTimeStamp: 时间戳,可以自己生成,也可以用URL参数的timestamp,如为None则自动用当前时间 - # @param sNonce: 随机串,可以自己生成,也可以用URL参数的nonce - # sEncryptMsg: 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的xml格式的字符串, - # return:成功0,sEncryptMsg,失败返回对应的错误码None - pc = Prpcrypt(self.key) - ret, encrypt = pc.encrypt(sReplyMsg, self.m_sReceiveId) - encrypt = encrypt.decode('utf8') - if ret != 0: - return ret, None - if timestamp is None: - timestamp = str(int(time.time())) - # 生成安全签名 - sha1 = SHA1() - ret, signature = sha1.getSHA1(self.m_sToken, timestamp, sNonce, encrypt) - if ret != 0: - return ret, None - xmlParse = XMLParse() - return ret, xmlParse.generate(encrypt, signature, timestamp, sNonce) - - def DecryptMsg(self, sPostData, sMsgSignature, sTimeStamp, sNonce): - # 检验消息的真实性,并且获取解密后的明文 - # @param sMsgSignature: 签名串,对应URL参数的msg_signature - # @param sTimeStamp: 时间戳,对应URL参数的timestamp - # @param sNonce: 随机串,对应URL参数的nonce - # @param sPostData: 密文,对应POST请求的数据 - # xml_content: 解密后的原文,当return返回0时有效 - # @return: 成功0,失败返回对应的错误码 - # 验证安全签名 - xmlParse = XMLParse() - ret, encrypt = xmlParse.extract(sPostData) - if ret != 0: - return ret, None - sha1 = SHA1() - ret, signature = sha1.getSHA1(self.m_sToken, sTimeStamp, sNonce, encrypt) - if ret != 0: - return ret, None - if not signature == sMsgSignature: - return ierror.WXBizMsgCrypt_ValidateSignature_Error, None - pc = Prpcrypt(self.key) - ret, xml_content = pc.decrypt(encrypt, self.m_sReceiveId) - return ret, xml_content diff --git a/weworkapi_python-master/callback_python3/ierror.py b/weworkapi_python-master/callback_python3/ierror.py deleted file mode 100644 index 6678fec..0000000 --- a/weworkapi_python-master/callback_python3/ierror.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -######################################################################### -# Author: jonyqin -# Created Time: Thu 11 Sep 2014 01:53:58 PM CST -# File Name: ierror.py -# Description:定义错误码含义 -######################################################################### -WXBizMsgCrypt_OK = 0 -WXBizMsgCrypt_ValidateSignature_Error = -40001 -WXBizMsgCrypt_ParseXml_Error = -40002 -WXBizMsgCrypt_ComputeSignature_Error = -40003 -WXBizMsgCrypt_IllegalAesKey = -40004 -WXBizMsgCrypt_ValidateCorpid_Error = -40005 -WXBizMsgCrypt_EncryptAES_Error = -40006 -WXBizMsgCrypt_DecryptAES_Error = -40007 -WXBizMsgCrypt_IllegalBuffer = -40008 -WXBizMsgCrypt_EncodeBase64_Error = -40009 -WXBizMsgCrypt_DecodeBase64_Error = -40010 -WXBizMsgCrypt_GenReturnXml_Error = -40011 diff --git a/weworkapi_python-master/conf.py b/weworkapi_python-master/conf.py deleted file mode 100644 index c37571d..0000000 --- a/weworkapi_python-master/conf.py +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/python -# -*- coding:utf-8 -*- -## - # Copyright (C) 2018 All rights reserved. - # - # @File conf.py - # @Brief - # @Author abelzhu, abelzhu@tencent.com - # @Version 1.0 - # @Date 2018-02-23 - # - # - -## 设置为true会打印一些调试信息 -DEBUG = True - diff --git a/企业微信加密方案说明.md b/企业微信加密方案说明.md deleted file mode 100644 index db408ff..0000000 --- a/企业微信加密方案说明.md +++ /dev/null @@ -1,221 +0,0 @@ -加解密方案说明 -概述 -企业微信在推送消息给企业时,会对消息内容做AES加密,以XML格式POST到企业应用的URL上。 -企业在被动响应时,也需要对数据加密,以XML格式返回给企业微信。 -本章节即是对加解密方法的说明。 -阅读本章节前,需要了解以下术语: - -msg_signature: 消息签名,用于验证请求是否来自企业微信(防止攻击者伪造)。 -EncodingAESKey:用于消息体的加密,长度固定为43个字符,从a-z, A-Z, 0-9共62个字符中选取,是AESKey的Base64编码。解码后即为32字节长的AESKey - -AESKey=Base64_Decode(EncodingAESKey + “=”) -AESKey:AES算法的密钥,长度为32字节。 -AES采用CBC模式,数据采用PKCS#7填充至32字节的倍数;IV初始向量大小为16字节,取AESKey前16字节,详见:http://tools.ietf.org/html/rfc2315 -msg:为消息体明文,格式为XML/JSON -msg_encrypt:明文消息msg加密处理后的Base64编码。 -使用已有库 -鉴于加解密算法相对复杂,企业微信提供了算法库。 -目前已有c++/python/php/java/golang/c#等语言版本。均提供了解密、加密、验证URL三个接口,企业可根据自身需要下载,下载地址。 - -使用现有库,用户不必细究加解密原理。对于找不到相应语言库的用户,请阅读后文原理详解自行实现。欢迎大家分享~ -以c++为例,使用示例见下载的文件夹中的Sample.cpp, 此处做简单说明。 - -初始化加解密类 -回调xml示例: - -WXBizMsgCrypt wxcpt(sToken,sEncodingAESKey,sReceiveId); -回调json示例 - -WXBizJsonMsgCrypt wxcpt(sToken,sEncodingAESKey,sReceiveId); -要求传参数sToken,sEncodingAESKey,sReceiveId。 -sToken,sEncodingAESKey即设置接收消息的参数章节所述配置的Token、EncodingAESKey。 -特别注意, sReceiveId 在不同场景下有不同含义,见附注。 - -验证URL函数 -本函数实现: - -签名校验 -解密数据包,得到明文消息内容 -int VerifyURL(const string &sMsgSignature, const string &sTimeStamp, const string &sNonce, const string &sEchoStr, string &sReplyEchoStr); -参数说明 -参数 必须 说明 -sMsgSignature 是 从接收消息的URL中获取的msg_signature参数 -sTimeStamp 是 从接收消息的URL中获取的timestamp参数 -sNonce 是 从接收消息的URL中获取的nonce参数 -sEchoStr 是 从接收消息的URL中获取的echostr参数。注意,此参数必须是urldecode后的值 -sReplyEchoStr 是 解密后的明文消息内容,用于回包。注意,必须原样返回,不要做加引号或其它处理 - - -解密函数 -本函数实现: - -签名校验 -解密数据包,得到明文消息结构体 -int DecryptMsg(const string &sMsgSignature, const string &sTimeStamp, const string &sNonce, const string &sPostData, string &sMsg); -参数说明 -参数 必须 说明 -sMsgSignature 是 从接收消息的URL中获取的msg_signature参数 -sTimeStamp 是 从接收消息的URL中获取的timestamp参数 -sNonce 是 从接收消息的URL中获取的nonce参数 -sPostData 是 从接收消息的URL中获取的整个post数据 -sMsg 是 用于返回解密后的msg,以xml组织,参见普通消息格式和事件消息格式 - - -加密函数 -本函数实现: - -加密明文消息结构体 -生成签名 -构造被动响应包 -int EncryptMsg(const string &sReplyMsg, const string &sTimeStamp, const string &sNonce, string &sEncryptMsg); -参数说明 -参数 必须 说明 -sReplyMsg 是 返回的消息体原文 -sTimeStamp 是 时间戳,调用方生成 -sNonce 是 随机数,调用方生成 -sEncryptMsg 是 用于返回的密文,以xml组织,参见被动回复消息格式 - - -原理详解 -目前官方已提供了php、python、c++等版本的加解密库,如果开发者需要进行别的语言的开发,需要自行根据加解密原理实现算法。 - -消息体签名校验 -为了让企业确认调用来自企业微信,企业微信在回调给接收消息url时会带上消息签名,以参数msg_signature标识,企业需要验证此参数的正确性后再解密。 -验证步骤如下: - -计算签名 -dev_msg_signature=sha1(sort(token、timestamp、nonce、msg_encrypt))。 - - -sort的含义是将参数值按照字母字典排序,然后从小到大拼接成一个字符串 -sha1处理结果要编码为可见字符,编码的方式是把每字节散列值打印为%02x(即16进制,C printf语法)格式,全部小写 -比较dev_msg_signature和msg_signature是否相等,相等则表示验证通过 -在被动响应消息时,企业同样需要用如上方法生成签名并传给企业微信 - - -明文msg的加密过程 -拼接明文字符串 -rand_msg = random(16B) + msg_len(4B) + msg + receiveid - - -明文字符串由16个字节的随机字符串、4个字节的msg长度、明文msg和receiveid拼接组成。其中msg_len为msg的字节数,网络字节序;sReceiveId 在不同场景下有不同含义,见附注 -明文字符串 -对明文字符串加密并Base64编码 -msg_encrypt = Base64_Encode(AES_Encrypt(rand_msg)) - - -将明文字符串AESKey加密后,再进行Base64编码,即获得密文msg_encrypt。 -密文解密得到msg的过程 -对密文BASE64解码 - -aes_msg=Base64_Decode(msg_encrypt) - -使用AESKey做AES-256-CBC解密 - -rand_msg=AES_Decrypt(aes_msg) - -去掉rand_msg头部的16个随机字节和4个字节的msg_len,截取msg_len长度的部分即为msg,剩下的为尾部的receiveid -验证解密后的receiveid、msg_len。注意,receiveid在不同场景含义不同。 -举例说明 -假设在服务商管理端为某个套件有如下配置参数: - -corpId = "wx5823bf96d3bd56c7" -token = "QDG6eK" -encodingAesKey = "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C" -收到来自企业微信的回调为: -xml请求示例: - -POST /cgi-bin/wxpush?msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=1372623149 HTTP/1.1 -Host: qy.weixin.qq.com -Content-Length: 603 - - - - - -json请求示例: -注意这里的 tousername,encrypt,agentid均为小写 - -POST /cgi-bin/wxpush?msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=1372623149 HTTP/1.1 -Host: qy.weixin.qq.com -Content-Length: 364 -{ - "tousername": "wx5823bf96d3bd56c7", - "encrypt": "No8isRLoXqFMhLlpe7R/DA7UbJ88DKJxDhJH/UVG3o1ib0Fhzdd3qWYHH/KL1mITv5qOCp2FbyILqfI7zazrp/ARgSHR177OCrv8O9UrMHWdnOaMXaz+mLd5X5VWm5r2J3Qpm+NdTQRPhHbce88frKF3wqTaZunKW7ae87bRZUfaq5tLFnyTsf6aiy0su3SsQ06dQGKPcHfYHY3upB881008Q9t9xeAZ/uqfXpYQgSLQfaX+fk/K/FQEl4QpLk94eD1YjluFY3uLnKp40zDyxgeWRAmgTtmx1eLwediVqZ8=", - "agentid": "218" -} -第一步:准备相关参数 - -AESKey = Base64_Decode(EncodingAESKey + "=") -signature = "477715d11cdb4164915debcba66cb864d751f3e6"; -timestamps = "1409659813"; -nonce = "1372623149"; -msg_encrypt = "RypEvHKD8QQKFhvQ6QleEB4J58tiPdvo+rtK1I9qca6aM/wvqnLSV5zEPeusUiX5L5X/0lWfrf0QADHHhGd3QczcdCUpj911L3vg3W/sYYvuJTs3TUUkSUXxaccAS0qhxchrRYt66wiSpGLYL42aM6A8dTT+6k4aSknmPj48kzJs8qLjvd4Xgpue06DOdnLxAUHzM6+kDZ+HMZfJYuR+LtwGc2hgf5gsijff0ekUNXZiqATP7PF5mZxZ3Izoun1s4zG4LUMnvw2r+KqCKIw+3IQH03v+BCA9nMELNqbSf6tiWSrXJB3LAVGUcallcrw8V2t9EL4EhzJWrQUax5wLVMNS0+rUPA3k22Ncx4XXZS9o0MBH27Bo6BpNelZpS+/uh9KsNlY6bHCmJU9p8g7m3fVKn28H3KDYA5Pl/T8Z1ptDAVe0lXdQ2YoyyH2uyPIGHBZZIs2pDBS8R07+qN+E7Q=="; -第二步:校验签名 - -token、timestamp、nonce、msg_encrypt 这四个参数按照字典序排序 - -"1372623149" -"1409659813" -"QDG6eK" -"RypEvHKD8QQKFhvQ6QleEB4J58tiPdvo+rtK1I9qca6aM/wvqnLSV5zEPeusUiX5L5X/0lWfrf0QADHHhGd3QczcdCUpj911L3vg3W/sYYvuJTs3TUUkSUXxaccAS0qhxchrRYt66wiSpGLYL42aM6A8dTT+6k4aSknmPj48kzJs8qLjvd4Xgpue06DOdnLxAUHzM6+kDZ+HMZfJYuR+LtwGc2hgf5gsijff0ekUNXZiqATP7PF5mZxZ3Izoun1s4zG4LUMnvw2r+KqCKIw+3IQH03v+BCA9nMELNqbSf6tiWSrXJB3LAVGUcallcrw8V2t9EL4EhzJWrQUax5wLVMNS0+rUPA3k22Ncx4XXZS9o0MBH27Bo6BpNelZpS+/uh9KsNlY6bHCmJU9p8g7m3fVKn28H3KDYA5Pl/T8Z1ptDAVe0lXdQ2YoyyH2uyPIGHBZZIs2pDBS8R07+qN+E7Q==" - -拼接为一个字符串 - -sort_str = "13726231491409659813QDG6eKRypEvHKD8QQKFhvQ6QleEB4J58tiPdvo+rtK1I9qca6aM/wvqnLSV5zEPeusUiX5L5X/0lWfrf0QADHHhGd3QczcdCUpj911L3vg3W/sYYvuJTs3TUUkSUXxaccAS0qhxchrRYt66wiSpGLYL42aM6A8dTT+6k4aSknmPj48kzJs8qLjvd4Xgpue06DOdnLxAUHzM6+kDZ+HMZfJYuR+LtwGc2hgf5gsijff0ekUNXZiqATP7PF5mZxZ3Izoun1s4zG4LUMnvw2r+KqCKIw+3IQH03v+BCA9nMELNqbSf6tiWSrXJB3LAVGUcallcrw8V2t9EL4EhzJWrQUax5wLVMNS0+rUPA3k22Ncx4XXZS9o0MBH27Bo6BpNelZpS+/uh9KsNlY6bHCmJU9p8g7m3fVKn28H3KDYA5Pl/T8Z1ptDAVe0lXdQ2YoyyH2uyPIGHBZZIs2pDBS8R07+qN+E7Q==" - -对该字符串进行sha1计算得到签名 - -signature = sha1(sort_str) = "477715d11cdb4164915debcba66cb864d751f3e6" - -对比从URL得到的签名,发现两者一致,签名通过,说明没被篡改,是安全的 -第三步: 解密消息 - -对密文base64解码 - -aes_msg = base64_decode(msg_encrypt) - -使用AESKey做AES解密(注意,不是EncodingAESKey) - -rand_msg = aes_decrypt(aes_msg, AESKey) - -去掉rand_msg头部的16个随机字节和4个字节的msg_len,截取msg_len长度的部分即为msg,剩下的为尾部的receiveid -下面为类似python的伪代码 - -content = rand_msg[16:] # 去掉前16随机字节 -msg_len = str_to_uint(content[0:4]) # 取出4字节的msg_len -msg = content[4:msg_len+4] # 截取msg_len 长度的msg -receiveid = content[msg_len+4:] = "wx5823bf96d3bd56c7" # 剩余字节为receiveid - - -对于回调xml解密后得到明文为: - - - - - 1409659813 - - - 4561255354251345929 - 218 - - -对于回调json解密后的明文为: - { - "ToUserName": "wx5823bf96d3bd56c7", - "FromUserName": "mycreate", - "CreateTime": "1409659813", - "MsgType": "text", - "Content": "hello", - "MsgId": "4561255354251345929", - "AgentID": "218" - } - - -根据明文中的MsgType可知,此为应用消息回调,因此receiveid应该为corpid,对比receiveid与corpid是否一致。 -附注:ReceiveId 含义 -加解密库里,ReceiveId 在各个场景的含义不同: - -企业应用的回调,表示corpid -第三方事件的回调,表示suiteid -机器人场景的回调,是一个空字符串 \ No newline at end of file diff --git a/大化请求示例.md b/大化请求示例.md deleted file mode 100644 index 10f31df..0000000 --- a/大化请求示例.md +++ /dev/null @@ -1,758 +0,0 @@ -# 请求 -``` -fetch("https://zfcg.gxzf.gov.cn/portal/category", { - "headers": { - "accept": "application/json, text/plain, */*", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-type": "application/json;charset=UTF-8", - "priority": "u=1, i", - "sec-ch-ua": "\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "_trs_uv=m9aqvdae_3820_kpq5; Hm_lvt_a013af4793f2380a4bcf49ca1ce393eb=1756429654; _zcy_log_client_uuid=78eb45c0-e9e6-11f0-b5f2-d1d9e72e9760", - "Referer": "https://zfcg.gxzf.gov.cn/site/category?parentId=66485&childrenCode=ZcyAnnouncement" - }, - "body": "{\"pageNo\":1,\"pageSize\":15,\"categoryCode\":\"61-266648\",\"keyword\":\"大化\",\"leaf\":0,\"_t\":1767863440000}", - "method": "POST" -}); -``` - -# 响应 -``` -{ - "success": true, - "result": { - "data": { - "total": 824, - "data": [ - { - "articleId": "aMzhKRWZyOvYpGoEA4k/8g==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "广西壮族自治区大化公路养护中心", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "广西壮族自治区大化公路养护中心2026年3月至4月政府采购意向", - "content": null, - "publishDate": 1767862531000, - "districtCode": "459900", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "广西壮族自治区本级", - "districtNameList": null, - "purchaseName": "广西壮族自治区大化公路养护中心", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "Qgm7DlkoLsuw6Asij2HL8w==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "中国共产党大化瑶族自治县委员会组织部", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "中国共产党大化瑶族自治县委员会组织部2026年2月至3月政府采购意向", - "content": null, - "publishDate": 1767843666000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "中国共产党大化瑶族自治县委员会组织部", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "JDbi2frSwfK/OJGRRBYN6Q==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县妇幼保健院", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县妇幼保健院2026年2月至3月政府采购意向", - "content": null, - "publishDate": 1767666771000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县妇幼保健院", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "mZ0mKKlc20JqxFQSxDzdMQ==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县文化广电体育和旅游局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县文化广电体育和旅游局2026年1月至2月政府采购意向", - "content": null, - "publishDate": 1767056616000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县文化广电体育和旅游局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "LZL8vkUWl20xzvY1dojGEQ==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县住房和城乡建设局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县住房和城乡建设局2025年12月至2月政府采购意向", - "content": null, - "publishDate": 1767002657000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县住房和城乡建设局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "JHc0AeCHUU5tXuy5jH5JhA==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县生态移民发展中心", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县生态移民发展中心2025年12月政府采购意向", - "content": null, - "publishDate": 1766543697000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县生态移民发展中心", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "tCLjD9yQJ0Sr+UqFs98MEw==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县审计局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县审计局2025年12月政府采购意向", - "content": null, - "publishDate": 1766475431000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县审计局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "Pvh5bmZ7PVLjb+0mR4OiVw==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县卫生健康局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县卫生健康局2025年12月政府采购意向", - "content": null, - "publishDate": 1766366941000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县卫生健康局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "QyGeeDyfVOLSNSj93XTLaw==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县林业局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县林业局2025年12月政府采购意向", - "content": null, - "publishDate": 1765533855000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县林业局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "9MlnLLCnZ2pqKmnnEH5DjA==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县第二中学", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县第二中学2025年12月政府采购意向", - "content": null, - "publishDate": 1765358076000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县第二中学", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "+KoOxEQ9eAfbYnYjtLNn2w==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县机关事务服务中心", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县机关事务服务中心2025年12月政府采购意向", - "content": null, - "publishDate": 1764920713000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县机关事务服务中心", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "VMGX21N42Cs8XvjMV4+M6Q==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县统计局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县统计局2025年12月政府采购意向", - "content": null, - "publishDate": 1764814295000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县统计局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "no/tJYjf/2/6DYX6cfQasw==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县住房和城乡建设局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "(更正)大化瑶族自治县住房和城乡建设局2025年12月政府采购意向", - "content": null, - "publishDate": 1764585519000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县住房和城乡建设局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "UAEtMQnIQnS1iS9ReRmuzA==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县住房和城乡建设局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县住房和城乡建设局2025年11月至12月政府采购意向", - "content": null, - "publishDate": 1763948631000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县住房和城乡建设局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "h3KdvP35dD5/n6FSZSgs9A==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "大化瑶族自治县卫生健康局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "大化瑶族自治县卫生健康局2025年11月政府采购意向", - "content": null, - "publishDate": 1763947257000, - "districtCode": "451229", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "大化瑶族自治县", - "districtNameList": null, - "purchaseName": "大化瑶族自治县卫生健康局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - } - ], - "empty": false - } - }, - "error": null -} -``` \ No newline at end of file diff --git a/陆川请求示例.md b/陆川请求示例.md deleted file mode 100644 index 420f950..0000000 --- a/陆川请求示例.md +++ /dev/null @@ -1,756 +0,0 @@ -# 请求 -``` -fetch("https://zfcg.gxzf.gov.cn/portal/category", { - "headers": { - "accept": "application/json, text/plain, */*", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-type": "application/json;charset=UTF-8", - "priority": "u=1, i", - "sec-ch-ua": "\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "_trs_uv=m9aqvdae_3820_kpq5; Hm_lvt_a013af4793f2380a4bcf49ca1ce393eb=1756429654; _zcy_log_client_uuid=78eb45c0-e9e6-11f0-b5f2-d1d9e72e9760", - "Referer": "https://zfcg.gxzf.gov.cn/site/category?parentId=66485&childrenCode=ZcyAnnouncement" - }, - "body": "{\"pageNo\":1,\"pageSize\":15,\"categoryCode\":\"61-266648\",\"keyword\":\"陆川\",\"leaf\":0,\"_t\":1767861990000}", - "method": "POST" -}); -``` - -# 响应结果 -{ - "success": true, - "result": { - "data": { - "total": 1800, - "data": [ - { - "articleId": "PflN8ihVcOhd1HJB1BXpkA==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县清湖镇人民政府", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县清湖镇人民政府2026年1月政府采购意向", - "content": null, - "publishDate": 1767860888000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县清湖镇人民政府", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "o/QTfE7PuyK+ksmVfpC0gA==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县九洲江灌区工程工作站", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县九洲江灌区工程工作站2026年2月政府采购意向", - "content": null, - "publishDate": 1767843293000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县九洲江灌区工程工作站", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "0L1gNd0LQf25SDBdrauQWg==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县农业农村局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县农业农村局2026年1月至2月政府采购意向", - "content": null, - "publishDate": 1767775873000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县农业农村局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "UJS9NxI3k+pan+QoCqCQGw==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县交通运输局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县交通运输局2026年1月至2月政府采购意向", - "content": null, - "publishDate": 1767772596000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县交通运输局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "P+b9RIrFDYXIWp9rxb/Qww==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县疾病预防控制中心", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县疾病预防控制中心2026年1月政府采购意向", - "content": null, - "publishDate": 1767685903000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县疾病预防控制中心", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "+33cxWTYsC0Z7ocmJ/4Fig==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县残疾人联合会", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县残疾人联合会2026年1月至2月政府采购意向", - "content": null, - "publishDate": 1767601634000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县残疾人联合会", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "yL/vpb8Ps4xVWjjtAH2AQA==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县残疾人联合会", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县残疾人联合会2026年1月至2月政府采购意向", - "content": null, - "publishDate": 1767601629000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县残疾人联合会", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "NPSwqE4wzAOBpij0aU87lQ==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县第三人民医院", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县第三人民医院2026年1月政府采购意向", - "content": null, - "publishDate": 1767599791000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县第三人民医院", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "48ZBE5aH/eRD3XOTTnuryg==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县九洲江灌区工程工作站", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县九洲江灌区工程工作站2025年12月政府采购意向", - "content": null, - "publishDate": 1767145858000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县九洲江灌区工程工作站", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "VgXUUw+j1K2biJRNZIvyug==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "广西壮族自治区陆川公路养护中心", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "(更正)广西壮族自治区陆川公路养护中心2026年2月至3月政府采购意向", - "content": null, - "publishDate": 1766999239000, - "districtCode": "459900", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "广西壮族自治区本级", - "districtNameList": null, - "purchaseName": "广西壮族自治区陆川公路养护中心", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "Btx7e3AG3jN4w8lcBubadg==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "广西壮族自治区陆川公路养护中心", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "广西壮族自治区陆川公路养护中心2025年12月广西壮族自治区陆川公政府采购意向", - "content": null, - "publishDate": 1766997277000, - "districtCode": "459900", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "广西壮族自治区本级", - "districtNameList": null, - "purchaseName": "广西壮族自治区陆川公路养护中心", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "ALN3v9yJMtWCsIWHF0aU8Q==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县清湖镇人民政府", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县清湖镇人民政府2026年1月政府采购意向", - "content": null, - "publishDate": 1766742383000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县清湖镇人民政府", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "CZyAN1P8IcF41AE+RBi4Vg==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县农业农村局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县农业农村局2025年12月政府采购意向", - "content": null, - "publishDate": 1766113136000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县农业农村局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "IzdiLTWoCMCDbKFvTJVNrg==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县水利工程工作站", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县 2026年中央水利发展资金小型水库工程维修养护项目施工2025年12月政府采购意向", - "content": null, - "publishDate": 1766029957000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县水利工程工作站", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - }, - { - "articleId": "aa4s0Xf/1t0FGX2Sk915Ng==", - "annId": null, - "siteId": 61, - "firstCode": null, - "parentId": null, - "secondCode": null, - "author": "陆川县农业农村局", - "cover": null, - "path": null, - "pathName": "采购意向公开", - "title": "陆川县农业农村局2025年12月政府采购意向", - "content": null, - "publishDate": 1765770671000, - "districtCode": "450922", - "gpCatalogCode": null, - "gpCatalogName": null, - "procurementMethodCode": null, - "procurementMethod": null, - "bidOpeningTime": null, - "projectCode": null, - "projectName": null, - "districtName": "陆川县", - "districtNameList": null, - "purchaseName": "陆川县农业农村局", - "rankCategoryName": null, - "encryptId": null, - "invalid": 0, - "invalidDate": null, - "isRenew": null, - "announcementType": null, - "ownerShotDepartmentName": null, - "budgetPrice": null, - "supplierName": null, - "totalContractAmount": null, - "isReformation": null, - "isReformationFlag": null, - "isReformationEnglishAnnouncement": null, - "nonGovmentFlag": null, - "supportEnglish": null, - "year": null, - "monitorAmount": null, - "smallAmount": null, - "smallPercent": null, - "stickLevel": 7258089600000, - "isStickLevel": false, - "remark": null - } - ], - "empty": false - } - }, - "error": null -} \ No newline at end of file