c548a8b5bd
feat(core): 添加大化县政府网采购公告数据表和相关功能 - 创建 dahuagov_announcements 表用于存储大化县政府网采购公告 - 添加相关索引以提高查询性能 - 实现 save_dahuagov_announcements、get_new_dahuagov_announcements 和 mark_dahuagov_announcements_sent 方法 - 修改统计查询以包含大化县公告数据 - 更新内容哈希检查逻辑以支持新表 feat(cron): 集成大化县政府网采购公告爬取功能 - 导入大化县政府网爬虫模块 - 修改定时任务流程以同时爬取广西政府采购网和大化县政府网 - 对不同来源公告采用不同处理策略: - 广西政府采购网:关键词筛选后推送 - 大化县政府网:全部推送,不过滤关键词 - 分别处理和统计两个来源的公告数据 - 实现独立的通知发送和状态更新机制 feat(notification): 优化企业微信通知显示大化县来源标识 - 为不同来源公告添加前缀标识(【大化县政府网】或【广西政府采购网】) - 根据公告来源动态调整通知标题: - 单一来源显示具体来源 - 双来源显示"双源监控"标识 - 改进通知卡片的来源区分度,便于用户识别公告来源 ```
114 lines
3.3 KiB
Bash
Executable File
114 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# 定时搜索脚本启动器
|
|
# 用于启动广西政府采购网和大化县政府网公告定时搜索任务
|
|
# 自动激活项目虚拟环境并运行Python脚本
|
|
|
|
# 设置脚本遇到错误时退出
|
|
set -e
|
|
|
|
# 获取脚本所在目录的绝对路径
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$SCRIPT_DIR"
|
|
|
|
echo "========================================"
|
|
echo "🕒 政府采购公告定时搜索任务"
|
|
echo "📂 项目目录: $PROJECT_ROOT"
|
|
echo "🌐 监控网站:"
|
|
echo " - 广西政府采购网 (zfcg.gxzf.gov.cn)"
|
|
echo " - 大化县政府网 (gxdh.gov.cn)"
|
|
echo "⏰ 开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "========================================"
|
|
|
|
# 检查虚拟环境
|
|
VENV_PATH="$PROJECT_ROOT/venv"
|
|
if [ ! -d "$VENV_PATH" ]; then
|
|
echo "❌ 错误: 找不到虚拟环境目录"
|
|
echo " 预期路径: $VENV_PATH"
|
|
echo " 请确保虚拟环境已正确创建"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查虚拟环境激活脚本
|
|
VENV_ACTIVATE="$VENV_PATH/bin/activate"
|
|
if [ ! -f "$VENV_ACTIVATE" ]; then
|
|
echo "❌ 错误: 找不到虚拟环境激活脚本"
|
|
echo " 预期路径: $VENV_ACTIVATE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ 找到虚拟环境: $VENV_PATH"
|
|
|
|
# 激活虚拟环境
|
|
echo "🔧 激活虚拟环境..."
|
|
echo " 激活脚本: $VENV_ACTIVATE"
|
|
source "$VENV_ACTIVATE"
|
|
|
|
# 检查Python环境(在虚拟环境中)
|
|
if ! command -v python &> /dev/null; then
|
|
echo "❌ 错误: 虚拟环境中未找到Python命令"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查Python版本(在虚拟环境中)
|
|
PYTHON_VERSION=$(python --version 2>&1 | cut -d' ' -f2 | cut -d. -f1-2)
|
|
echo "🐍 Python版本 (虚拟环境): $PYTHON_VERSION"
|
|
|
|
# 检查项目目录
|
|
if [ ! -d "$PROJECT_ROOT/gx_gp_monitor" ]; then
|
|
echo "❌ 错误: 找不到gx_gp_monitor目录"
|
|
echo " 预期路径: $PROJECT_ROOT/gx_gp_monitor"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查cron_crawl.py文件
|
|
CRON_SCRIPT="$PROJECT_ROOT/gx_gp_monitor/cron_crawl.py"
|
|
if [ ! -f "$CRON_SCRIPT" ]; then
|
|
echo "❌ 错误: 找不到cron_crawl.py文件"
|
|
echo " 预期路径: $CRON_SCRIPT"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ 环境检查通过"
|
|
|
|
# 检查当前时间是否在夜间休息时间段 (23:00 - 07:00)
|
|
CURRENT_HOUR=$(date +%H)
|
|
CURRENT_MINUTE=$(date +%M)
|
|
CURRENT_TIME=$((CURRENT_HOUR * 60 + CURRENT_MINUTE))
|
|
START_TIME=$((23 * 60 + 0)) # 23:00
|
|
END_TIME=$((7 * 60 + 0)) # 07:00
|
|
|
|
if [ $CURRENT_TIME -ge $START_TIME ] || [ $CURRENT_TIME -lt $END_TIME ]; then
|
|
echo "🌙 当前时间 $(date '+%H:%M') 在夜间休息时间段 (23:00-07:00)"
|
|
echo "💤 跳过爬取任务,直接结束"
|
|
echo "========================================"
|
|
echo "🏁 任务跳过"
|
|
echo "📅 结束时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "🔚 退出代码: 0 (跳过)"
|
|
echo "✅ 任务跳过成功"
|
|
echo "========================================"
|
|
exit 0
|
|
fi
|
|
|
|
echo "🚀 启动定时搜索脚本..."
|
|
|
|
# 切换到项目根目录
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# 执行定时爬取脚本
|
|
python "$CRON_SCRIPT"
|
|
EXIT_CODE=$?
|
|
|
|
echo "========================================"
|
|
echo "🏁 任务完成"
|
|
echo "📅 结束时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "🔚 退出代码: $EXIT_CODE"
|
|
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
echo "✅ 任务执行成功"
|
|
else
|
|
echo "❌ 任务执行失败"
|
|
fi
|
|
|
|
echo "========================================"
|
|
exit $EXIT_CODE
|