#!/bin/bash
# 文件管理系統測試腳本

echo "========================================="
echo "📄 文件管理系統測試"
echo "========================================="
echo ""

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

# 檢查 jq 是否安裝
if ! command -v jq &> /dev/null; then
    echo "⚠️  警告: jq 未安裝，JSON 輸出可能不美觀"
    JQ_CMD="cat"
else
    JQ_CMD="jq"
fi

# 登入取得 Token
echo "🔐 步驟 1: 登入系統..."
LOGIN_RESPONSE=$(curl -s -X POST "${BASE_URL}/auth/login/" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}')

TOKEN=$(echo $LOGIN_RESPONSE | grep -o '"access":"[^"]*' | cut -d'"' -f4)

if [ -z "$TOKEN" ]; then
    echo "❌ 登入失敗！請確認後端服務正在運行"
    echo "回應: $LOGIN_RESPONSE"
    exit 1
fi

echo "✅ 登入成功！Token: ${TOKEN:0:20}..."
echo ""

# 測試文件分類API
echo "📚 步驟 2: 取得文件分類..."
CATEGORIES=$(curl -s -X GET "${BASE_URL}/categories/" \
  -H "Authorization: Bearer $TOKEN")

echo "$CATEGORIES" | $JQ_CMD
CATEGORY_COUNT=$(echo "$CATEGORIES" | grep -o '"id"' | wc -l)
echo "✅ 找到 $CATEGORY_COUNT 個文件分類"
echo ""

# 測試文件範本API
echo "📝 步驟 3: 取得文件範本..."
TEMPLATES=$(curl -s -X GET "${BASE_URL}/templates/" \
  -H "Authorization: Bearer $TOKEN")

echo "$TEMPLATES" | $JQ_CMD
TEMPLATE_COUNT=$(echo "$TEMPLATES" | grep -o '"id"' | wc -l)
echo "✅ 找到 $TEMPLATE_COUNT 個文件範本"
echo ""

# 取得第一個分類ID (政策)
POLICY_CATEGORY_ID=$(echo "$CATEGORIES" | grep -A5 '"name":"policy"' | grep '"id"' | head -1 | grep -o '"[0-9a-f-]*"' | tr -d '"')

echo "📄 步驟 4: 建立測試文件..."
CREATE_RESPONSE=$(curl -s -X POST "${BASE_URL}/documents/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"title\": \"測試資訊安全政策\",
    \"category\": \"$POLICY_CATEGORY_ID\",
    \"content\": \"# 測試政策\\n\\n這是一個測試文件內容。\\n\\n## 目的\\n確保系統功能正常運作。\",
    \"summary\": \"這是一個用於測試的資訊安全政策文件\",
    \"review_cycle_months\": 12,
    \"control_numbers\": [\"A.5.1\", \"A.5.2\"]
  }")

echo "$CREATE_RESPONSE" | $JQ_CMD
DOC_ID=$(echo "$CREATE_RESPONSE" | grep -o '"id":"[^"]*' | cut -d'"' -f4)

if [ -z "$DOC_ID" ]; then
    echo "❌ 文件建立失敗"
    exit 1
fi

echo "✅ 文件建立成功！ID: $DOC_ID"
echo ""

# 測試文件詳情
echo "🔍 步驟 5: 查看文件詳情..."
DETAIL=$(curl -s -X GET "${BASE_URL}/documents/${DOC_ID}/" \
  -H "Authorization: Bearer $TOKEN")

echo "$DETAIL" | $JQ_CMD
echo "✅ 文件詳情取得成功"
echo ""

# 測試提交審查
echo "📋 步驟 6: 提交文件審查..."
REVIEW_RESPONSE=$(curl -s -X POST "${BASE_URL}/documents/${DOC_ID}/submit_for_review/" \
  -H "Authorization: Bearer $TOKEN")

echo "$REVIEW_RESPONSE" | $JQ_CMD
echo "✅ 文件已提交審查"
echo ""

# 測試核准
echo "✅ 步驟 7: 核准文件..."
APPROVE_RESPONSE=$(curl -s -X POST "${BASE_URL}/documents/${DOC_ID}/approve/" \
  -H "Authorization: Bearer $TOKEN")

echo "$APPROVE_RESPONSE" | $JQ_CMD
echo "✅ 文件已核准"
echo ""

# 測試發布
echo "🚀 步驟 8: 發布文件..."
PUBLISH_RESPONSE=$(curl -s -X POST "${BASE_URL}/documents/${DOC_ID}/publish/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"change_summary":"首次發布測試"}')

echo "$PUBLISH_RESPONSE" | $JQ_CMD
echo "✅ 文件已發布"
echo ""

# 測試簽署
echo "✍️  步驟 9: 簽署文件..."
ACK_RESPONSE=$(curl -s -X POST "${BASE_URL}/documents/${DOC_ID}/acknowledge/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"signature_data":"已閱讀並同意"}')

echo "$ACK_RESPONSE" | $JQ_CMD
echo "✅ 文件已簽署"
echo ""

# 測試統計
echo "📊 步驟 10: 取得統計資料..."
STATS=$(curl -s -X GET "${BASE_URL}/documents/statistics/" \
  -H "Authorization: Bearer $TOKEN")

echo "$STATS" | $JQ_CMD
echo "✅ 統計資料取得成功"
echo ""

# 測試列表
echo "📋 步驟 11: 取得文件列表..."
LIST=$(curl -s -X GET "${BASE_URL}/documents/" \
  -H "Authorization: Bearer $TOKEN")

DOC_COUNT=$(echo "$LIST" | grep -o '"id"' | wc -l)
echo "✅ 找到 $DOC_COUNT 個文件"
echo ""

# 測試待簽署列表
echo "⏳ 步驟 12: 取得待簽署文件..."
PENDING=$(curl -s -X GET "${BASE_URL}/documents/pending_acknowledgment/" \
  -H "Authorization: Bearer $TOKEN")

echo "$PENDING" | $JQ_CMD
echo "✅ 待簽署文件查詢成功"
echo ""

echo "========================================="
echo "🎉 所有測試完成！"
echo "========================================="
echo ""
echo "測試摘要："
echo "  ✅ 文件分類: $CATEGORY_COUNT 個"
echo "  ✅ 文件範本: $TEMPLATE_COUNT 個"
echo "  ✅ 文件總數: $DOC_COUNT 個"
echo "  ✅ 建立文件: $DOC_ID"
echo "  ✅ 工作流測試: 草稿→審查→核准→發布 ✓"
echo "  ✅ 簽署功能: ✓"
echo "  ✅ 統計功能: ✓"
echo ""
echo "🔗 API 端點："
echo "  - 文件分類: ${BASE_URL}/categories/"
echo "  - 文件範本: ${BASE_URL}/templates/"
echo "  - 文件管理: ${BASE_URL}/documents/"
echo "  - 統計資料: ${BASE_URL}/documents/statistics/"
echo ""
