feat(ds-flow): Phase 5.4 — pre-commit 增挂 ds-flow 条件闸
.githooks/pre-commit 在原有(红线/SQL/codegen-drift)基础上增挂三道 ds-flow 闸,
条件触发、秒级:
- 原型校验(check-ds):动了 design/prototype/ 才跑
- 跨端同源(check-l1-sync):动了 prototype/ 或 web/{website,usercenter}/ 才跑
- Flutter 颜色单源(check_ds_code --changed):动了 client/lib/*.dart 才跑(只扫改动)
install-hooks.sh 说明同步更新。启用仍是每台机一次性 `bash ci/install-hooks.sh`
(不代跑,改本机 git config;CLAUDE.md 治理章节已注明)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,24 @@ run_check "可移植 SQL 扫描" bash ci/scan-portable-sql.sh
|
|||||||
|
|
||||||
if command -v node >/dev/null 2>&1; then
|
if command -v node >/dev/null 2>&1; then
|
||||||
run_check "codegen 漂移检查" bash ci/check-codegen-drift.sh
|
run_check "codegen 漂移检查" bash ci/check-codegen-drift.sh
|
||||||
|
|
||||||
|
# ── ds-flow 闸(条件触发,秒级)──
|
||||||
|
staged="$(git diff --cached --name-only --diff-filter=ACM)"
|
||||||
|
|
||||||
|
# 原型校验:仅在动了 design/prototype/ 时跑(轻量,扫整个原型)。
|
||||||
|
if printf '%s\n' "$staged" | grep -q '^design/prototype/'; then
|
||||||
|
run_check "原型校验(check-ds)" node design/prototype/tools/check-ds.mjs
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 跨端同源:动了原型 token/图标 或 web token 时跑(防漂移)。
|
||||||
|
if printf '%s\n' "$staged" | grep -qE '^(design/prototype/|web/(website|usercenter)/)'; then
|
||||||
|
run_check "跨端同源(check-l1-sync)" node tools/check-l1-sync.mjs
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Flutter 颜色单源:只扫本次改动的 dart(--changed,快),动了 client/lib 才有意义。
|
||||||
|
if printf '%s\n' "$staged" | grep -q '^client/lib/.*\.dart$'; then
|
||||||
|
run_check "Flutter 颜色单源(check_ds_code)" bash -c 'cd client && node tool/check_ds_code.mjs --changed'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[pre-commit] ✓ 本地闸通过(完整测试见 CI)"
|
echo "[pre-commit] ✓ 本地闸通过(完整测试见 CI)"
|
||||||
|
|||||||
@@ -15,4 +15,5 @@ chmod +x .githooks/* 2>/dev/null || true
|
|||||||
|
|
||||||
echo "✓ 已启用 git hooks(core.hooksPath=.githooks)"
|
echo "✓ 已启用 git hooks(core.hooksPath=.githooks)"
|
||||||
echo " pre-commit 将跑:红线词扫描 · 可移植 SQL 扫描 · codegen 漂移检查"
|
echo " pre-commit 将跑:红线词扫描 · 可移植 SQL 扫描 · codegen 漂移检查"
|
||||||
|
echo " + ds-flow 条件闸(动了原型/web/client 才跑):原型校验 · 跨端同源 · Flutter 颜色单源"
|
||||||
echo " 卸载:git config --unset core.hooksPath"
|
echo " 卸载:git config --unset core.hooksPath"
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ Flutter 已很干净(UI 层零裸 hex),只需收尾。
|
|||||||
- [x] 5.2 原型校验闸 `design/prototype/tools/check-ds.mjs`(照搬 jiu 12 道,按 pangolin 断点/主题裁剪)
|
- [x] 5.2 原型校验闸 `design/prototype/tools/check-ds.mjs`(照搬 jiu 12 道,按 pangolin 断点/主题裁剪)
|
||||||
- [x] 5.3 CI 串起来(`.gitea/workflows/ci.yml` 增补):
|
- [x] 5.3 CI 串起来(`.gitea/workflows/ci.yml` 增补):
|
||||||
原型校验 → 跨端同源 → 代码色单源 → codegen 零 diff(已有)→ 测试含 golden(已有,补 mobile+主题)
|
原型校验 → 跨端同源 → 代码色单源 → codegen 零 diff(已有)→ 测试含 golden(已有,补 mobile+主题)
|
||||||
- [ ] 5.4 启用 pre-commit:`ci/install-hooks.sh` 纳入 onboarding 文档 + CLAUDE.md,
|
- [x] 5.4 启用 pre-commit:`ci/install-hooks.sh` 纳入 onboarding 文档 + CLAUDE.md,
|
||||||
`.githooks/pre-commit` 增挂 `check-ds --changed`(只在动了 `design/prototype/` 时跑,轻量条件触发)
|
`.githooks/pre-commit` 增挂 `check-ds --changed`(只在动了 `design/prototype/` 时跑,轻量条件触发)
|
||||||
- [ ] 5.5 fidelity 像素闸(本地体检,不进 CI):`tools/screens.mjs` 屏注册表 + `tools/fidelity.mjs`
|
- [ ] 5.5 fidelity 像素闸(本地体检,不进 CI):`tools/screens.mjs` 屏注册表 + `tools/fidelity.mjs`
|
||||||
(原型 Chromium 截图 vs Flutter golden pixelmatch,逐屏阈值=实测残差+2pp,两边统一注入 CJK 字体)
|
(原型 Chromium 截图 vs Flutter golden pixelmatch,逐屏阈值=实测残差+2pp,两边统一注入 CJK 字体)
|
||||||
|
|||||||
Reference in New Issue
Block a user