BurningTimesAi/scripts/audit_pattern_analyzer.sh.b...

88 lines
3.3 KiB
Plaintext
Raw Permalink Normal View History

#!/bin/bash
# SessionStart hook + 수동 실행 (인자 `report`)
# C35-10 장기 행동 패턴 분석·개선 사이클
# 2026-04-19 신설 — PD님 직접 지시 "장기적 문제 행동 패턴 분석 + 점진적 개선"
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CALL_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
WARN_DIR="$HOME/.claude/.nerdnavis_warning_ignored"
BYPASS_DIR="$HOME/.claude/.nerdnavis_bypass_log"
# 미해소 경고 건수 집계 (UNRESOLVED - RESOLVED)
UNRESOLVED_NET=0
if [ -d "$WARN_DIR" ]; then
for f in "$WARN_DIR"/*.log; do
[ -f "$f" ] || continue
U=$(grep -c "UNRESOLVED" "$f" 2>/dev/null || echo 0)
R=$(grep -c "RESOLVED" "$f" 2>/dev/null || echo 0)
UNRESOLVED_NET=$((UNRESOLVED_NET + U - R))
done
fi
# 세션 시작 시 미해소 경고 있으면 PD님 환기 출력 (stdout — 세션 컨텍스트 주입)
if [ "$UNRESOLVED_NET" -gt 0 ]; then
echo "🚨 [C35 경고 무시 사례] 미해소 $UNRESOLVED_NET 건 — PD님 우선 보고 대상 (감사 자산 축적)"
echo " 상세: $WARN_DIR/"
echo " PM 후속 조치: 경고 대상 review + pm-auditor 호출 or 사유를 memory/org/feedback_pm_warning_ignored_pattern.md에 기록"
fi
# 월별 패턴 분석 보고서 (월 1일 자동 or 수동 `report` 인자)
MONTH=$(date +%Y_%m)
REPORT="$REPO_ROOT/memory/org/audit_pattern_analysis_${MONTH}.md"
TRIGGER="${1:-auto}"
if [ "$TRIGGER" = "report" ] || { [ "$(date +%d)" = "01" ] && [ ! -f "$REPORT" ]; }; then
{
echo "---"
echo "name: 감사 패턴 월별 분석 ${MONTH/_/-}"
echo "description: pm-auditor 호출·경고 무시·BYPASS 우회 이력 누적 분석. 장기 행동 패턴 기록 + 개선 안건 식별 (C35-10)"
echo "type: audit_pattern"
echo "period: ${MONTH/_/-}"
echo "---"
echo ""
echo "# 감사 패턴 분석 — ${MONTH/_/-}"
echo ""
echo "## pm-auditor 호출 빈도"
if [ -d "$CALL_DIR" ]; then
TOTAL_CALLS=0
for f in "$CALL_DIR"/*.log; do
[ -f "$f" ] || continue
C=$(grep -c "pm-auditor called" "$f" 2>/dev/null || echo 0)
TOTAL_CALLS=$((TOTAL_CALLS + C))
done
echo "- 누적 호출 건수: $TOTAL_CALLS"
fi
echo ""
echo "## 경고 무시 사례 (UNRESOLVED)"
echo "- 미해소 순수 건수: $UNRESOLVED_NET"
if [ -d "$WARN_DIR" ]; then
echo ""
echo "### 최근 UNRESOLVED 샘플 (최대 20건)"
grep "UNRESOLVED" "$WARN_DIR"/*.log 2>/dev/null | head -20
fi
echo ""
echo "## BYPASS 우회 이력"
if [ -d "$BYPASS_DIR" ]; then
BYPASS_COUNT=0
for f in "$BYPASS_DIR"/*.log; do
[ -f "$f" ] || continue
B=$(wc -l < "$f" 2>/dev/null || echo 0)
BYPASS_COUNT=$((BYPASS_COUNT + B))
done
echo "- 누적 우회 건수: $BYPASS_COUNT"
fi
echo ""
echo "## 개선 안건 (PM 수동 기입)"
echo "- (분석 로직 추가 확장 필요 — PM review 후 규칙 개정·감사 체크 강화 안건화)"
echo ""
echo "## 연관"
echo "- C35-9 hook 3층 구조 · C35-10 경고 무시 PD 보고·장기 패턴 분석"
echo "- \`memory/org/feedback_pm_warning_ignored_pattern.md\` (누적 SOT)"
} > "$REPORT"
echo "📊 [감사 패턴] 월별 분석 보고서 생성: $REPORT"
fi
exit 0