68 lines
2.2 KiB
Bash
68 lines
2.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# PD 지시 로그 활성 테이블의 산출물 경로 실존 자동 감사
|
||
|
|
# 신설 근거: 2026-04-17 pm-auditor 감사 Critical C1 + 클라이언트팀 B-1 설계
|
||
|
|
# 관련 규칙: C13 PD 지시 트래킹, C31-1-D 세션 시작 맥락 복원, P26 PM 업무 정확도 보장
|
||
|
|
|
||
|
|
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||
|
|
[ -z "$REPO_ROOT" ] && exit 0
|
||
|
|
|
||
|
|
LOG_DIR="$REPO_ROOT/공유/PD_지시_트래킹"
|
||
|
|
[ ! -d "$LOG_DIR" ] && exit 0
|
||
|
|
|
||
|
|
MISSING_COUNT=0
|
||
|
|
CHECKED_COUNT=0
|
||
|
|
REPORT=""
|
||
|
|
|
||
|
|
# 활성 지시 섹션 파싱: "## 활성 지시"와 "## 완료 아카이브" 사이
|
||
|
|
for LOG_FILE in "$LOG_DIR"/*_PD_지시_로그.md; do
|
||
|
|
[ ! -f "$LOG_FILE" ] && continue
|
||
|
|
TEAM=$(basename "$LOG_FILE" _PD_지시_로그.md)
|
||
|
|
|
||
|
|
# awk로 활성 섹션만 추출
|
||
|
|
ACTIVE_SECTION=$(awk '/^## 활성 지시/,/^## 완료 아카이브/' "$LOG_FILE" 2>/dev/null)
|
||
|
|
|
||
|
|
# 테이블 행(| 로 시작)에서 5번째 컬럼(산출물 경로) 추출
|
||
|
|
# 헤더·구분선(-|-|)은 제외
|
||
|
|
PATHS=$(echo "$ACTIVE_SECTION" | awk -F'|' '
|
||
|
|
/^\| *[0-9]/ && NF>=6 {
|
||
|
|
# 5번째 컬럼에서 백틱 감싸진 경로 추출
|
||
|
|
col=$6
|
||
|
|
while (match(col, /`[^`]+`/)) {
|
||
|
|
p = substr(col, RSTART+1, RLENGTH-2)
|
||
|
|
# D:/ 로 시작하는 외부 경로는 스킵
|
||
|
|
if (p !~ /^[A-Z]:/ && p !~ /^http/) {
|
||
|
|
print p
|
||
|
|
}
|
||
|
|
col = substr(col, RSTART+RLENGTH)
|
||
|
|
}
|
||
|
|
}' | sort -u)
|
||
|
|
|
||
|
|
[ -z "$PATHS" ] && continue
|
||
|
|
|
||
|
|
while IFS= read -r P; do
|
||
|
|
[ -z "$P" ] && continue
|
||
|
|
CHECKED_COUNT=$((CHECKED_COUNT + 1))
|
||
|
|
FULL_PATH="$REPO_ROOT/$P"
|
||
|
|
# 디렉토리 경로(/로 끝) or 파일 경로 모두 -e로 확인
|
||
|
|
if [ ! -e "$FULL_PATH" ]; then
|
||
|
|
MISSING_COUNT=$((MISSING_COUNT + 1))
|
||
|
|
REPORT="${REPORT}[${TEAM}] ${P}\n"
|
||
|
|
fi
|
||
|
|
done <<< "$PATHS"
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ "$MISSING_COUNT" -gt 0 ]; then
|
||
|
|
echo ""
|
||
|
|
echo "🚨 [PD 지시 로그 경로 감사] 부재 산출물 ${MISSING_COUNT}/${CHECKED_COUNT}건 감지:"
|
||
|
|
echo -e "$REPORT" | head -20
|
||
|
|
echo ""
|
||
|
|
echo "→ PD 지시 로그 비고란에 '경로 정정 또는 흡수/소실 판정' 갱신 필요"
|
||
|
|
echo "→ dev-auditor·plan-auditor 모드 C 호출 권고"
|
||
|
|
exit 1
|
||
|
|
else
|
||
|
|
if [ "$CHECKED_COUNT" -gt 0 ]; then
|
||
|
|
echo "✅ [PD 지시 로그 경로 감사] ${CHECKED_COUNT}건 전수 실존 확인"
|
||
|
|
fi
|
||
|
|
exit 0
|
||
|
|
fi
|