#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ASSET_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
REPO_ROOT="$(cd "$ASSET_ROOT/../.." && pwd)"
TARGET_VUS="${1:-150}"
HOLD_DURATION="${2:-60m}"
RAMP_DURATION="${RAMP_DURATION:-5m}"
DASHBOARD_PORT="${DASHBOARD_PORT:-5665}"
BASE_URL="${BASE_URL:-https://www.cqhwjtzhst.com/aizhct/index.php?s=/api/}"
ENTERPRISE_NO="${ENTERPRISE_NO:-10054}"
ASSET_REPO_PATH="work_chongqing_huanwei/performance-testing"
ACCOUNTS_HOST_PATH="${ACCOUNTS_FILE:-$ASSET_ROOT/data/accounts.csv}"
K6_SCRIPT_REPO_PATH="$ASSET_REPO_PATH/k6/live-online.js"

cd "$REPO_ROOT"

node "$ASSET_ROOT/tools/live-load-config.mjs" \
  "$ACCOUNTS_HOST_PATH" "$TARGET_VUS" "$HOLD_DURATION"

if [[ "${CONFIRM_PRODUCTION_LOAD_TEST:-}" != "CQHW-LIVE-LOAD" ]]; then
  echo '已完成离线校验，未发送生产请求。' >&2
  echo '正式执行需设置：CONFIRM_PRODUCTION_LOAD_TEST=CQHW-LIVE-LOAD' >&2
  exit 2
fi

RUN_ID="$(date '+%Y%m%d-%H%M%S')"
OUTPUT_REPO_PATH="$ASSET_REPO_PATH/evidence/live-$RUN_ID"
OUTPUT_HOST_PATH="$REPO_ROOT/$OUTPUT_REPO_PATH"
mkdir -p "$OUTPUT_HOST_PATH"

echo "实时看板：http://127.0.0.1:${DASHBOARD_PORT}"
echo "目标在线：${TARGET_VUS} VU；爬升：${RAMP_DURATION}；稳定：${HOLD_DURATION}"
echo '测试完成后关闭看板浏览器页，等待k6写出汇总文件。'

docker run --rm \
  --user "$(id -u):$(id -g)" \
  -p "$DASHBOARD_PORT:5665" \
  -v "$REPO_ROOT:/work" \
  -v "$ACCOUNTS_HOST_PATH:/run/cqhw-accounts.csv:ro" \
  -w /work \
  -e K6_WEB_DASHBOARD=true \
  -e K6_WEB_DASHBOARD_HOST=0.0.0.0 \
  -e K6_WEB_DASHBOARD_PORT=5665 \
  -e K6_WEB_DASHBOARD_PERIOD=2s \
  -e K6_WEB_DASHBOARD_EXPORT="/work/$OUTPUT_REPO_PATH/k6-live-report.html" \
  grafana/k6:2.2.0 run \
  -e ACCOUNTS_FILE="/run/cqhw-accounts.csv" \
  -e TARGET_VUS="$TARGET_VUS" \
  -e RAMP_DURATION="$RAMP_DURATION" \
  -e HOLD_DURATION="$HOLD_DURATION" \
  -e BASE_URL="$BASE_URL" \
  -e ENTERPRISE_NO="$ENTERPRISE_NO" \
  --summary-export "/work/$OUTPUT_REPO_PATH/k6-summary.json" \
  "$K6_SCRIPT_REPO_PATH"

node "$ASSET_ROOT/tools/generate-chinese-report.mjs" \
  --summary "$OUTPUT_HOST_PATH/k6-summary.json" \
  --output "$OUTPUT_HOST_PATH/重庆环卫小程序压力测试报告-中文.html"

echo "中文报告：$OUTPUT_HOST_PATH/重庆环卫小程序压力测试报告-中文.html"
