2026-04-16 03:01:08 +00:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
# UserPromptSubmit hook용 — HOLD·긴급 파일 변경 감지 경고
|
2026-04-16 06:52:36 +00:00
|
|
|
|
# 기획팀 Phase 3 HOLD 인지 실패 사례(2026-04-15)의 근본 방지
|
2026-04-16 03:01:08 +00:00
|
|
|
|
# C10-3 HOLD 충돌 처리 자동화
|
|
|
|
|
|
|
|
|
|
|
|
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
|
|
|
|
[ -z "$REPO_ROOT" ] && exit 0
|
|
|
|
|
|
|
2026-04-20 15:14:51 +00:00
|
|
|
|
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
|
2026-04-16 03:01:08 +00:00
|
|
|
|
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
|
|
|
|
|
HOLD_HASH_FILE="$THROTTLE_DIR/hold_files_hash"
|
|
|
|
|
|
|
2026-04-16 03:19:04 +00:00
|
|
|
|
# 현재 HOLD·긴급 파일 목록 수집 (자기 부서 + 소통 허브 inbox)
|
2026-04-16 03:01:08 +00:00
|
|
|
|
HOLD_FILES=$(find "$REPO_ROOT" -maxdepth 2 \( -name '🛑_*' -o -name '⚠️_*' -o -name '🚨_*' \) 2>/dev/null | sort)
|
|
|
|
|
|
|
2026-04-16 03:19:04 +00:00
|
|
|
|
# 소통 허브 inbox의 HOLD·긴급 파일도 스캔 (타 부서 HOLD 양방향 전파)
|
|
|
|
|
|
CURRENT_DIR=$(pwd)
|
|
|
|
|
|
INBOX_DIRS=""
|
|
|
|
|
|
case "$CURRENT_DIR" in
|
2026-04-16 06:52:36 +00:00
|
|
|
|
*개발팀*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→개발팀 $REPO_ROOT/공유/소통/기획팀→개발팀" ;;
|
|
|
|
|
|
*기획팀*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→기획팀 $REPO_ROOT/공유/소통/개발팀→기획팀" ;;
|
|
|
|
|
|
*) INBOX_DIRS="$REPO_ROOT/공유/소통/개발팀→PM $REPO_ROOT/공유/소통/기획팀→PM" ;;
|
2026-04-16 03:19:04 +00:00
|
|
|
|
esac
|
|
|
|
|
|
for DIR in $INBOX_DIRS; do
|
|
|
|
|
|
if [ -d "$DIR" ]; then
|
|
|
|
|
|
INBOX_HOLD=$(find "$DIR" -maxdepth 1 \( -name '*HOLD*' -o -name '*긴급*' -o -name '*차단*' -o -name '*블로커*' \) 2>/dev/null | sort)
|
|
|
|
|
|
if [ -n "$INBOX_HOLD" ]; then
|
|
|
|
|
|
HOLD_FILES="$HOLD_FILES
|
|
|
|
|
|
$INBOX_HOLD"
|
|
|
|
|
|
fi
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
HOLD_FILES=$(echo "$HOLD_FILES" | grep -v '^$' | sort)
|
|
|
|
|
|
|
2026-04-16 03:01:08 +00:00
|
|
|
|
if [ -z "$HOLD_FILES" ]; then
|
|
|
|
|
|
# HOLD 파일 없음 — 해시 초기화
|
|
|
|
|
|
echo "" > "$HOLD_HASH_FILE"
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
CURRENT_HASH=$(echo "$HOLD_FILES" | sha1sum 2>/dev/null | cut -d' ' -f1)
|
|
|
|
|
|
PREV_HASH=$(cat "$HOLD_HASH_FILE" 2>/dev/null)
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$CURRENT_HASH" != "$PREV_HASH" ]; then
|
|
|
|
|
|
echo "🚨 [HOLD 감지] HOLD·긴급 파일 변경 발견:"
|
|
|
|
|
|
echo "$HOLD_FILES" | while read -r f; do
|
|
|
|
|
|
echo " → $(basename "$f")"
|
|
|
|
|
|
done
|
|
|
|
|
|
echo "$CURRENT_HASH" > "$HOLD_HASH_FILE"
|
|
|
|
|
|
fi
|
|
|
|
|
|
exit 0
|