88 lines
3.3 KiB
Bash
88 lines
3.3 KiB
Bash
#!/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
|