#!/bin/bash
# PostToolUse hook (Edit/Write/MultiEdit) — C9-2 일정·기한 표현 자동 감지·환기
# BurningTimes BT9 이식 (2026-04-24 NerdNavis 원본 반영 · PD 결정 5)
# 원본: D:/NerdNavis/NerdNavisAi/scripts/c9_2_block.sh (NerdNavis 방안 8 · 2026-04-23 PD 직접 결정)
# 목적: C9-2 헌법급 위반 패턴 차단 — "수일 내·N분 내·당일·이번 주·데드라인" 등
# 토큰 비용: 0 (키워드 grep만 수행 · 외부 시스템 호출 없음)
#
# 근거: BurningTimes C9-2 일정·기한 표현 금지 (SKILL.md 본문)
#       NerdNavis 조직 실증 사례 계승 — 자동 키워드 감지 환기
#       LLM 자율 준수 한계 → 외부 키워드 스캔으로 진입점 강제

INPUT=$(cat 2>/dev/null)

# Edit·Write·MultiEdit의 new_string·content 본문 추출
BODY=$(echo "$INPUT" | grep -oE '"(new_string|content)"[[:space:]]*:[[:space:]]*"[^"]*"' | head -3)

[ -z "$BODY" ] && exit 0

# C9-2 금지 표현 키워드 카탈로그 (한국어 변형 포함)
# 시간 단위 계획·기한 추정·리드타임 산정 표현
HIT_LIST=""

# 그룹 1 — 주·월 단위
if echo "$BODY" | grep -qE '(이번[[:space:]]*주|다음[[:space:]]*주|이번[[:space:]]*달|다음[[:space:]]*달)'; then
  HIT_LIST="${HIT_LIST}이번주·다음주·이번달·다음달, "
fi

# 그룹 2 — 일 단위 기한
if echo "$BODY" | grep -qE '(당일|익일|수일[[:space:]]*내|수일[[:space:]]*안에)'; then
  HIT_LIST="${HIT_LIST}당일·익일·수일 내, "
fi

# 그룹 3 — 시간·분 단위 기한 (5분 타임아웃 같은 기술 표현 제외)
if echo "$BODY" | grep -qE '([0-9]+[[:space:]]*시간[[:space:]]*내|[0-9]+[[:space:]]*분[[:space:]]*내|[0-9]+[[:space:]]*일[[:space:]]*내(에)?[[:space:]]*(완료|진행|착수|반영))'; then
  HIT_LIST="${HIT_LIST}N시간 내·N분 내·N일 내(기한), "
fi

# 그룹 4 — 일정·데드라인·마감 표현
if echo "$BODY" | grep -qE '(일정상|기한상|데드라인|마감일|마감시간|deadline)'; then
  HIT_LIST="${HIT_LIST}일정상·기한상·데드라인·마감, "
fi

# 그룹 5 — 기간 추정·리드타임
if echo "$BODY" | grep -qE '(리드타임|예상[[:space:]]*소요[[:space:]]*시간|예상[[:space:]]*[0-9]+[[:space:]]*(일|시간|주))'; then
  HIT_LIST="${HIT_LIST}리드타임·예상 소요 시간, "
fi

[ -z "$HIT_LIST" ] && exit 0

# C9-2 허용 예외 — 종속 관계·기술 타임아웃 표현은 제외
# (시간 표현이 있어도 "선행 작업 A 완료 후 착수"·"5분 타임아웃 설정" 같은 컨텍스트는 정상)
# 자동 판별 불가 → 환기 메시지로 PM 자가 점검 요청

cat >&2 <<EOF

⚠️ [BurningTimes C9-2 감지 — 일정 표현 사용 가능성]

감지 키워드: ${HIT_LIST%, }

C9-2 금지 표현 카탈로그:
  - 이번 주·다음 주·이번 달·다음 달
  - 당일·익일·수일 내
  - N시간 내·N분 내·N일 내 (기한 의미)
  - 일정상·기한상·데드라인·마감
  - 기간 추정·리드타임 산정

C9-2 허용 대체 표현:
  - "선행 작업 A 완료 후 착수" (종속 관계)
  - "차단 요인 X 해소 시 착수" (차단 해제 조건)
  - "PD님 승인 시 착수" (의사결정 대기)
  - "현 시점 즉시 착수" (지시 수령 즉시 실행)

C9-2 허용 예외:
  - 인간 작업자 포함 업무 (외부 아티스트·QA 등)
  - PD님 명시 지시 "공수·일정을 고려하라"
  - 순서·종속 서술 ("선행 A 완료 후 B 착수")
  - 기술적 타임아웃 ("5분 타임아웃 설정")

⚠️ PM 자가 점검 의무:
  본 키워드 매칭이 C9-2 위반인지 허용 예외인지 즉시 판별
  위반 시 → 즉시 정정 + 자진 보고 (C3·C9-2 준수)
  허용 예외 시 → 본 환기 무시 가능

근거: BurningTimes C9-2 (SKILL.md 본문) · NerdNavis 방안 8 이식 (2026-04-24 BT9)
한계: 키워드 매칭 정확도 (false positive 가능) · PM 자가 판별 의무

EOF

# PostToolUse는 차단 불가 (이미 실행 후) → exit 0 + stderr 환기만
exit 0
