add: one-click backfill script for ads-center
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
# =====================================================================
|
||||
# 【在 ads-center 那台电脑上运行这一个脚本即可】
|
||||
# 作用:把 Voypace 面板的数据用最新逻辑从 2026-07-15 起全量重查一遍并上线。
|
||||
# 用法:把本文件拷到 ads-center,执行 bash run_on_adscenter.sh
|
||||
# =====================================================================
|
||||
set -e
|
||||
|
||||
# ads-center 上的 Python(与 Moboost 同步脚本一致)
|
||||
PY="/Users/ads-center/py314env/bin/python"
|
||||
[ -x "$PY" ] || PY="python3" # 找不到就退回系统 python3
|
||||
|
||||
# 同步仓库目录(不存在则自动 clone)
|
||||
REPO_DIR="/Users/ads-center/voypace-report-sync/voypace-ad-report"
|
||||
REPO_URL="https://wangyuan:51fa1035659e6d267beffcd08af5ec7168efe4df@git.ops.roasbloom.site/wangyuan/voypace-ad-report.git"
|
||||
|
||||
echo ">>> 1/4 准备代码仓库..."
|
||||
if [ -d "$REPO_DIR/.git" ]; then
|
||||
git -C "$REPO_DIR" pull --rebase -q
|
||||
else
|
||||
mkdir -p "$(dirname "$REPO_DIR")"
|
||||
git clone -q "$REPO_URL" "$REPO_DIR"
|
||||
fi
|
||||
cd "$REPO_DIR"
|
||||
|
||||
echo ">>> 2/4 用新逻辑从 2026-07-15 全量重查(查数据库)..."
|
||||
"$PY" db_fetch.py 2026-07-15 2026-12-31 > mtg_data.json
|
||||
echo " 生成记录数:$("$PY" -c 'import json;print(len(json.load(open("mtg_data.json"))))')"
|
||||
|
||||
echo ">>> 3/4 刷新矩阵状态..."
|
||||
"$PY" - <<'EOF'
|
||||
import json
|
||||
from collections import defaultdict
|
||||
data=json.load(open("mtg_data.json")); orders=json.load(open("orders.json"))
|
||||
pkg_status={}
|
||||
for o in orders:
|
||||
for p in str(o["pkg"]).replace(" ","").split("/"):
|
||||
if p: pkg_status[p]=o.get("status","Pause")
|
||||
g=defaultdict(lambda: defaultdict(int))
|
||||
for r in data: g[(r["channel"],r["pkg"])][r["date"]]+=r["impression"]
|
||||
alldates=sorted(set(r["date"] for r in data)); last3=alldates[-3:]
|
||||
ov={}
|
||||
for (ch,pkg),days in g.items():
|
||||
ps=pkg_status.get(pkg,"Pause")
|
||||
if ps!="Active": ov[f"{ch}|{pkg}"]="Pause"; continue
|
||||
total=sum(days.values()); rmax=max([days.get(dt,0) for dt in last3]) if last3 else 0
|
||||
ov[f"{ch}|{pkg}"]= "none" if total==0 else ("Active" if rmax>=100 else "Pause")
|
||||
json.dump(ov, open("matrix_overrides.json","w"), ensure_ascii=False, indent=2)
|
||||
EOF
|
||||
|
||||
echo ">>> 4/4 上传更新(面板会自动刷新)..."
|
||||
git add mtg_data.json matrix_overrides.json
|
||||
if git commit -m "data: full backfill from 2026-07-15" -q; then
|
||||
git push -q origin main && echo " 已上线"
|
||||
else
|
||||
echo " 数据无变化,跳过"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== 完成!面板地址:https://ops.roasbloom.site/voypace-ad-report/ ==="
|
||||
Reference in New Issue
Block a user