#!/bin/bash

# 風險報告功能測試腳本
# 測試風險報告生成相關的 API

echo "=========================================="
echo "ISO 27001 系統 - 風險報告功能測試"
echo "=========================================="
echo ""

BASE_URL="http://localhost:8000/api"

# 檢查後端是否運行
echo "1. 檢查後端服務..."
if curl -s "${BASE_URL}/risks/risks/" > /dev/null; then
    echo "✓ 後端服務正常運行"
else
    echo "✗ 後端服務無法連接，請確保 Django 服務已啟動"
    exit 1
fi
echo ""

# 測試風險趨勢分析 API
echo "2. 測試風險趨勢分析 API..."
TREND_RESPONSE=$(curl -s "${BASE_URL}/risks/risks/risk_trend_analysis/")
if echo "$TREND_RESPONSE" | grep -q "months"; then
    echo "✓ 風險趨勢分析 API 正常"
    echo "   返回數據："
    echo "$TREND_RESPONSE" | python3 -m json.tool 2>/dev/null | head -20
else
    echo "✗ 風險趨勢分析 API 異常"
    echo "   響應：$TREND_RESPONSE"
fi
echo ""

# 測試整體風險評估報告 API
echo "3. 測試整體風險評估報告 API..."
OVERALL_RESPONSE=$(curl -s "${BASE_URL}/risks/risks/overall_risk_report/")
if echo "$OVERALL_RESPONSE" | grep -q "summary"; then
    echo "✓ 整體風險評估報告 API 正常"
    echo "   統計摘要："
    echo "$OVERALL_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(json.dumps(data.get('summary', {}), indent=2, ensure_ascii=False))"
else
    echo "✗ 整體風險評估報告 API 異常"
    echo "   響應：$OVERALL_RESPONSE"
fi
echo ""

# 獲取第一個風險 ID 進行測試
echo "4. 獲取風險列表..."
RISKS_RESPONSE=$(curl -s "${BASE_URL}/risks/risks/")
FIRST_RISK_ID=$(echo "$RISKS_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data[0]['id'] if data else '')" 2>/dev/null)

if [ -n "$FIRST_RISK_ID" ]; then
    echo "✓ 找到風險 ID: $FIRST_RISK_ID"
    echo ""
    
    # 測試個別資產風險報告 API
    echo "5. 測試個別資產風險報告 API (風險 ID: $FIRST_RISK_ID)..."
    ASSET_REPORT=$(curl -s "${BASE_URL}/risks/risks/${FIRST_RISK_ID}/asset_risk_report/")
    if echo "$ASSET_REPORT" | grep -q "risk_info"; then
        echo "✓ 個別資產風險報告 API 正常"
        echo "   風險資訊："
        echo "$ASSET_REPORT" | python3 -c "import sys, json; data=json.load(sys.stdin); info=data.get('risk_info', {}); print(f\"   - 編號: {info.get('risk_number')}\"); print(f\"   - 標題: {info.get('title')}\"); print(f\"   - 等級: {info.get('risk_level')}\"); print(f\"   - 風險值: {info.get('risk_score')}\")"
    else
        echo "✗ 個別資產風險報告 API 異常"
        echo "   響應：$ASSET_REPORT"
    fi
    echo ""
    
    # 測試 PDF 匯出 API
    echo "6. 測試 PDF 匯出 API (風險 ID: $FIRST_RISK_ID)..."
    PDF_RESPONSE=$(curl -s "${BASE_URL}/risks/risks/${FIRST_RISK_ID}/export_pdf/")
    if echo "$PDF_RESPONSE" | grep -q "<!DOCTYPE html>"; then
        echo "✓ PDF 匯出 API 正常 (返回 HTML)"
        echo "   HTML 文件大小: $(echo "$PDF_RESPONSE" | wc -c) bytes"
    else
        echo "✗ PDF 匯出 API 異常"
    fi
    echo ""
else
    echo "✗ 沒有找到風險數據，跳過個別風險報告測試"
    echo "   提示：請先創建一些風險數據"
    echo ""
fi

# 測試前端頁面可訪問性
echo "7. 檢查前端開發服務器..."
if curl -s "http://localhost:3000" > /dev/null 2>&1; then
    echo "✓ 前端開發服務器正常運行"
    echo "   - 訪問 http://localhost:3000/risks 查看風險列表"
    echo "   - 訪問 http://localhost:3000/risks/reports/overall 查看整體報告"
    if [ -n "$FIRST_RISK_ID" ]; then
        echo "   - 訪問 http://localhost:3000/risks/${FIRST_RISK_ID} 查看個別風險報告"
    fi
else
    echo "⚠ 前端開發服務器未運行"
    echo "   提示：請在 frontend 目錄下執行 'npm start' 啟動前端服務"
fi
echo ""

echo "=========================================="
echo "測試完成！"
echo "=========================================="
echo ""
echo "功能列表："
echo "✓ 風險趨勢分析（過去12個月）"
echo "✓ 整體風險評估報告"
echo "✓ 個別資產風險報告"
echo "✓ 風險報告 HTML 匯出"
echo "✓ 圖表視覺化（折線圖、圓餅圖、柱狀圖）"
echo "✓ 風險降低效果分析"
echo "✓ 列印友善設計"
echo ""
echo "開發完成的頁面："
echo "- RiskReport.tsx (個別風險報告)"
echo "- RiskOverallReport.tsx (整體風險報告)"
echo ""
echo "API 端點："
echo "- GET /api/risks/risks/risk_trend_analysis/"
echo "- GET /api/risks/risks/overall_risk_report/"
echo "- GET /api/risks/risks/{id}/asset_risk_report/"
echo "- GET /api/risks/risks/{id}/export_pdf/"
echo ""
