chore: import upstream snapshot with attribution
This commit is contained in:
Executable
+150
@@ -0,0 +1,150 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# diff_pct_test.sh — regression test for tools/diff_pct.py
|
||||
#
|
||||
# Validates 3 fixture cases that the legacy line-level diff failed:
|
||||
# case 1: long markdown lines vs spoken-transcript short lines, same content
|
||||
# → expected diff_pct < 30 (was ~198% under legacy)
|
||||
# case 2: completely different topic
|
||||
# → expected diff_pct ≥ 60
|
||||
# case 3: orig + ~20% new content appended
|
||||
# → expected diff_pct 10-30
|
||||
#
|
||||
# Usage:
|
||||
# bash tools/diff_pct_test.sh
|
||||
# Exit:
|
||||
# 0 = all pass
|
||||
# 1 = ≥1 failure
|
||||
#
|
||||
# Runs against whichever backend is installed (rapidfuzz preferred, difflib
|
||||
# fallback). Both should pass these ranges — they're chosen to be wide
|
||||
# enough to absorb backend-algorithm differences.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
DIFF_PCT="$SCRIPT_DIR/diff_pct.py"
|
||||
|
||||
if [[ ! -f "$DIFF_PCT" ]]; then
|
||||
echo "❌ diff_pct.py not found at $DIFF_PCT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMP=$(mktemp -d)
|
||||
trap 'rm -rf "$TMP"' EXIT
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
|
||||
run_case() {
|
||||
local label="$1"
|
||||
local orig="$2"
|
||||
local new="$3"
|
||||
local min="$4"
|
||||
local max="$5"
|
||||
|
||||
local stderr_out
|
||||
stderr_out=$(mktemp)
|
||||
local actual
|
||||
actual=$(python3 "$DIFF_PCT" "$orig" "$new" 2>"$stderr_out")
|
||||
local backend
|
||||
backend=$(grep -oE 'backend=[a-z]+' "$stderr_out" | head -1 || echo "backend=?")
|
||||
rm -f "$stderr_out"
|
||||
|
||||
if (( actual >= min && actual <= max )); then
|
||||
echo " ✓ $label: diff_pct=$actual ∈ [$min, $max] ($backend)"
|
||||
PASS=$((PASS+1))
|
||||
else
|
||||
echo " ✗ $label: diff_pct=$actual NOT in [$min, $max] ($backend)"
|
||||
FAIL=$((FAIL+1))
|
||||
fi
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "=== Case 1: long markdown line vs spoken-transcript short lines, same content ==="
|
||||
|
||||
cat > "$TMP/case1_orig.md" <<'EOF'
|
||||
# 视频草稿 — 评审会复盘
|
||||
|
||||
「最近发现一个现象」——所有审稿人都在说一样的话:你的研究太老套了。
|
||||
|
||||
但你仔细看,他们引用的全是 5 年前的反应。AI 不是新东西。新的是这次大家集体觉醒了。
|
||||
|
||||
**升维点**:当所有人都在追新概念的时候,先看穿规律的人已经在用工具赚钱了。
|
||||
EOF
|
||||
|
||||
cat > "$TMP/case1_shot.md" <<'EOF'
|
||||
最近发现一个现象
|
||||
所有审稿人都在说一样的话
|
||||
你的研究太老套了
|
||||
但你仔细看
|
||||
他们引用的全是
|
||||
5 年前的反应
|
||||
AI 不是新东西
|
||||
新的是这次
|
||||
大家集体觉醒了
|
||||
当所有人都在追新概念的时候
|
||||
先看穿规律的人
|
||||
已经在用工具赚钱了
|
||||
EOF
|
||||
|
||||
run_case "spoken-style line breaks, content preserved" \
|
||||
"$TMP/case1_orig.md" "$TMP/case1_shot.md" 0 30
|
||||
|
||||
echo ""
|
||||
echo "=== Case 2: completely different topic ==="
|
||||
|
||||
cat > "$TMP/case2_orig.md" <<'EOF'
|
||||
# AI 焦虑
|
||||
|
||||
最近 AI 大模型发布得太快了,每周一个新工具。
|
||||
你刚学会一个,下周它就被淘汰了。
|
||||
这种焦虑本质上是工具焦虑,不是能力焦虑。
|
||||
真正不变的是你解决问题的范式——选好题、定好评估、跑通闭环。
|
||||
EOF
|
||||
|
||||
cat > "$TMP/case2_shot.md" <<'EOF'
|
||||
今天聊聊我家的猫
|
||||
它叫橘子 是一只英短
|
||||
最喜欢窝在窗台上晒太阳
|
||||
我每天下班回家
|
||||
看到它就忘了所有烦恼
|
||||
它今天还偷吃了我的牛奶
|
||||
被我发现了 装作没事
|
||||
猫真是世界上最神奇的生物
|
||||
EOF
|
||||
|
||||
run_case "completely different topic" \
|
||||
"$TMP/case2_orig.md" "$TMP/case2_shot.md" 60 100
|
||||
|
||||
echo ""
|
||||
echo "=== Case 3: orig + ~20% appended (outro / CTA scenario) ==="
|
||||
|
||||
# Realistic 创作者 scenario: 拍前稿 ~150 字, 拍时加一句 30 字 outro
|
||||
# 增量 / 原稿 ≈ 20%, Levenshtein/max(orig,new) ≈ 16-20%
|
||||
cat > "$TMP/case3_orig.md" <<'EOF'
|
||||
# 视频 — 关于宿命论
|
||||
|
||||
我以前不信宿命论。直到我跑了这个工具——它让我拍了一条视频,预测了流量。
|
||||
我想证明它是错的,告诉了观众希望集体观测让数据偏移。结果数据是准的。
|
||||
我没逃出宿命论。我只是从一阶跳到二阶——AI 在观测观测者。
|
||||
EOF
|
||||
|
||||
cat > "$TMP/case3_shot.md" <<'EOF'
|
||||
我以前不信宿命论。直到我跑了这个工具——它让我拍了一条视频,预测了流量。
|
||||
我想证明它是错的,告诉了观众希望集体观测让数据偏移。结果数据是准的。
|
||||
我没逃出宿命论。我只是从一阶跳到二阶——AI 在观测观测者。
|
||||
此时此刻看到这条的你——是出于好奇,还是在完成算法的最后一次落位?
|
||||
EOF
|
||||
|
||||
run_case "~20% appended outro" \
|
||||
"$TMP/case3_orig.md" "$TMP/case3_shot.md" 10 30
|
||||
|
||||
echo ""
|
||||
echo "=== Results: $PASS passed, $FAIL failed ==="
|
||||
|
||||
if [[ $FAIL -eq 0 ]]; then
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user