56 lines
2.1 KiB
Bash
56 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# SessionEnd hook — 세션 종료 시 기록 누락 최종 감사
|
|
# 신설 근거: 2026-04-17 클라이언트팀 B-2-2 설계 + pm-auditor 메타 감사 A-3
|
|
# 관련 규칙: C29-4 업무 완료 후 동기화, P26 PM 업무 정확도 보장
|
|
|
|
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
[ -z "$REPO_ROOT" ] && exit 0
|
|
|
|
TODAY=$(date +%Y-%m-%d)
|
|
ISSUES=""
|
|
|
|
# 1. 당일 커밋 존재 vs 당일 대화로그 존재 대조
|
|
TODAY_COMMITS=$(git log --since="$TODAY 00:00" --oneline 2>/dev/null | wc -l | tr -d ' ')
|
|
|
|
if [ "$TODAY_COMMITS" -gt 0 ]; then
|
|
# 당일 대화로그 파일 하나라도 있는지
|
|
LOG_EXISTS=0
|
|
for PROJ in 조직운영 수상한잡화점 코어프레임워크; do
|
|
if [ -f "$REPO_ROOT/공유/대화로그/$PROJ/$TODAY.md" ]; then
|
|
LOG_EXISTS=1
|
|
break
|
|
fi
|
|
done
|
|
if [ "$LOG_EXISTS" -eq 0 ]; then
|
|
ISSUES="${ISSUES}- 당일 커밋 ${TODAY_COMMITS}건 존재하나 대화로그 0건 (P24 위반 가능성)\n"
|
|
fi
|
|
fi
|
|
|
|
# 2. Live 더미 잔류 검증 (세션 공유 없이 세션 종료 시 경고)
|
|
LIVE_NON_EMPTY=$(find "$REPO_ROOT/.live" -type f -name "*.md" ! -name "README.md" -size +0 2>/dev/null | head -5)
|
|
if [ -n "$LIVE_NON_EMPTY" ]; then
|
|
ISSUES="${ISSUES}- .live/ 더미 파일 잔류: $(echo "$LIVE_NON_EMPTY" | wc -l | tr -d ' ')건. 세션 공유(P21-2) 또는 비우기 권고\n"
|
|
fi
|
|
|
|
# 3. 미커밋 변경사항 잔류
|
|
UNCOMMITTED=$(cd "$REPO_ROOT" && git status --short 2>/dev/null | wc -l | tr -d ' ')
|
|
if [ "$UNCOMMITTED" -gt 0 ]; then
|
|
ISSUES="${ISSUES}- 미커밋 변경사항 ${UNCOMMITTED}건 잔류. 커밋 또는 stash 권고\n"
|
|
fi
|
|
|
|
# 4. PD 지시 로그 경로 감사 실행
|
|
PATH_AUDIT=$(bash "$REPO_ROOT/scripts/verify_log_paths.sh" 2>&1)
|
|
if echo "$PATH_AUDIT" | grep -q "🚨"; then
|
|
ISSUES="${ISSUES}- PD 지시 로그 경로 부재 감지 (verify_log_paths.sh 결과)\n"
|
|
fi
|
|
|
|
if [ -n "$ISSUES" ]; then
|
|
echo ""
|
|
echo "🔍 [SessionEnd 감사] 기록 누락·동기화 미완료 감지:"
|
|
echo -e "$ISSUES"
|
|
echo "→ pm-auditor 모드 B (세션 말미 주기 감사) 호출 권고"
|
|
echo "→ 다음 세션 시작 시 자동 감지되나 본 세션에서 선제 처리 가능"
|
|
fi
|
|
|
|
exit 0
|