#!/bin/bash

# Meeting AI 통합 테스트 스크립트
# 작성: 이동욱

set -e

echo "=========================================="
echo "Meeting AI 통합 테스트"
echo "=========================================="

# 색상 정의
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 테스트 변수
MEETING_SERVICE="http://localhost:8082"
AI_SERVICE="http://localhost:8087"
USER_ID="test-user-001"
USER_NAME="홍길동"
USER_EMAIL="hong@example.com"

# 1. 서비스 Health Check
echo ""
echo "1️⃣  서비스 Health Check..."
echo "----------------------------------------"

echo -n "AI Python Service (8087): "
if curl -s -f "$AI_SERVICE/health" > /dev/null; then
    echo -e "${GREEN}✓ 정상${NC}"
else
    echo -e "${RED}✗ 실패${NC}"
    echo "AI Python Service가 실행되지 않았습니다."
    exit 1
fi

echo -n "Meeting Service (8082): "
if curl -s -f "$MEETING_SERVICE/actuator/health" > /dev/null; then
    echo -e "${GREEN}✓ 정상${NC}"
else
    echo -e "${RED}✗ 실패${NC}"
    echo "Meeting Service가 실행되지 않았습니다."
    exit 1
fi

# 2. 회의 생성
echo ""
echo "2️⃣  회의 생성..."
echo "----------------------------------------"

MEETING_RESPONSE=$(curl -s -X POST "$MEETING_SERVICE/api/meetings" \
  -H "Content-Type: application/json" \
  -H "X-User-Id: $USER_ID" \
  -H "X-User-Name: $USER_NAME" \
  -H "X-User-Email: $USER_EMAIL" \
  -d '{
    "title": "AI 통합 테스트 회의",
    "purpose": "Meeting AI 기능 테스트",
    "scheduledAt": "2025-10-28T14:00:00",
    "endTime": "2025-10-28T15:00:00",
    "location": "회의실 A",
    "participantIds": ["'$USER_ID'", "user-002"]
  }')

MEETING_ID=$(echo "$MEETING_RESPONSE" | grep -o '"meetingId":"[^"]*"' | cut -d'"' -f4)

if [ -z "$MEETING_ID" ]; then
    echo -e "${RED}✗ 회의 생성 실패${NC}"
    echo "$MEETING_RESPONSE"
    exit 1
fi

echo -e "${GREEN}✓ 회의 생성 성공${NC}"
echo "Meeting ID: $MEETING_ID"

# 3. 회의 시작
echo ""
echo "3️⃣  회의 시작..."
echo "----------------------------------------"

START_RESPONSE=$(curl -s -X POST "$MEETING_SERVICE/api/meetings/$MEETING_ID/start" \
  -H "X-User-Id: $USER_ID" \
  -H "X-User-Name: $USER_NAME" \
  -H "X-User-Email: $USER_EMAIL")

if echo "$START_RESPONSE" | grep -q '"success":true'; then
    echo -e "${GREEN}✓ 회의 시작 성공${NC}"
else
    echo -e "${RED}✗ 회의 시작 실패${NC}"
    echo "$START_RESPONSE"
    exit 1
fi

# 4. 테스트 데이터 삽입 안내
echo ""
echo "4️⃣  테스트 데이터 준비..."
echo "----------------------------------------"
echo -e "${YELLOW}⚠️  수동 작업 필요${NC}"
echo ""
echo "PostgreSQL에 아래 SQL을 실행해주세요:"
echo ""
echo "psql -h 4.230.48.72 -U hgzerouser -d meetingdb"
echo ""
cat << 'SQL'
INSERT INTO agenda_sections (
    id, minutes_id, meeting_id, agenda_number, agenda_title,
    ai_summary_short, discussions,
    decisions, pending_items, opinions, todos,
    created_at, updated_at
) VALUES
(
    'test-agenda-001', 'test-minutes-001', '여기에_MEETING_ID', 1, '신제품 기획 방향',
    NULL,
    '타겟 고객층을 20-30대 직장인으로 설정하고 UI/UX 개선에 집중하기로 논의했습니다. 모바일 우선 전략을 채택하고, 직관적인 인터페이스 디자인을 최우선 과제로 삼았습니다.',
    '["타겟 고객: 20-30대 직장인", "UI/UX 개선 최우선", "모바일 우선 전략 채택"]'::json,
    '["가격 정책 추가 검토 필요", "경쟁사 벤치마킹 분석"]'::json,
    '[]'::json,
    '[]'::json,
    NOW(), NOW()
),
(
    'test-agenda-002', 'test-minutes-001', '여기에_MEETING_ID', 2, '마케팅 전략 수립',
    NULL,
    'SNS 마케팅과 인플루언서 협업을 통한 브랜드 인지도 제고 방안을 논의했습니다. 인스타그램과 유튜브를 주요 채널로 선정하고, 마이크로 인플루언서 3명과 계약을 진행하기로 결정했습니다.',
    '["SNS 광고 집행 (Instagram, YouTube)", "인플루언서 3명과 계약", "월 500만원 마케팅 예산"]'::json,
    '["최종 예산 승인 대기", "인플루언서 선정 기준 확정"]'::json,
    '[]'::json,
    '[]'::json,
    NOW(), NOW()
);
SQL

echo ""
echo "위 SQL에서 '여기에_MEETING_ID'를 아래 값으로 치환하세요:"
echo -e "${GREEN}$MEETING_ID${NC}"
echo ""
echo -n "데이터 삽입 완료 후 Enter를 누르세요..."
read

# 5. 회의 종료 (핵심 테스트)
echo ""
echo "5️⃣  🔥 회의 종료 API 호출 (AI 통합 테스트)..."
echo "----------------------------------------"

END_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "$MEETING_SERVICE/api/meetings/$MEETING_ID/end" \
  -H "X-User-Id: $USER_ID" \
  -H "X-User-Name: $USER_NAME" \
  -H "X-User-Email: $USER_EMAIL")

HTTP_CODE=$(echo "$END_RESPONSE" | tail -n1)
BODY=$(echo "$END_RESPONSE" | sed '$d')

if [ "$HTTP_CODE" -eq 200 ]; then
    echo -e "${GREEN}✓ 회의 종료 성공 (HTTP $HTTP_CODE)${NC}"
    echo ""
    echo "📊 응답 데이터:"
    echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY"

    # 주요 데이터 추출
    AGENDA_COUNT=$(echo "$BODY" | grep -o '"agendaCount":[0-9]*' | cut -d':' -f2)
    TODO_COUNT=$(echo "$BODY" | grep -o '"todoCount":[0-9]*' | cut -d':' -f2)

    echo ""
    echo -e "${GREEN}✅ AI 분석 완료${NC}"
    echo "   - 안건 수: $AGENDA_COUNT"
    echo "   - Todo 수: $TODO_COUNT"
else
    echo -e "${RED}✗ 회의 종료 실패 (HTTP $HTTP_CODE)${NC}"
    echo "$BODY"
    exit 1
fi

# 6. 데이터베이스 검증
echo ""
echo "6️⃣  데이터베이스 결과 확인..."
echo "----------------------------------------"
echo ""
echo "PostgreSQL에서 아래 쿼리로 결과를 확인하세요:"
echo ""
cat << SQL
-- 회의 상태 확인
SELECT meeting_id, title, status, ended_at
FROM meetings
WHERE meeting_id = '$MEETING_ID';

-- AI 분석 결과 확인
SELECT analysis_id, meeting_id, keywords, status, completed_at
FROM meeting_analysis
WHERE meeting_id = '$MEETING_ID';

-- Todo 확인
SELECT todo_id, title, status
FROM todos
WHERE meeting_id = '$MEETING_ID';
SQL

echo ""
echo "=========================================="
echo -e "${GREEN}✅ 통합 테스트 완료!${NC}"
echo "=========================================="
echo ""
echo "📝 체크리스트:"
echo "   ✓ AI Python Service 실행"
echo "   ✓ Meeting Service 실행"
echo "   ✓ 회의 생성"
echo "   ✓ 회의 시작"
echo "   ✓ 회의 종료 + AI 분석"
echo ""
echo "📁 로그 위치:"
echo "   - AI Service: logs/ai-python.log"
echo "   - Meeting Service: meeting/logs/meeting-service.log"
echo ""
