| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/usr/bin/env bash
- # 验证重构后的端到端流水线(CLI → runDocument → text/audio/renderer → 导出 → OSS → 飞书)。
- #
- # 用法(在仓库根目录):
- # ./scripts/verify-refactor.sh # 默认:github-trending / bilibili / source 采集
- # TEMPLATE=github-trending PLATFORM=bilibili SOURCE=github-trending ./scripts/verify-refactor.sh
- # INPUT=test/fixtures/sample-knowledge.json TEMPLATE=knowledge ./scripts/verify-refactor.sh # 用本地输入文件
- # NO_TTS=1 ./scripts/verify-refactor.sh # 跳过 TTS(静音视频,用于只验布局)
- # NO_PUBLISH=1 ./scripts/verify-refactor.sh # 跳过 OSS/飞书
- # SKIP_BUILD=1 ./scripts/verify-refactor.sh # 跳过 pnpm build(dist 已是最新时)
- #
- # 需要的真机依赖:.env 里的 LLM/TTS key、Remotion Chrome、(可选)OSS/飞书凭据。
- set -euo pipefail
- ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
- cd "$ROOT"
- TEMPLATE="${TEMPLATE:-github-trending}"
- PLATFORM="${PLATFORM:-bilibili}"
- SOURCE="${SOURCE:-github-trending}"
- echo "================ 验证重构流水线 ================"
- echo "模板: $TEMPLATE 平台: $PLATFORM"
- [ -n "${INPUT:-}" ] && echo "输入文件: $INPUT" || echo "数据源: $SOURCE"
- [ "${NO_TTS:-0}" = "1" ] && echo "TTS: 跳过 (--no-tts)"
- [ "${NO_PUBLISH:-0}" = "1" ] && echo "发布: 跳过 (--no-publish)"
- echo "================================================"
- if [ "${SKIP_BUILD:-0}" != "1" ]; then
- echo ">> 构建所有包 (turbo build)..."
- pnpm build
- fi
- CLI="apps/cli/dist/index.js"
- if [ ! -f "$CLI" ]; then
- echo "!! CLI 未构建($CLI 不存在)。请去掉 SKIP_BUILD 或先 pnpm build。" >&2
- exit 1
- fi
- ARGS=(render -t "$TEMPLATE" -p "$PLATFORM")
- if [ -n "${INPUT:-}" ]; then
- ARGS+=("$INPUT")
- else
- ARGS+=("--source" "$SOURCE")
- fi
- [ "${NO_TTS:-0}" = "1" ] && ARGS+=("--no-tts")
- [ "${NO_PUBLISH:-0}" = "1" ] && ARGS+=("--no-publish")
- echo ">> 运行: node $CLI ${ARGS[*]}"
- echo "------------------------------------------------"
- set +e
- node "$CLI" "${ARGS[@]}" 2>&1 | tee /tmp/verify-refactor.log
- CODE=${PIPESTATUS[0]}
- set -e
- echo "------------------------------------------------"
- if [ "$CODE" -ne 0 ]; then
- echo "!! 流水线失败(exit $CODE)。完整日志见 /tmp/verify-refactor.log" >&2
- exit "$CODE"
- fi
- echo ">> 解析产物..."
- MP4S=$(grep -oE '\-> (.+\.mp4)' /tmp/verify-refactor.log | sed 's/^-> //' || true)
- OSSURLS=$(grep -oE 'oss: (\S+)' /tmp/verify-refactor.log | sed 's/^oss: //' || true)
- echo "================ 结果 ================"
- if [ -z "$MP4S" ]; then
- echo "⚠️ 未在输出中解析到 MP4(检查上方日志)"
- else
- for mp4 in $MP4S; do
- if [ -f "$mp4" ]; then
- SIZE=$(du -h "$mp4" | cut -f1)
- echo " ✅ $mp4 ($SIZE)"
- else
- echo " ⚠️ $mp4 (CLI 报告但文件不存在)"
- fi
- done
- fi
- if [ -n "$OSSURLS" ]; then
- echo " OSS:"
- echo "$OSSURLS" | sed 's/^/ - /'
- fi
- echo "======================================"
- echo "完成。如需检视 VideoDocument 契约,运行:node scripts/dump-video-document.mjs"
|