ax_rd
113 mins ago 62a9f6223745c0df42be1f4226f31dfb10c83ea8
scripts/e2e-verify.sh
@@ -1,8 +1,10 @@
#!/bin/bash
# 端到端验证(对标 spec 测试计划第 2 节)
set -e
set -o pipefail # 防止管道末端(tail/head)掩盖真实命令失败
export CGO_CFLAGS="-DSQLITE_ENABLE_FTS5"
export CGO_LDFLAGS="-lm"
FAILS=0
VAULT="${1:-$HOME/rag-lpg-obsidian}"
cd "$(dirname "$0")/.."
go build -o /tmp/kb-cli-e2e .
@@ -17,7 +19,11 @@
mkdir -p "$VAULT/笔记"
TESTFILE="$VAULT/笔记/e2e-test-$(date +%s).md"
printf -- "---\ntitle: e2e测试\ntags: [补气]\n---\ne2e 补气测试内容\n" > "$TESTFILE"
/tmp/kb-cli-e2e search e2e --vault "$VAULT" --top 3 2>&1 | grep -q "e2e测试" && echo "PASS: 未commit编辑可见" || echo "FAIL: 未commit编辑不可见"
if /tmp/kb-cli-e2e search e2e --vault "$VAULT" --top 3 2>&1 | grep -q "e2e测试"; then
  echo "PASS: 未commit编辑可见"
else
  echo "FAIL: 未commit编辑不可见"; FAILS=$((FAILS+1))
fi
rm -f "$TESTFILE"
/tmp/kb-cli-e2e index build --vault "$VAULT" 2>/dev/null
@@ -27,14 +33,16 @@
# 故按「行首路径以 .md 结尾」计数(以实际输出为准的最小适配)。
N=$(/tmp/kb-cli-e2e search 补气 --vault "$VAULT" --top 10 2>/dev/null | grep -cE '^[^[:space:]]+\.md[[:space:]]' || true)
echo "补气 命中 $N 条 (期望 >= 5)"
if [ "$N" -ge 5 ]; then echo "PASS: CJK 召回 >= 5"; else echo "FAIL: CJK 召回不足"; fi
if [ "$N" -ge 5 ]; then echo "PASS: CJK 召回 >= 5"; else echo "FAIL: CJK 召回不足"; FAILS=$((FAILS+1)); fi
echo "=== 5. explore 预算内 ==="
BYTES=$(/tmp/kb-cli-e2e explore "电子秤补气失败" --vault "$VAULT" --top 3 2>/dev/null | wc -c)
echo "explore 输出 ${BYTES} 字节 (上限 32000+尾注)"
if [ "$BYTES" -le 32200 ]; then echo "PASS: explore 预算内"; else echo "FAIL: explore 超预算"; fi
if [ "$BYTES" -le 32200 ]; then echo "PASS: explore 预算内"; else echo "FAIL: explore 超预算"; FAILS=$((FAILS+1)); fi
echo "=== 6. 悬空补全 ==="
/tmp/kb-cli-e2e graph stats --vault "$VAULT" 2>&1 | head -5
echo "=== e2e 验证完成 ==="
# CI 可凭退出码判定:任一检查 FAIL 则非 0
[ "$FAILS" -eq 0 ] || exit "$FAILS"