BurningTimesAi/scripts/inbox_scan.sh

58 lines
2.3 KiB
Bash

#!/bin/bash
# SessionStart hook 확장: 자기 inbox 신규·미처리 파일 자동 알림
# Phase 2 (2026-04-15 PD님 승인) — 공유/소통/ 6축 통신 허브 연동
#
# 부서 판단 규칙 (cwd 기반):
# - /기획실/ 경로 포함 → 기획실
# - /개발실/ 경로 포함 → 개발실
# - 그 외 → PM (루트)
# 각 부서는 자기 수신 inbox 2개를 스캔하며, YAML `status: 완료` 가 아닌 파일만 보고한다.
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CWD=$(pwd -W 2>/dev/null || pwd)
if [[ "$CWD" == *"/기획실/"* ]] || [[ "$CWD" == *"/기획실" ]]; then
ROLE="기획실"
INBOXES=("$REPO_ROOT/공유/소통/PM→기획실" "$REPO_ROOT/공유/소통/개발실→기획실")
elif [[ "$CWD" == *"/개발실/"* ]] || [[ "$CWD" == *"/개발실" ]]; then
ROLE="개발실"
INBOXES=("$REPO_ROOT/공유/소통/PM→개발실" "$REPO_ROOT/공유/소통/기획실→개발실")
else
ROLE="PM"
INBOXES=("$REPO_ROOT/공유/소통/개발실→PM" "$REPO_ROOT/공유/소통/기획실→PM")
fi
TOTAL=0
LINES=""
for INBOX in "${INBOXES[@]}"; do
[ ! -d "$INBOX" ] && continue
CHANNEL=$(basename "$INBOX")
for f in "$INBOX"/*.md; do
[ -e "$f" ] || continue
STATUS=$(grep -m1 "^status:" "$f" 2>/dev/null | sed 's/status:[[:space:]]*//;s/[[:space:]]*$//')
[ "$STATUS" = "완료" ] && continue
SUBJECT=$(grep -m1 "^subject:" "$f" 2>/dev/null | sed 's/subject:[[:space:]]*//;s/[[:space:]]*$//')
FROM=$(grep -m1 "^from:" "$f" 2>/dev/null | sed 's/from:[[:space:]]*//;s/[[:space:]]*$//')
PRIORITY=$(grep -m1 "^priority:" "$f" 2>/dev/null | sed 's/priority:[[:space:]]*//;s/[[:space:]]*$//')
BASENAME=$(basename "$f")
[ -z "$SUBJECT" ] && SUBJECT="(제목 없음)"
[ -z "$FROM" ] && FROM="(발신자 없음)"
[ -z "$PRIORITY" ] && PRIORITY="normal"
[ -z "$STATUS" ] && STATUS="대기"
LINES+=" • [$CHANNEL] $FROM$SUBJECT (prio:$PRIORITY, status:$STATUS) — $BASENAME
"
TOTAL=$((TOTAL + 1))
done
done
if [ $TOTAL -gt 0 ]; then
echo "📬 [Inbox:$ROLE] 미처리 통신 $TOTAL 건 (공유/소통/):"
printf "%b" "$LINES"
echo "→ 처리 후 status: 완료 갱신 + git mv 공유/소통/완료/ + commit·push"
else
echo "📭 [Inbox:$ROLE] 미처리 통신 없음"
fi