Files
intl_news/scripts/domestic_full.sh
T
simon c1ab751d95 feat: 日报改为每日一次 + 新增 LLM 使用/成本/缓存文档
- domestic_full.sh / pipeline.sh 新增 --no-report 参数:跳过日报生成,
  保持 M1 抓取 + M2→M6 管道不变,用于 12:00/18:00 只抓不生成日报
- crontab: 07:00 全量含日报,12:00/18:00 --no-report(日报每日一次,降低 LLM 费用)
- docs/llm-models.md: 各 LLM 调用点分别用的 provider/model 事实清单
- docs/llm-cost-analysis.md: 真实 token 消耗与费用构成、降本建议
- docs/llm-cache-optimization.md: DeepSeek 上下文缓存机制与命中率提升设计
- docs/README.md 增加上述三个文档索引
2026-09-04 10:38:33 +08:00

86 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =============================================
# 国内服务器:全流程自动化(独立运行,无需海外)
# 1. M1 Pi 抓取(headful Playwright + HTTP 代理)
# 2. 全链路 M2→M6(含日报)
# =============================================
# 每天 06:00 / 12:00 / 18:00 / 22:00 各执行一次
# =============================================
# 用法:
# ./scripts/domestic_full.sh # 全新执行(含日报)
# ./scripts/domestic_full.sh --resume # 从中断处继续(跳过已完成步骤,
# # 步骤状态见 data/run_state/{date}.state)
# ./scripts/domestic_full.sh --no-report # 只抓取 + M2→M6,跳过日报生成
# ./scripts/domestic_full.sh --no-report --resume
# =============================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"
# ── 参数解析 ──
RESUME=0
NO_REPORT=0
for arg in "$@"; do
case "$arg" in
--resume) RESUME=1 ;;
--no-report) NO_REPORT=1 ;;
*) echo "未知参数: ${arg}(支持 --resume / --no-report)" >&2; exit 1 ;;
esac
done
source "$SCRIPT_DIR/_step_state.sh"
LOG() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
# ── 全流程日志:所有输出实时显示到终端,同时完整写入日志文件 ──
LOG_DIR="logs"
mkdir -p "$LOG_DIR"
FULL_LOG="$LOG_DIR/domestic_full_$(date +%Y%m%d_%H%M%S).log"
: > "$FULL_LOG"
LOG "══════ 国内全流程开始(resume=${RESUME} no_report=${NO_REPORT})═══════"
LOG "全流程日志: ${FULL_LOG}(终端实时显示完整进度)"
# ── 加载 .env ──
if [ -f .env ]; then
set -a
. ./.env
set +a
fi
# ── 1. M1 Pi 抓取(headful Playwright + HTTP 代理)──
# 部分源抓取失败不阻塞管道(原语义);抓取本身按 URL 去重(index.jsonl),
# 已抓取过的 URL 不会重复写入;输出实时显示每源进度
# 只有 M1 脚本成功退出(即不是“全部源失败”)才标记完成;
# 若全部源失败,不标记,--resume 可重新抓取。
M1_FAILED=0
if step_should_run M1_crawl; then
LOG "━━━ [1/2] M1 抓取(headful Playwright + HTTP 代理)━━━"
if bash "$SCRIPT_DIR/domestic_crawl_8g.sh" 2>&1 | tee -a "$FULL_LOG"; then
step_mark M1_crawl
else
LOG "WARNING: M1 抓取未完全成功,本次不标记 M1_crawl,--resume 可重试"
M1_FAILED=1
fi
fi
# ── 2. M2→M6 管道(+ 可选日报)──
if [ "$NO_REPORT" = "1" ]; then
LOG "━━━ [2/2] M2→M6 管道(已跳过日报,--no-report)━━━"
else
LOG "━━━ [2/2] M2→M6 管道 + 日报 ━━━"
fi
PIPELINE_ARGS=""
[ "$RESUME" = "1" ] && PIPELINE_ARGS="$PIPELINE_ARGS --resume"
[ "$NO_REPORT" = "1" ] && PIPELINE_ARGS="$PIPELINE_ARGS --no-report"
bash "$SCRIPT_DIR/pipeline.sh" $PIPELINE_ARGS 2>&1 | tee -a "$FULL_LOG"
if [ "$M1_FAILED" -eq 1 ]; then
LOG "⚠️ 全流程结束,但 M1 抓取未成功,退出码=1"
exit 1
fi
LOG "══════ 国内全流程完成 ✅ ══════"