#!/bin/bash

# Drama Ling 合規性檢查工具
# 用途：檢查是否有違反標準流程的檔案和行為
# 使用方法: ./check_compliance.sh

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
REPORTS_DIR="$PROJECT_ROOT/reports"

# 顏色定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'

echo -e "${BLUE}🔍 Drama Ling 合規性檢查${NC}"
echo "=================================="

# 檢查1: 尋找可能手動創建的報告檔案
echo -e "${BLUE}檢查1: 尋找不符合命名規範的報告檔案${NC}"
suspicious_reports=()

if [ -d "$REPORTS_DIR" ]; then
    # 檢查是否有 2024 年份的檔案（應該都是 2025）
    while IFS= read -r -d '' file; do
        if [[ "$file" == *"2024"* ]]; then
            suspicious_reports+=("$file")
        fi
    done < <(find "$REPORTS_DIR" -name "*.md" -print0 2>/dev/null)
    
    # 檢查是否有不符合日期格式的檔案
    while IFS= read -r -d '' file; do
        filename=$(basename "$file")
        if [[ ! "$filename" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}_ ]]; then
            suspicious_reports+=("$file")
        fi
    done < <(find "$REPORTS_DIR" -name "*.md" -not -name "*template*" -print0 2>/dev/null)
fi

if [ ${#suspicious_reports[@]} -eq 0 ]; then
    echo -e "${GREEN}✅ 所有報告檔案都符合命名規範${NC}"
else
    echo -e "${RED}❌ 發現 ${#suspicious_reports[@]} 個可能有問題的檔案:${NC}"
    for file in "${suspicious_reports[@]}"; do
        echo "   - $file"
    done
fi

echo ""

# 檢查2: 驗證報告檔案的日期一致性
echo -e "${BLUE}檢查2: 驗證報告檔案的日期一致性${NC}"
current_date=$(date +"%Y-%m-%d")
date_inconsistencies=()

if [ -d "$REPORTS_DIR" ]; then
    while IFS= read -r -d '' file; do
        if [[ "$file" == *"analysis"* ]] || [[ "$file" == *"decision"* ]]; then
            # 提取檔名中的日期
            filename=$(basename "$file")
            file_date=$(echo "$filename" | grep -o '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}')
            
            if [ -n "$file_date" ]; then
                # 檢查檔案內容中的日期
                if grep -q "分析日期.*$file_date" "$file" 2>/dev/null; then
                    continue
                else
                    date_inconsistencies+=("$file (檔名日期: $file_date)")
                fi
            fi
        fi
    done < <(find "$REPORTS_DIR" -name "*.md" -not -name "*template*" -print0 2>/dev/null)
fi

if [ ${#date_inconsistencies[@]} -eq 0 ]; then
    echo -e "${GREEN}✅ 所有報告的日期都一致${NC}"
else
    echo -e "${RED}❌ 發現 ${#date_inconsistencies[@]} 個日期不一致的檔案:${NC}"
    for file in "${date_inconsistencies[@]}"; do
        echo "   - $file"
    done
fi

echo ""

# 檢查3: 檢查是否有未使用工具創建的檔案
echo -e "${BLUE}檢查3: 檢查檔案創建方式${NC}"
manually_created=()

if [ -d "$REPORTS_DIR" ]; then
    while IFS= read -r -d '' file; do
        if [[ "$file" == *"analysis"* ]] || [[ "$file" == *"decision"* ]]; then
            # 檢查是否包含工具創建的標誌
            if ! grep -q "報告產生.*工具" "$file" 2>/dev/null; then
                manually_created+=("$file")
            fi
        fi
    done < <(find "$REPORTS_DIR" -name "*.md" -not -name "*template*" -print0 2>/dev/null)
fi

if [ ${#manually_created[@]} -eq 0 ]; then
    echo -e "${GREEN}✅ 所有報告都是通過工具創建${NC}"
else
    echo -e "${YELLOW}⚠️  發現 ${#manually_created[@]} 個可能手動創建的檔案:${NC}"
    for file in "${manually_created[@]}"; do
        echo "   - $file"
    done
fi

echo ""

# 檢查4: 檢查 ISSUES.md 的格式一致性
echo -e "${BLUE}檢查4: 檢查 ISSUES.md 格式一致性${NC}"
issues_file="$PROJECT_ROOT/ISSUES.md"

if [ -f "$issues_file" ]; then
    # 檢查日期格式
    inconsistent_dates=$(grep -n "完成日期.*2024" "$issues_file" | wc -l)
    if [ "$inconsistent_dates" -eq 0 ]; then
        echo -e "${GREEN}✅ ISSUES.md 中的日期格式正確${NC}"
    else
        echo -e "${RED}❌ ISSUES.md 中發現 $inconsistent_dates 個 2024 年的日期${NC}"
    fi
else
    echo -e "${RED}❌ 找不到 ISSUES.md 檔案${NC}"
fi

echo ""

# 總結
echo -e "${BLUE}📊 檢查總結${NC}"
echo "=================================="
total_issues=$((${#suspicious_reports[@]} + ${#date_inconsistencies[@]} + ${#manually_created[@]}))

if [ "$total_issues" -eq 0 ]; then
    echo -e "${GREEN}🎉 恭喜！所有檢查都通過，系統符合標準規範${NC}"
    exit 0
else
    echo -e "${YELLOW}⚠️  發現 $total_issues 個潛在問題${NC}"
    echo ""
    echo -e "${BLUE}建議修正措施:${NC}"
    
    if [ ${#suspicious_reports[@]} -gt 0 ]; then
        echo "1. 重新命名不符合規範的報告檔案"
    fi
    
    if [ ${#date_inconsistencies[@]} -gt 0 ]; then
        echo "2. 修正檔案內容中的日期不一致問題"
    fi
    
    if [ ${#manually_created[@]} -gt 0 ]; then
        echo "3. 考慮使用標準工具重新創建手動建立的檔案"
    fi
    
    echo ""
    echo -e "${YELLOW}💡 提醒：請查看 CLAUDE.md 了解正確的工作流程${NC}"
    exit 1
fi