dramaling-app/sop/scripts/sop_consistency_check.sh

203 lines
5.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# SOP一致性檢查腳本 - 防止工具與SOP脫節
# 使用方法: ./sop_consistency_check.sh
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
# 設定報告檔案
CURRENT_DATE=$(date +"%Y-%m-%d")
CURRENT_TIME=$(date +"%H%M%S")
REPORT_FILE="$PROJECT_ROOT/sop/reports/logs/${CURRENT_DATE}_sop-consistency-check-${CURRENT_TIME}.md"
# 顏色定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'
# 初始化報告檔案
init_report() {
cat > "$REPORT_FILE" << EOF
# SOP一致性檢查報告
## 📊 檢查概要
**檢查日期**: $CURRENT_DATE
**檢查時間**: $(date +"%H:%M:%S")
**執行腳本**: sop/scripts/sop_consistency_check.sh
**檢查範圍**: 全系統SOP工具一致性驗證
## 🔍 檢查結果詳細
EOF
}
# 寫入檢查結果到報告
log_result() {
echo "$1" >> "$REPORT_FILE"
}
# 顯示並記錄
log_and_show() {
echo -e "$1"
echo "$2" >> "$REPORT_FILE"
}
init_report
echo -e "${BLUE}🔍 SOP一致性檢查工具${NC}"
echo "=================================="
echo -e "📄 報告將儲存至: ${YELLOW}$REPORT_FILE${NC}"
echo ""
ISSUES_COUNT=0
# 檢查1: 過時檔案引用
log_and_show "${BLUE}檢查1: 過時檔案引用${NC}" "### 檢查1: 過時檔案引用"
echo "--------------------------------"
log_result ""
# 檢查ISSUES.md引用
ISSUES_MD_REFS=$(grep -r "ISSUES\.md" "$PROJECT_ROOT/sop/" 2>/dev/null | grep -v "archive" | grep -v "sop_consistency_check.sh")
if [ -n "$ISSUES_MD_REFS" ]; then
log_and_show "${RED}❌ 發現工具仍在使用過時的 ISSUES.md${NC}" "**❌ ISSUES.md引用檢查**: 失敗"
log_result ""
log_result "發現以下過時引用:"
log_result '```'
echo "$ISSUES_MD_REFS" >> "$REPORT_FILE"
log_result '```'
ISSUES_COUNT=$((ISSUES_COUNT + 1))
else
log_and_show "${GREEN}✅ 沒有工具使用過時的 ISSUES.md${NC}" "**✅ ISSUES.md引用檢查**: 通過"
fi
# 檢查PROJECTS.md引用
if grep -r "PROJECTS\.md\|PROJECT\.md" "$PROJECT_ROOT/sop/" 2>/dev/null | grep -v "archive" | grep -v "sop_consistency_check.sh"; then
echo -e "${RED}❌ 發現工具仍在使用過時的 PROJECTS.md${NC}"
ISSUES_COUNT=$((ISSUES_COUNT + 1))
else
echo -e "${GREEN}✅ 沒有工具使用過時的 PROJECTS.md${NC}"
fi
echo ""
# 檢查2: 必要檔案存在性
echo -e "${BLUE}檢查2: 必要檔案存在性${NC}"
echo "--------------------------------"
# 檢查TASKS.md
if [ -f "$PROJECT_ROOT/TASKS.md" ]; then
echo -e "${GREEN}✅ TASKS.md 存在${NC}"
else
echo -e "${RED}❌ TASKS.md 不存在${NC}"
ISSUES_COUNT=$((ISSUES_COUNT + 1))
fi
# 檢查CLAUDE.md
if [ -f "$PROJECT_ROOT/sop/docs/CLAUDE.md" ]; then
echo -e "${GREEN}✅ CLAUDE.md 存在${NC}"
else
echo -e "${RED}❌ CLAUDE.md 不存在${NC}"
ISSUES_COUNT=$((ISSUES_COUNT + 1))
fi
# 檢查報告模板
if [ -f "$PROJECT_ROOT/sop/tools/reports/templates/analysis-template.md" ]; then
echo -e "${GREEN}✅ 分析報告模板存在${NC}"
else
echo -e "${RED}❌ 分析報告模板不存在${NC}"
ISSUES_COUNT=$((ISSUES_COUNT + 1))
fi
echo ""
# 檢查3: 目錄結構
echo -e "${BLUE}檢查3: 目錄結構完整性${NC}"
echo "--------------------------------"
REQUIRED_DIRS=(
"sop/tools/reports/templates"
"sop/tools/reports/analysis"
"sop/tools/reports/decision"
"sop/reports/analysis"
"sop/reports/decision"
"sop/reports/logs"
"sop/scripts"
"sop/archive"
)
for dir in "${REQUIRED_DIRS[@]}"; do
if [ -d "$PROJECT_ROOT/$dir" ]; then
echo -e "${GREEN}$dir 存在${NC}"
else
echo -e "${RED}$dir 不存在${NC}"
ISSUES_COUNT=$((ISSUES_COUNT + 1))
fi
done
echo ""
# 檢查4: 工具腳本可執行性
echo -e "${BLUE}檢查4: 關鍵工具可執行性${NC}"
echo "--------------------------------"
# 檢查./dl指令
if [ -x "$PROJECT_ROOT/dl" ]; then
echo -e "${GREEN}✅ ./dl 可執行${NC}"
else
echo -e "${RED}❌ ./dl 不可執行或不存在${NC}"
ISSUES_COUNT=$((ISSUES_COUNT + 1))
fi
echo ""
# 總結
log_and_show "${BLUE}檢查總結${NC}" "## 📊 檢查總結"
echo "=================================="
log_result ""
if [ $ISSUES_COUNT -eq 0 ]; then
log_and_show "${GREEN}🎉 所有檢查通過SOP與工具系統一致${NC}" "**結果**: ✅ 所有檢查通過"
log_result ""
log_result "系統狀態良好所有工具與SOP v4.1完全一致。"
# 完成報告
log_result ""
log_result "## 📋 建議行動"
log_result ""
log_result "- 無需立即行動"
log_result "- 建議定期執行此檢查 (每次SOP更新後)"
log_result "- 繼續保持工具與SOP的一致性"
echo -e "📄 詳細檢查報告已儲存至: ${YELLOW}$REPORT_FILE${NC}"
exit 0
else
log_and_show "${RED}⚠️ 發現 $ISSUES_COUNT 個問題,需要修正${NC}" "**結果**: ❌ 發現 $ISSUES_COUNT 個問題"
echo ""
log_result ""
log_result "## 📋 修正建議"
log_result ""
echo -e "${YELLOW}建議執行以下修正:${NC}"
echo "1. 更新過時的工具腳本"
echo "2. 建立缺失的目錄結構"
echo "3. 確認所有引用使用TASKS.md而非ISSUES.md"
echo "4. 重新執行此檢查直到所有問題解決"
log_result "1. **更新過時工具腳本**: 修正所有仍使用 ISSUES.md/PROJECTS.md 的腳本"
log_result "2. **建立缺失目錄**: 確保所有必要的目錄結構存在"
log_result "3. **統一引用標準**: 所有工具改用 TASKS.md 系統"
log_result "4. **驗證修正**: 重新執行檢查直到通過"
log_result ""
log_result "## 📋 後續追蹤"
log_result ""
log_result "- 建議在 TASKS.md 中記錄修正任務"
log_result "- 修正完成後再次執行此檢查"
log_result "- 建立定期檢查機制防止問題復發"
echo -e "📄 詳細檢查報告已儲存至: ${YELLOW}$REPORT_FILE${NC}"
exit 1
fi