#!/usr/bin/env bash
set -euo pipefail

# =============================================================
# run_test.sh — 生成少量预览页面 → Hugo静态部署 → 线上预览
# 用法:
#   ./run_test.sh              # 默认从两个数据源各取5条，共10条
#   ./run_test.sh 20           # 自定义总数(SQL取10, JSON取10)
#   ./run_test.sh 20 deploy    # 生成+自动部署
# =============================================================

SITE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SITE_ROOT/../.." && pwd)"
PIPELINE_DIR="$REPO_ROOT/cloudflare-pipeline"

TOTAL="${1:-10}"
ACTION="${2:-generate}"  # generate | deploy
HALF=$(( TOTAL / 2 ))
REMAINDER=$(( TOTAL - HALF ))

PREVIEW_DIR="$SITE_ROOT/hugo/static/_preview"

echo "╔══════════════════════════════════════════════════════╗"
echo "║  🧪 Test Mode — 预览页面生成 ($TOTAL 页)            ║"
echo "╚══════════════════════════════════════════════════════╝"

# 清理旧的预览文件
rm -rf "$PREVIEW_DIR"
mkdir -p "$PREVIEW_DIR"

# ---- Step 1: 从 SQL 数据源生成 ----
SQL_FILE="${DIGIKEY_SQL_FILE:-/Volumes/win10/（Jada）spider_digikey_data.sql}"
if [ -f "$SQL_FILE" ]; then
  echo ""
  echo "===== Step 1: SQL 数据源 → 取 $HALF 条 ====="
  TARGET_COUNT="$HALF" \
  GENERATE_HTML=1 \
  GENERATE_SQL=0 \
  OUTPUT_HTML_DIR="$PREVIEW_DIR" \
    python3 "$PIPELINE_DIR/generate_r2_product_pages.py" --clean-output --skip-qa

  # ---- Step 2: 从 JSON 数据源生成 ----
  echo ""
  echo "===== Step 2: JSON 数据源 → 取 $REMAINDER 条 ====="
  TARGET_COUNT="$REMAINDER" \
  GENERATE_HTML=1 \
  GENERATE_SQL=0 \
  OUTPUT_HTML_DIR="$PREVIEW_DIR" \
    python3 "$PIPELINE_DIR/page_pipeline.py" generate --source json --skip-qa
else
  echo ""
  echo "⚠️  SQL 数据源文件 $SQL_FILE 不存在，将自动降级为 JSON 数据源生成全部 $TOTAL 页..."
  echo ""
  echo "===== Step 1: JSON 数据源 → 取 $TOTAL 条 ====="
  TARGET_COUNT="$TOTAL" \
  GENERATE_HTML=1 \
  GENERATE_SQL=0 \
  OUTPUT_HTML_DIR="$PREVIEW_DIR" \
    python3 "$PIPELINE_DIR/page_pipeline.py" generate --source json --clean-output --skip-qa
fi

# ---- 汇总 ----
FILE_COUNT=$(find "$PREVIEW_DIR" -name '*.html' | wc -l | tr -d ' ')
echo ""
echo "✅ 共生成 $FILE_COUNT 个预览页面 → $PREVIEW_DIR/"
echo ""

# 生成预览索引页
INDEX_FILE="$PREVIEW_DIR/index.html"
cat > "$INDEX_FILE" << 'HEADER'
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>Template Preview Index</title>
<style>
body{font-family:system-ui,-apple-system,sans-serif;max-width:900px;margin:40px auto;padding:0 20px;background:#f8fafc;color:#1e293b}
h1{color:#1C3563;border-bottom:3px solid #1C3563;padding-bottom:12px}
.meta{color:#64748b;font-size:14px;margin-bottom:24px}
table{width:100%;border-collapse:collapse;background:white;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.1)}
th{background:#1C3563;color:white;text-align:left;padding:12px 16px;font-size:13px}
td{padding:10px 16px;border-bottom:1px solid #e2e8f0;font-size:14px}
tr:hover td{background:#f1f5f9}
a{color:#1C3563;text-decoration:none;font-weight:600}
a:hover{text-decoration:underline}
.badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:#dbeafe;color:#1e40af;font-weight:600}
</style>
</head>
<body>
<h1>🧪 Template Preview</h1>
<p class="meta">Generated at: __TIMESTAMP__ · <span class="badge">noindex</span></p>
<table>
<thead><tr><th>#</th><th>File</th><th>Size</th></tr></thead>
<tbody>
HEADER

# 替换时间戳
sed -i '' "s|__TIMESTAMP__|$(date '+%Y-%m-%d %H:%M:%S')|g" "$INDEX_FILE"

# 填充文件列表
COUNT=0
for f in "$PREVIEW_DIR"/*.html; do
  fname=$(basename "$f")
  [ "$fname" = "index.html" ] && continue
  COUNT=$((COUNT + 1))
  fsize=$(stat -f%z "$f" 2>/dev/null || stat -c%s "$f" 2>/dev/null)
  fsize_kb=$(echo "scale=1; $fsize / 1024" | bc)
  echo "<tr><td>$COUNT</td><td><a href=\"/_preview/$fname\" target=\"_blank\">$fname</a></td><td>${fsize_kb} KB</td></tr>" >> "$INDEX_FILE"
done

cat >> "$INDEX_FILE" << 'FOOTER'
</tbody>
</table>
<p style="margin-top:24px;font-size:13px;color:#94a3b8">
  确认无误后，执行 <code style="background:#e2e8f0;padding:2px 6px;border-radius:4px">./run_all.sh</code> 进行全量生成与部署。
</p>
</body>
</html>
FOOTER

echo "📄 预览索引页 → $PREVIEW_DIR/index.html"
echo ""

# ---- Step 3: 可选部署 ----
if [[ "$ACTION" == "deploy" ]]; then
  echo "===== Step 3: Hugo Build + Deploy ====="
  cd hugo
  npx wrangler pages deploy public --project-name=jp-inotoday-parts
  cd ..
  echo ""
  echo "🌐 预览地址: https://parts.jp.inotoday.com/_preview/"
else
  echo "📌 预览文件已就绪，手动部署步骤:"
  echo "   cd hugo && npx wrangler pages deploy public --project-name=jp-inotoday-parts"
  echo ""
  echo "🌐 部署后预览: https://parts.jp.inotoday.com/_preview/"
fi
