#!/bin/bash
# zt_daily_job.sh — cron 入口：跑全闭环 pipeline，成功后输出简短摘要（no_agent 模式 stdout 推送）
set -e
LOG=/tmp/zt_pipeline_last.log
bash /Users/xpresso/zt_app/code/daily_pipeline.sh > $LOG 2>&1 || {
  echo "⚠️ 涨停回调战法每日任务失败，日志 $LOG"
  tail -15 $LOG
  exit 1
}
# 提取摘要：今日扫描候选（固化 JSON，防日志截断吞清单）+ 模拟盘状态
PY=/Users/xpresso/zt_app/zt_venv/bin/python
$PY /Users/xpresso/zt_app/code/extract_today_candidates.py || echo "⚠️ 今日候选提取失败（日志 $LOG）"
# 冻结路径审计(2026-09-16): 关键行进推送摘要 + 落 patches/scan_freeze_audit.md, 供跨机对账直接取用
AUDIT=/Users/xpresso/zt_app/patches/scan_freeze_audit.md
AUD=$(grep -aE "模型冻结校验通过|冻结态审计|今日候选已固化|模型未冻结|拒绝扫描" $LOG || true)
echo "$AUD"
{
  echo ""
  echo "## $(date '+%Y-%m-%d %H:%M') 冻结路径审计"
  echo '```'
  echo "$AUD"
  echo '```'
} >> "$AUDIT"
# 当日产物提交推送(2026-09-16): 防复发「当日产物漏推致对端 daily_reconcile 读旧版」(0915 已发生过一次)。
# 纪律: 只 add 本侧自己的路径(COLLAB_RULES), 不做 git add -A; 推送失败只告警不中断摘要。
cd /Users/xpresso/zt_app
git add backtest_zt_full/strength_baseline.csv backtest_zt_full/scan_today_candidates.json \
        backtest_zt_full/strength_model.json backtest_zt_full/model_manifest.json \
        sim_trading_nav.csv sim_trading_state.json patches/scan_freeze_audit.md 2>/dev/null || true
if ! git diff --cached --quiet; then
  git -c user.name="xpressomac" -c user.email="xpresso@local" commit -q -m "日循环产物 $(date +%F)" || true
  git push -q origin main || echo "⚠️ 当日产物推送失败(需手工 push, 对端会读到旧版)"
  echo "📦 当日产物已提交推送: $(git log --oneline -1)"
fi
$PY - <<'EOF'
import json, os
D = json.load(open('/Users/xpresso/zt_app/dashboard_data.json'))
ret = (D['sim']['total']/D['sim']['init']-1)*100
strong = [s for s in D['signals_recent'] if s['strength'] >= 85]
print(f"📊 涨停回调战法 · {D['generated_at']}")
print(f"模拟盘净值 {D['sim']['total']:,.0f}（{ret:+.2f}%）持仓{D['sim']['n_pos']}只 浮动{D['sim']['floating']:+,.0f} 已实现{D['sim']['realized']:+,.0f}")
print(f"📚 历史窗口已触发信号 {len(D['signals_recent'])} 笔（按买入日；强度≥85 共 {len(strong)} 只）：")
for s in strong[:15]:
    print(f"  {s['name']}({s['code'][:8]}) {s['pool_cn']} 强度{s['strength']:.0f}")
# 公网地址(隧道守护写的 URL); 取不到才回退本地
u = ''
try:
    u = open('/tmp/cf_last_url').read().strip()
except Exception:
    pass
print(f"看板: {u}/dashboard.html" if u else "看板: file:///Users/xpresso/zt_app/dashboard.html")
EOF
