dramaling-app/sop/tools/check_reports.sh

184 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# Drama Ling 報告檢查工具
# 用途:檢查報告狀態和統計
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPORTS_DIR="$SCRIPT_DIR/reports"
# 顏色定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
PURPLE='\033[0;35m'
NC='\033[0m'
echo -e "${BLUE}📊 Drama Ling 報告狀態檢查${NC}"
echo "=============================================="
# 檢查報告目錄是否存在
if [ ! -d "$REPORTS_DIR" ]; then
echo -e "${RED}❌ 報告目錄不存在: $REPORTS_DIR${NC}"
exit 1
fi
# 統計報告數量
echo -e "${PURPLE}📈 1. 報告數量統計${NC}"
echo "----------------------------------------"
analysis_count=$(find "$REPORTS_DIR/analysis" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
decisions_count=$(find "$REPORTS_DIR/decisions" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
archive_count=$(find "$REPORTS_DIR/archive" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
echo "📊 分析報告: $analysis_count"
echo "📋 決策記錄: $decisions_count"
echo "📦 已歸檔: $archive_count"
echo "📄 總計: $((analysis_count + decisions_count + archive_count)) 份報告"
echo ""
# 最近的報告
echo -e "${PURPLE}📅 2. 最近的報告${NC}"
echo "----------------------------------------"
echo -e "${BLUE}分析報告:${NC}"
if [ $analysis_count -gt 0 ]; then
find "$REPORTS_DIR/analysis" -name "*.md" -exec basename {} \; 2>/dev/null | sort -r | head -5
else
echo " 無分析報告"
fi
echo ""
echo -e "${BLUE}決策記錄:${NC}"
if [ $decisions_count -gt 0 ]; then
find "$REPORTS_DIR/decisions" -name "*.md" -exec basename {} \; 2>/dev/null | sort -r | head -5
else
echo " 無決策記錄"
fi
echo ""
# 與問題系統的整合狀態
echo -e "${PURPLE}🔗 3. 問題系統整合狀態${NC}"
echo "----------------------------------------"
if [ -f "$SCRIPT_DIR/ISSUES.md" ]; then
linked_reports=$(grep -c "📊.*報告.*\.md" "$SCRIPT_DIR/ISSUES.md")
echo "已連結到問題的報告: $linked_reports"
# 檢查是否有報告未連結到問題系統
total_reports=$((analysis_count + decisions_count))
if [ $total_reports -gt $linked_reports ]; then
echo -e "${YELLOW}⚠️ 有 $((total_reports - linked_reports)) 份報告尚未連結到問題系統${NC}"
else
echo -e "${GREEN}✅ 所有報告都已連結到問題系統${NC}"
fi
else
echo -e "${RED}❌ 找不到 ISSUES.md 檔案${NC}"
fi
echo ""
# 報告命名規範檢查
echo -e "${PURPLE}📝 4. 命名規範檢查${NC}"
echo "----------------------------------------"
naming_issues=0
# 檢查分析報告命名
if [ $analysis_count -gt 0 ]; then
echo "檢查分析報告命名規範..."
find "$REPORTS_DIR/analysis" -name "*.md" 2>/dev/null | while read -r file; do
filename=$(basename "$file")
if [[ ! $filename =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}_.*-analysis\.md$ ]]; then
echo -e "${YELLOW}⚠️ 命名不規範: $filename${NC}"
naming_issues=$((naming_issues + 1))
fi
done
fi
# 檢查決策記錄命名
if [ $decisions_count -gt 0 ]; then
echo "檢查決策記錄命名規範..."
find "$REPORTS_DIR/decisions" -name "*.md" 2>/dev/null | while read -r file; do
filename=$(basename "$file")
if [[ ! $filename =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}_.*-decision\.md$ ]]; then
echo -e "${YELLOW}⚠️ 命名不規範: $filename${NC}"
naming_issues=$((naming_issues + 1))
fi
done
fi
if [ $naming_issues -eq 0 ]; then
echo -e "${GREEN}✅ 所有報告命名規範正確${NC}"
fi
echo ""
# 報告健康度評估
echo -e "${PURPLE}🏥 5. 報告系統健康度${NC}"
echo "----------------------------------------"
health_score=100
# 扣分邏輯
if [ $total_reports -eq 0 ]; then
health_score=$((health_score - 50))
echo -e "${RED}📊 無報告: -50分${NC}"
elif [ $total_reports -lt 3 ]; then
health_score=$((health_score - 20))
echo -e "${YELLOW}📊 報告較少: -20分${NC}"
fi
if [ $total_reports -gt $linked_reports ]; then
missing_links=$((total_reports - linked_reports))
deduction=$((missing_links * 10))
health_score=$((health_score - deduction))
echo -e "${YELLOW}🔗 未連結報告: -${deduction}${NC}"
fi
# 確保分數不為負數
if [ $health_score -lt 0 ]; then
health_score=0
fi
echo ""
echo "🏆 報告系統健康度: $health_score/100"
if [ $health_score -ge 80 ]; then
echo -e "${GREEN}🎉 狀態: 優秀${NC}"
elif [ $health_score -ge 60 ]; then
echo -e "${YELLOW}👍 狀態: 良好${NC}"
elif [ $health_score -ge 40 ]; then
echo -e "${YELLOW}⚠️ 狀態: 需要改進${NC}"
else
echo -e "${RED}🚨 狀態: 需要緊急處理${NC}"
fi
echo ""
# 改進建議
echo -e "${BLUE}💡 改進建議${NC}"
echo "----------------------------------------"
if [ $total_reports -eq 0 ]; then
echo "• 開始建立第一份分析報告"
elif [ $total_reports -lt 3 ]; then
echo "• 增加報告數量,建立完整的問題分析記錄"
fi
if [ $total_reports -gt $linked_reports ]; then
echo "• 將 $((total_reports - linked_reports)) 份未連結報告整合到問題系統"
fi
if [ $naming_issues -gt 0 ]; then
echo "• 修正 $naming_issues 個檔案的命名規範"
fi
if [ $analysis_count -gt 0 ] && [ $decisions_count -eq 0 ]; then
echo "• 考慮建立技術決策記錄,記錄重要決策過程"
fi
echo ""
echo -e "${GREEN}✅ 報告檢查完成${NC}"