#!/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