|
|
#!/usr/bin/env bash
|
|
|
# task-121:Playwright codegen headed 录制 Mothership 匿名查价路径(GD-15)
|
|
|
set -euo pipefail
|
|
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
cd "$ROOT"
|
|
|
|
|
|
export RPA_HEADLESS=false
|
|
|
|
|
|
FORBIDDEN=(
|
|
|
"dashboard.mothership.com"
|
|
|
"www.mothership.com/quote"
|
|
|
)
|
|
|
|
|
|
check_url() {
|
|
|
local url="$1"
|
|
|
local pattern
|
|
|
for pattern in "${FORBIDDEN[@]}"; do
|
|
|
if echo "$url" | grep -qi "$pattern"; then
|
|
|
echo "错误:禁止使用入口 URL(GD-15):${pattern}" >&2
|
|
|
echo "请使用 headed 录制验证的匿名公开报价 URL,见 docs/rpa-recording-sop.md" >&2
|
|
|
exit 1
|
|
|
fi
|
|
|
done
|
|
|
}
|
|
|
|
|
|
usage() {
|
|
|
cat <<'EOF'
|
|
|
用法: bash scripts/record-mothership.sh [起始 URL]
|
|
|
|
|
|
启动 Playwright codegen(headed),录制 Mothership 匿名查价完整路径。
|
|
|
|
|
|
禁止入口(GD-15):
|
|
|
- dashboard.mothership.com
|
|
|
- www.mothership.com/quote
|
|
|
|
|
|
产出:
|
|
|
.rpa/recordings/mothership-<时间戳>.js
|
|
|
.rpa/mothership-storage.json(若会话可持久化)
|
|
|
|
|
|
标准样例: LA 90001 → Dallas 75201,见 docs/rpa-recording-sop.md
|
|
|
EOF
|
|
|
}
|
|
|
|
|
|
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
|
|
|
usage
|
|
|
exit 0
|
|
|
fi
|
|
|
|
|
|
OUTPUT_DIR=".rpa/recordings"
|
|
|
STORAGE_PATH="${RPA_STORAGE_STATE_PATH:-.rpa/mothership-storage.json}"
|
|
|
mkdir -p "$OUTPUT_DIR" "$(dirname "$STORAGE_PATH")"
|
|
|
|
|
|
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
|
|
|
OUTPUT_FILE="${OUTPUT_DIR}/mothership-${TIMESTAMP}.js"
|
|
|
START_URL="${1:-}"
|
|
|
|
|
|
if [[ -n "$START_URL" ]]; then
|
|
|
check_url "$START_URL"
|
|
|
fi
|
|
|
|
|
|
echo "=== Mothership RPA 录制(headed)==="
|
|
|
echo "RPA_HEADLESS=${RPA_HEADLESS}"
|
|
|
echo "禁止入口: dashboard.mothership.com / www.mothership.com/quote"
|
|
|
echo "脚本产出: ${OUTPUT_FILE}"
|
|
|
echo "storageState: ${STORAGE_PATH}"
|
|
|
echo "SOP: docs/rpa-recording-sop.md"
|
|
|
echo ""
|
|
|
|
|
|
ARGS=(
|
|
|
codegen
|
|
|
--target=javascript
|
|
|
-o "$OUTPUT_FILE"
|
|
|
--save-storage="$STORAGE_PATH"
|
|
|
)
|
|
|
|
|
|
if [[ -f "$STORAGE_PATH" ]]; then
|
|
|
ARGS+=("--load-storage=$STORAGE_PATH")
|
|
|
echo "已加载已有 storageState: ${STORAGE_PATH}"
|
|
|
fi
|
|
|
|
|
|
if [[ -n "$START_URL" ]]; then
|
|
|
ARGS+=("$START_URL")
|
|
|
else
|
|
|
echo "未指定起始 URL:请在 codegen 浏览器中手动导航至匿名报价页"
|
|
|
fi
|
|
|
|
|
|
echo ""
|
|
|
exec env RPA_HEADLESS=false npx playwright "${ARGS[@]}"
|