#!/bin/bash
# post-task-hook.sh - 작업 완료 후 project-map 자동 업데이트
#
# Usage: post-task-hook.sh <task_id> <project_id>
# Example: post-task-hook.sh task-187.1 insuwiki

set -euo pipefail

TASK_ID=${1:-}
PROJECT_ID=${2:-}

if [ -z "$TASK_ID" ] || [ -z "$PROJECT_ID" ]; then
    echo '{"status":"error","message":"Usage: post-task-hook.sh <task_id> <project_id>"}'
    exit 1
fi

WORKSPACE="/home/jay/workspace"
REPORT_PATH="${WORKSPACE}/memory/reports/${TASK_ID}.md"
PROJECT_PATH="${WORKSPACE}/projects/${PROJECT_ID}"
MAP_OUTPUT="${WORKSPACE}/memory/project-maps/${PROJECT_ID}.md"
DRIVE_LOG="${WORKSPACE}/memory/drive-changes/${PROJECT_ID}.jsonl"

# 보고서 존재 확인
if [ ! -f "$REPORT_PATH" ]; then
    echo "{\"status\":\"error\",\"message\":\"Report not found: ${REPORT_PATH}\"}"
    exit 1
fi

# 프로젝트 경로 존재 확인
if [ ! -d "$PROJECT_PATH" ]; then
    echo "{\"status\":\"error\",\"message\":\"Project path not found: ${PROJECT_PATH}\"}"
    exit 1
fi

# 출력 디렉토리 생성
mkdir -p "$(dirname "$MAP_OUTPUT")"

# 변경 파일 추출
EXTRACT_RESULT=$(python3 "${WORKSPACE}/scripts/extract-changed-files.py" "$REPORT_PATH" 2>/dev/null || echo '{"changed_files":[],"deleted_files":[]}')

CHANGED=$(echo "$EXTRACT_RESULT" | python3 -c "
import sys, json
try:
    d = json.load(sys.stdin)
    files = d.get('changed_files', [])
    print(','.join(files))
except Exception:
    print('')
" 2>/dev/null || true)

DELETED=$(echo "$EXTRACT_RESULT" | python3 -c "
import sys, json
try:
    d = json.load(sys.stdin)
    files = d.get('deleted_files', [])
    print(','.join(files))
except Exception:
    print('')
" 2>/dev/null || true)

# project-map incremental 실행
CMD="python3 ${WORKSPACE}/scripts/project-map.py ${PROJECT_PATH} --output ${MAP_OUTPUT} --incremental"
[ -n "$CHANGED" ] && CMD="$CMD --changed-files \"$CHANGED\""
[ -n "$DELETED" ] && CMD="$CMD --deleted-files \"$DELETED\""
[ -f "$DRIVE_LOG" ] && CMD="$CMD --drive-log \"$DRIVE_LOG\""

if eval $CMD 1>/dev/null 2>&1; then
    STATUS="ok"
else
    STATUS="error"
fi

echo "{\"status\":\"${STATUS}\",\"task_id\":\"${TASK_ID}\",\"project\":\"${PROJECT_ID}\",\"changed_count\":$(echo "$CHANGED" | tr ',' '\n' | grep -c . || echo 0),\"deleted_count\":$(echo "$DELETED" | tr ',' '\n' | grep -c . || echo 0)}"
