#!/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"