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