71 lines
2.5 KiB
Bash
71 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# SessionStart hook — PM 자기 업무 맥락 복원
|
|
# 신설 근거: 2026-04-17 C29 위반 사건 (이전 세션 PM 업무 파악 실패)
|
|
# 관련 규칙: P21-5B, P24 읽기 의무, C31 자기검증
|
|
|
|
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
[ -z "$REPO_ROOT" ] && exit 0
|
|
|
|
LOG_ROOT="$REPO_ROOT/공유/대화로그"
|
|
[ ! -d "$LOG_ROOT" ] && exit 0
|
|
|
|
TODAY=$(date +%Y-%m-%d)
|
|
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d 2>/dev/null || date -v-1d +%Y-%m-%d 2>/dev/null)
|
|
|
|
echo ""
|
|
echo "🧠 [PM 맥락 복원] 최근 2일 대화로그 자동 스캔"
|
|
|
|
# 당일 로그 부재 감지 (P24 위반 플래그)
|
|
MISSING_TODAY=0
|
|
for PROJ in "$LOG_ROOT"/*/; do
|
|
PROJ_NAME=$(basename "$PROJ")
|
|
[ "$PROJ_NAME" = "INDEX.md" ] && continue
|
|
if [ -d "$PROJ" ]; then
|
|
TODAY_LOG="$PROJ$TODAY.md"
|
|
if [ ! -f "$TODAY_LOG" ]; then
|
|
# 경로 기반 필터 (2026-04-20 #48 B 집행): 해당 프로젝트 폴더 직접 수정 commit만 경고 대상
|
|
# 구 로직(commit count 기반)은 조직 규칙·hook·feedback 세션에서도 오알람 유발 (feedback_p24_hook_false_positive 근거)
|
|
PROJ_COMMITS=$(git log --since="$TODAY 00:00" --name-only --pretty=format: 2>/dev/null | grep -E "^프로젝트/$PROJ_NAME/|^코어코드/" | wc -l | tr -d ' ')
|
|
if [ "$PROJ_COMMITS" -gt "0" ]; then
|
|
if [ "$MISSING_TODAY" -eq "0" ]; then
|
|
echo "⚠️ P24 위반 감지 — 당일 대화로그 미작성 (프로젝트 폴더 직접 수정 commit 존재):"
|
|
MISSING_TODAY=1
|
|
fi
|
|
echo " - $PROJ_NAME/$TODAY.md (프로젝트 폴더 수정 ${PROJ_COMMITS}건)"
|
|
fi
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# 최근 2일 로그 목록 출력
|
|
echo ""
|
|
echo "📚 최근 2일 대화로그 (Read 권장):"
|
|
FOUND=0
|
|
for PROJ in "$LOG_ROOT"/*/; do
|
|
PROJ_NAME=$(basename "$PROJ")
|
|
[ "$PROJ_NAME" = "INDEX.md" ] && continue
|
|
if [ -d "$PROJ" ]; then
|
|
for DATE in "$TODAY" "$YESTERDAY"; do
|
|
LOG_FILE="$PROJ$DATE.md"
|
|
if [ -f "$LOG_FILE" ]; then
|
|
SIZE=$(wc -c < "$LOG_FILE" 2>/dev/null | tr -d ' ')
|
|
echo " - 공유/대화로그/$PROJ_NAME/$DATE.md (${SIZE}B)"
|
|
FOUND=1
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
|
|
[ "$FOUND" -eq "0" ] && echo " (최근 2일 로그 없음)"
|
|
|
|
# PM 자기 커밋 최근 10건 (맥락 복원 보조)
|
|
echo ""
|
|
echo "📝 최근 커밋 10건 (PM 자기 업무 맥락):"
|
|
git log --oneline -10 2>/dev/null | sed 's/^/ /'
|
|
|
|
echo ""
|
|
echo "→ P21-5B 수행: 위 대화로그를 Read하여 이전 세션 결정·방향 복원"
|
|
echo "→ C31 자기검증: 응답 발신 직전 C27~C30 준수 여부 확인 의무"
|
|
|
|
exit 0
|