#!/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
