更新触发改为健壮版:过11点且当天未更新则补跑,不依赖精确触发时刻
This commit is contained in:
@@ -13,18 +13,37 @@ KIBANA_ES='http://kibana-sg3.ushareit.org/elasticsearch'
|
|||||||
DATA_FILE='data.json'
|
DATA_FILE='data.json'
|
||||||
KEEP_DAYS=14
|
KEEP_DAYS=14
|
||||||
|
|
||||||
# ============ 11 点档判断(UTC+8)============
|
# ============ 执行时机判断(UTC+8,健壮版)============
|
||||||
# 服务器每小时触发;只有当 UTC+8 当前小时 == 11 时才真正执行。
|
# 平台每小时触发一次本脚本。策略:
|
||||||
|
# 当 UTC+8 已过 11 点(含11点) 且 data.json 里还没有"今天(UTC+8)"这一行时 -> 执行补跑;
|
||||||
|
# 否则跳过。这样不依赖平台精确在 11:05 触发,只要 11 点后某次触发到了就会补当天,且一天只跑一次。
|
||||||
|
# 设 FORCE_RUN=1 可无条件强制运行。
|
||||||
HOUR_CST=$(TZ='Asia/Shanghai' date +%H)
|
HOUR_CST=$(TZ='Asia/Shanghai' date +%H)
|
||||||
|
RUN_DATE=$(TZ='Asia/Shanghai' date '+%Y/%-m/%-d') # 总表"日期"= 运行当天,格式 2026/9/3
|
||||||
FORCE="${FORCE_RUN:-0}"
|
FORCE="${FORCE_RUN:-0}"
|
||||||
if [ "$HOUR_CST" != "11" ] && [ "$FORCE" != "1" ]; then
|
if [ "$FORCE" != "1" ]; then
|
||||||
echo "[skip] 当前 UTC+8 $HOUR_CST 点,非 11 点档,跳过。(设 FORCE_RUN=1 可强制运行)"
|
# 1) 必须已过 11 点
|
||||||
exit 0
|
if [ "$((10#$HOUR_CST))" -lt 11 ]; then
|
||||||
|
echo "[skip] 当前 UTC+8 $HOUR_CST 点,未到 11 点,跳过。"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# 2) 今天是否已更新过(data.json 是否已有 RUN_DATE 这一行)
|
||||||
|
if [ -f "$DATA_FILE" ]; then
|
||||||
|
ALREADY=$(python3 -c "import json,sys
|
||||||
|
try:
|
||||||
|
d=json.load(open('$DATA_FILE',encoding='utf-8'))
|
||||||
|
print('1' if any(r.get('date')=='$RUN_DATE' for r in d.get('summary',[])) else '0')
|
||||||
|
except Exception:
|
||||||
|
print('0')")
|
||||||
|
if [ "$ALREADY" = "1" ]; then
|
||||||
|
echo "[skip] 今天($RUN_DATE)已更新过,跳过。"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ============ 日期计算(UTC+8 前一天)============
|
# ============ 日期计算(UTC+8 前一天)============
|
||||||
# 前一天 UTC+8 的 00:00~24:00,换算成 ES 用的 UTC 时间窗口。
|
# 前一天 UTC+8 的 00:00~24:00,换算成 ES 用的 UTC 时间窗口。
|
||||||
RUN_DATE=$(TZ='Asia/Shanghai' date '+%Y/%-m/%-d') # 总表"日期"= 运行当天,格式 2026/9/3
|
|
||||||
PREV_DATE_CST=$(TZ='Asia/Shanghai' date -v-1d '+%Y/%-m/%-d' 2>/dev/null || TZ='Asia/Shanghai' date -d 'yesterday' '+%Y/%-m/%-d')
|
PREV_DATE_CST=$(TZ='Asia/Shanghai' date -v-1d '+%Y/%-m/%-d' 2>/dev/null || TZ='Asia/Shanghai' date -d 'yesterday' '+%Y/%-m/%-d')
|
||||||
# 明细表 dt = 前一天(UTC+8)
|
# 明细表 dt = 前一天(UTC+8)
|
||||||
# ES 时间窗口(UTC): 前一天 00:00 CST = 前一天 -08:00 UTC;到 当天 00:00 CST
|
# ES 时间窗口(UTC): 前一天 00:00 CST = 前一天 -08:00 UTC;到 当天 00:00 CST
|
||||||
|
|||||||
Reference in New Issue
Block a user