BurningTimesAi/scripts/archive_inbox.sh

52 lines
1.8 KiB
Bash
Raw Normal View History

fix(process): 세션 전환 복원 체계 근본 강화 - 3중 방어 (PD님 조직 생명급 재지시) ## 심층 원인 분석 결과 - Layer 1 (직접): Inbox 이동 시 PD 지시 로그 경로 컬럼 갱신을 별도 수동 수행 → 누락 쉬움 - Layer 2 (구조): 파일 이동(git mv)과 참조 갱신이 독립 트랜잭션 - Layer 3 (전수): 활성 운영 문서 4건에서 추가 부재 경로 발견 (개발팀 1건·기획팀 3건) ## 즉시 시정 (추가 4건 경로 정정) - 개발팀 #26: 2026-04-16_코어코드_git통합_점검 → 공유/소통/완료/ - 기획팀 #27: 2026-04-16_유니티프로젝트_점검_기획팀 → 공유/소통/완료/ - 기획팀 #26: 2026-04-16_하이브리드구조_기획팀의견 → 공유/소통/완료/하이브리드구조_기획실의견 (구 명칭 파일명 보존) - 기획팀 #25: 2026-04-16_프로세스고도화_개선안_기획팀 → 공유/소통/완료/프로세스고도화_개선안_기획실 - verify_log_paths: 18건 전수 실존 확인 (재검증 통과) ## 구조적 3중 방어 장치 신설·편입 1. **예방 — scripts/archive_inbox.sh 신설**: Inbox 파일 이동 + PD 지시 로그 경로 자동 정정 + verify 검증을 단일 트랜잭션으로 수행. 수동 git mv/sed 금지 2. **감지 1 — SessionStart hook에 verify_log_paths.sh 편입 (기존)**: PD 지시 로그 부재 경로 세션 시작 시 자동 경고 3. **감지 2 — scripts/verify_references.sh 신설 + SessionEnd hook 편입**: 활성 운영 영역(PD 지시 로그·Inbox·조직공지) 참조 무결성 감사. 역사 기록(완료/·대화로그·과거 조직공지)·placeholder·예정 산출물은 명시적 제외 ## 노하우 축적 - memory/feedback_inbox_archive_path_sync.md 확장: 3중 방어 구조·역사 보존 원칙 영구 기록 - "역사 기록 vs 활성 참조" 구분 원칙 확립: 대화로그·완료 아카이브는 작성 당시 경로 보존, 사후 정정하지 않음 ## 세션 전환 복원 보장 검증 - PD 지시 로그 활성 18건 전수 실존 ✅ - 활성 운영 참조 무결성 0건 ✅ - 원격 main = 로컬 HEAD ✅ - SessionStart·SessionEnd hook 8종 정상 등록 ✅ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 08:40:37 +00:00
#!/usr/bin/env bash
# archive_inbox.sh — Inbox 파일 이동 + PD 지시 로그 경로 자동 정정 (단일 트랜잭션)
# 사용: bash scripts/archive_inbox.sh <src_path1> [<src_path2> ...]
# 각 src_path는 공유/소통/ 하위 현재 경로.
# 수행: (1) 파일명 추출 (2) git mv → 공유/소통/완료/ (3) PD 지시 로그 2종에서 경로 sed 치환
# (4) verify_log_paths.sh 재실행하여 부재 경로 0건 확인
# 목적: "Inbox 이동 후 PD 지시 로그 경로 동기화 누락" 재발 구조적 차단 (2026-04-17 실증)
set -euo pipefail
cd "$(dirname "$0")/.."
if [ "$#" -eq 0 ]; then
echo "usage: bash scripts/archive_inbox.sh <src_path1> [<src_path2> ...]" >&2
exit 1
fi
DST_DIR="공유/소통/완료"
mkdir -p "$DST_DIR"
LOG_DEV="공유/PD_지시_트래킹/개발팀_PD_지시_로그.md"
LOG_PLAN="공유/PD_지시_트래킹/기획팀_PD_지시_로그.md"
moved=0
for src in "$@"; do
if [ ! -f "$src" ]; then
echo "⚠️ 파일 없음, 건너뜀: $src" >&2
continue
fi
base=$(basename "$src")
dst="$DST_DIR/$base"
if [ -e "$dst" ]; then
echo "⚠️ 대상 이미 존재, 건너뜀: $dst" >&2
continue
fi
# 이동 (git mv 우선, 실패 시 일반 mv)
git mv "$src" "$dst" 2>/dev/null || mv "$src" "$dst"
echo "✅ 이동: $src$dst"
# PD 지시 로그 경로 정정 (정규식 특수문자 이스케이프는 sed 기본으로 충분)
esc_src=$(printf '%s' "$src" | sed 's|[\\&/]|\\&|g')
esc_dst=$(printf '%s' "$dst" | sed 's|[\\&/]|\\&|g')
sed -i "s|$esc_src|$esc_dst|g" "$LOG_DEV" 2>/dev/null || true
sed -i "s|$esc_src|$esc_dst|g" "$LOG_PLAN" 2>/dev/null || true
moved=$((moved+1))
done
echo ""
echo "📊 총 $moved 건 이동·경로 정정 완료"
echo "🔍 verify_log_paths.sh 재검증:"
bash scripts/verify_log_paths.sh 2>&1 | tail -5