Bläddra i källkod

ci(kb): 知识库校验挂入提交流程(pre-commit hooks + CI可调用入口)

- .githooks/pre-commit:暂存区含知识库变更时强制运行 validate_kb.py,损坏数据阻断提交
- docs/scripts/validate_kb.sh:CI/本地统一校验入口(退出码供阻断)
- docs/scripts/install_git_hooks.sh:core.hooksPath -> .githooks,幂等安装
- 已验证:合法变更 exit 0;损坏 JSON 阻断 exit 1
Xiaogang Liao 1 vecka sedan
förälder
incheckning
7ebf251b5f
3 ändrade filer med 35 tillägg och 0 borttagningar
  1. 13 0
      .githooks/pre-commit
  2. 9 0
      docs/scripts/install_git_hooks.sh
  3. 13 0
      docs/scripts/validate_kb.sh

+ 13 - 0
.githooks/pre-commit

@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+# 知识库提交前校验:暂存区含 docs/参考资料/知识库 变更时自动运行校验脚本。
+# 阻断不合规提交(返回非 0 时 git commit 会失败),可用 git commit --no-verify 跳过。
+set -euo pipefail
+
+ROOT="$(git rev-parse --show-toplevel)"
+KB_DIR="docs/参考资料/知识库"
+VALIDATOR="$ROOT/docs/scripts/validate_kb.py"
+
+if git diff --cached --name-only -- "$KB_DIR" | grep -q .; then
+  echo "[pre-commit] 检测到知识库变更,运行校验: $VALIDATOR"
+  python3 "$VALIDATOR" "$ROOT/$KB_DIR"
+fi

+ 9 - 0
docs/scripts/install_git_hooks.sh

@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+# 安装仓库级 git hooks:将 core.hooksPath 指向 .githooks/,启用提交前知识库校验。
+# 幂等,可重复执行。
+set -euo pipefail
+
+ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+git -C "$ROOT" config core.hooksPath .githooks
+echo "hooksPath -> $(git -C "$ROOT" config core.hooksPath)"
+echo "已启用: $ROOT/.githooks/pre-commit (知识库提交前校验)"

+ 13 - 0
docs/scripts/validate_kb.sh

@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+# 知识库质量校验统一入口(CI 与本地通用)。
+# 用法:
+#   docs/scripts/validate_kb.sh            # 校验默认知识库目录
+#   docs/scripts/validate_kb.sh <目录>     # 校验指定目录
+# 退出码:0=PASS,1=FAIL(供 CI/提交流程阻断)。
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
+KB_DIR="${1:-"$ROOT/docs/参考资料/知识库"}"
+
+python3 "$ROOT/docs/scripts/validate_kb.py" "$KB_DIR"