#!/bin/bash
# SessionStart hook — 레포 memory/org/audit_logs/ 를 중앙으로 sync (git pull 직후 최신화)
# 2026-04-20 #48 G 집행 신설. C34-17 sync 4계층 중 "레포 → 중앙" 방향
# 각 PC hostname 폴더만 자기 PC 로그이고 그 외는 다른 PC 로그 (PC 간 공유)

REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0

REPO_AUDIT="$REPO_ROOT/memory/org/audit_logs"
[ ! -d "$REPO_AUDIT" ] && exit 0

CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
[ ! -d "$CENTRAL_AUDIT" ] && exit 0

HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)
[ -z "$HOSTNAME_TAG" ] && HOSTNAME_TAG="unknown"

SUBDIRS=("auditor_calls" "warning_ignored" "bypass_log")

# 자기 PC hostname 폴더: 레포 → 중앙 (unflushed 중앙 변경 대피 후 레포본 복원)
SELF_DIR="$REPO_AUDIT/$HOSTNAME_TAG"
if [ -d "$SELF_DIR" ]; then
  for SUB in "${SUBDIRS[@]}"; do
    CENTRAL_SUB="$CENTRAL_AUDIT/$SUB"
    REPO_SUB="$SELF_DIR/$SUB"
    [ ! -d "$REPO_SUB" ] && continue
    mkdir -p "$CENTRAL_SUB" 2>/dev/null

    for f in "$REPO_SUB"/*.log; do
      [ -f "$f" ] || continue
      BASENAME=$(basename "$f")
      CENTRAL_FILE="$CENTRAL_SUB/$BASENAME"

      # unflushed 중앙 대피: 중앙이 레포보다 최신이고 레포 HEAD 커밋 미반영이면 대피
      if [ -f "$CENTRAL_FILE" ] && [ "$CENTRAL_FILE" -nt "$f" ]; then
        if ! git -C "$REPO_ROOT" log --oneline HEAD -- "memory/org/audit_logs/$HOSTNAME_TAG/$SUB/$BASENAME" 2>/dev/null | grep -q .; then
          CONFLICT="$CENTRAL_AUDIT.conflict-$(date +%Y%m%d_%H%M%S)"
          mkdir -p "$CONFLICT/$SUB" 2>/dev/null
          cp "$CENTRAL_FILE" "$CONFLICT/$SUB/$BASENAME" 2>/dev/null
          echo "⚠️ [Audit Sync Repo→Central] 중앙 unflushed 대피: $CONFLICT/$SUB/$BASENAME" >&2
        fi
      fi
      cp "$f" "$CENTRAL_FILE" 2>/dev/null
    done
  done
fi

exit 0
