hgzero/test-meeting-ai.sh
Minseo-Jo 143721d106 feat: Meeting Service AI 통합 개발
 구현 완료
- AI Python Service (FastAPI, Claude API, 8087 포트)
  - POST /api/v1/transcripts/consolidate
  - 참석자별 회의록 → AI 통합 분석
  - 키워드/안건별 요약/Todo 추출

- Meeting Service AI 통합
  - EndMeetingService (@Primary)
  - AIServiceClient (RestTemplate, 30초 timeout)
  - AI 분석 결과 저장 (meeting_analysis, todos)
  - 회의 상태 COMPLETED 처리

- DTO 구조 (간소화)
  - ConsolidateRequest/Response
  - MeetingEndDTO
  - Todo 제목만 포함 (담당자/마감일 제거)

📝 기술스택
- Python: FastAPI, anthropic 0.71.0, psycopg2
- Java: Spring Boot, RestTemplate
- Claude: claude-3-5-sonnet-20241022

🔧 주요 이슈 해결
- 포트 충돌: 8086(feature/stt-ai) → 8087(feat/meeting-ai)
- Bean 충돌: @Primary 추가
- YAML 문법: ai.service.url 구조 수정
- anthropic 라이브러리 업그레이드

📚 테스트 가이드 및 스크립트 작성
- claude/MEETING-AI-TEST-GUIDE.md
- test-meeting-ai.sh

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 16:42:09 +09:00

215 lines
6.5 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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