feat: Meeting AI 통합 - 회의 종료 API 및 AI 회의록 요약 기능 구현

주요 변경사항:
- 회의 종료 API 구현 (POST /api/meetings/{meetingId}/end)
- AI 회의록 통합 요약 기능 구현
- Claude API 연동 및 프롬프트 최적화
- 안건별 요약, 키워드 추출, 결정사항 자동 정리

AI Service (Python):
- Claude 모델 설정: claude-sonnet-4-5-20250929
- 회의록 통합 프롬프트 개선
- AgendaSummary 모델 summary 필드 매핑 수정
- decisions 필드 추가 및 응답 구조 정리
- 입력 데이터 로깅 추가

Meeting Service (Java):
- EndMeetingService AI 통합 로직 구현
- MeetingAnalysis 엔티티 decisions 필드 추가
- AgendaSection opinions 필드 제거
- AI Service 포트 8086으로 설정
- DB 마이그레이션 스크립트 추가 (V7)

테스트 결과:
 회의 종료 API 정상 동작
 AI 응답 검증 (keywords, summary, decisions)
 안건별 요약 및 보류사항 추출
 처리 시간: ~11초, 토큰: ~2,600

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Minseo-Jo
2025-10-29 14:46:41 +09:00
parent 96e09ae83d
commit e30aa5c116
19 changed files with 148 additions and 80 deletions
+1 -1
View File
@@ -137,5 +137,5 @@ azure:
# AI Service Configuration
ai:
service:
url: ${AI_SERVICE_URL:http://localhost:8087}
url: ${AI_SERVICE_URL:http://localhost:8086}
timeout: ${AI_SERVICE_TIMEOUT:30000}
@@ -0,0 +1,58 @@
-- ========================================
-- V7: minutes 테이블에 decisions 추가 및 agenda_sections 리팩토링
-- ========================================
-- 작성일: 2025-10-29
-- 설명:
-- 1. minutes 테이블에 decisions (결정사항) 컬럼 추가
-- 2. agenda_sections 테이블에서 discussions, decisions, opinions를 summary로 통합
-- ========================================
-- 1. minutes 테이블에 decisions 컬럼 추가
-- ========================================
-- 회의 전체 결정사항을 TEXT 형식으로 저장
ALTER TABLE minutes
ADD COLUMN IF NOT EXISTS decisions TEXT;
COMMENT ON COLUMN minutes.decisions IS '회의 전체 결정사항 (회의록 수정 시 입력)';
-- ========================================
-- 2. agenda_sections 테이블 백업 및 데이터 마이그레이션
-- ========================================
-- 기존 데이터 보존을 위한 임시 백업 테이블 생성
CREATE TABLE IF NOT EXISTS agenda_sections_backup AS
SELECT * FROM agenda_sections;
-- ========================================
-- 3. agenda_sections 테이블 컬럼 변경
-- ========================================
-- discussions, decisions, opinions → summary 통합
-- summary 컬럼 추가 (기존 discussions 내용으로 초기화)
ALTER TABLE agenda_sections
ADD COLUMN IF NOT EXISTS summary TEXT;
-- 기존 데이터 마이그레이션: discussions 내용을 summary로 복사
UPDATE agenda_sections
SET summary = COALESCE(discussions, '');
-- 기존 컬럼 삭제
ALTER TABLE agenda_sections
DROP COLUMN IF EXISTS discussions,
DROP COLUMN IF EXISTS decisions,
DROP COLUMN IF EXISTS opinions;
-- 코멘트 추가
COMMENT ON COLUMN agenda_sections.summary IS '안건별 회의록 요약 (사용자가 입력한 회의록 내용을 AI가 요약한 결과)';
-- ========================================
-- 4. 인덱스 및 트리거 유지
-- ========================================
-- 기존 인덱스 및 트리거는 그대로 유지됨
-- ========================================
-- 5. 백업 테이블 정리 안내
-- ========================================
-- agenda_sections_backup 테이블은 수동으로 검증 후 삭제
COMMENT ON TABLE agenda_sections_backup IS 'V7 마이그레이션 백업 - 검증 후 수동 삭제 필요';