주요 변경사항:
- 회의 종료 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>
- AgendaSection 도메인 및 Entity에서 opinions 필드 제거
- ParticipantOpinion 내부 클래스 삭제
- MeetingAiController 및 AgendaSectionResponse에서 opinions 관련 로직 제거
- agenda_sections 테이블 마이그레이션 SQL 스크립트 추가
* agenda_number: varchar(50) → integer 변환
* decisions, pending_items, todos: text → json 변환
* opinions 컬럼 삭제
- 자동 백업 및 롤백 기능 포함
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
✅ 구현 완료
- 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>
## 구현 내용
- 참석자별 회의록 조회 API (GET /api/meetings/{meetingId}/ai/participant-minutes)
- 안건별 섹션 조회 API (GET /api/meetings/{meetingId}/ai/agenda-sections)
- 회의 통계 조회 API (GET /api/meetings/{meetingId}/ai/statistics)
## DB 스키마 변경
- V4 마이그레이션: agenda_sections 테이블에 todos JSON 컬럼 추가
- AI가 추출한 Todo를 안건별로 저장하는 구조
## 주요 특징
- AI Service가 한 번에 요약 + Todo 추출
- 프로토타입 기반 요구사항 반영 (불필요한 통계 제거)
- Todo 수를 agenda_sections의 todos 컬럼에서 집계
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 변경 내용
- minutes 테이블에 user_id 컬럼 추가 (참석자별 회의록 지원)
* user_id IS NULL: AI 통합 회의록
* user_id IS NOT NULL: 참석자별 회의록
- agenda_sections 테이블 생성 (안건별 AI 요약 저장)
* agenda_number, agenda_title
* ai_summary_short, discussions, decisions (JSON)
* pending_items (JSON), opinions (JSON)
- ai_summaries 테이블 생성 (AI 결과 캐싱)
* summary_type: CONSOLIDATED, TODO_EXTRACTION
* keywords, statistics (JSON)
* processing_time_ms (성능 모니터링)
- todos 테이블 확장 (AI 추출 정보)
* extracted_by: AI, MANUAL
* section_reference: 관련 안건 참조
* extraction_confidence: 0.00~1.00
## 문서
- DB-Schema-회의종료.md: 상세 스키마 문서
- ERD-회의종료.puml: ERD 다이어그램
- 회의종료-개발계획.md: 전체 개발 계획
## 설계 개선
- is_consolidated 컬럼 제거 (user_id로 구분 가능)
- 중복 정보 제거로 데이터 일관성 향상
- 통신업무도메인 문서 수정
- 구현방안 관련자료 및 용어집 추가
- 컴파일된 클래스 파일 업데이트
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
전체 32개 유저스토리를 상세 마크다운 표로 정리
- 전체 유저스토리 목록 (ID, 서비스, 역할, As a/I want to/So that 포함)
- 서비스별 개수 통계 (User 2개, Meeting 16개, AI 9개, STT 2개, Notification 1개)
- 역할별 분류 (생성자 7개, 참석자 19개, 관리자 1개, 시스템 3개)
- v2.4.1 변경사항 (신규 8개, 수정 3개)
- 주요 기능별 매핑 (회의 생명주기, AI 기능, 실시간 협업, 권한 관리)
- 유저스토리 작성 규칙 및 서비스 코드 설명
- 백로그 및 향후 계획
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 목차에 2 depth 하위 항목 추가 (가독성 향상)
- 각 주요 섹션 끝에 "목차로 돌아가기" 링크 추가
- 프로토타입 화면 목록: 02-대시보드 관련 유저스토리 추가 (UFR-USER-020)
- 마크다운 표준 앵커 링크 사용 (#목차)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
회의 종료 화면 정책 명확화 및 실시간 협업 충돌 방지 개선
- UFR-MEET-040: 회의 종료 화면 확인 전용 정책 추가 및 바로 최종 확정 옵션 추가
- UFR-COLLAB-020: 안건 기반 충돌 방지 메커니즘 강화
- UFR-MEET-050: 회의 종료 화면 바로 확정 시나리오 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
1. 최근 회의 그리드 레이아웃 3열로 제한 (가로 폭 완전히 채우도록 개선)
2. 최근 회의에 작성중/확정완료 상태 회의 표시 추가
3. 버튼 표시 규칙 개선:
- 진행중: 참여하기 버튼
- 예정: 버튼 없음 (카드 클릭으로 수정 화면 이동)
- 작성중/확정완료: 버튼 없음 (카드 클릭으로 상세조회 이동)
4. 샘플 데이터에 작성중 회의 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
MVP 스코프 축소(v1.5.2)에 따라 Todo 관리 기능 제거
- 데스크톱 사이드바에서 'Todo 관리' 메뉴 항목 삭제
- 모바일 하단 네비게이션에서 'Todo' 메뉴 항목 삭제
- 회의록 관련 기능만 유지
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 폰트 크기 통일: 다른 화면들(회의종료, 회의록수정, 회의록 상세조회)과 동일한 폰트 크기로 조정
- 회의 기본정보 영역 개선:
* 라벨 너비 고정 (모바일 70px, 데스크톱 100px)
* 라벨과 값 사이 구분선 추가 (border-right)
* 모든 행의 구분선 위치 정렬
- 가독성 향상: align-items를 flex-start로 변경하여 여러 줄 콘텐츠에 대응
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Todo 진행상황 → Todo 리스트 명칭 통일
- Todo 리스트 카드 스타일 개선 (플랫 디자인)
- 관련회의록 카드 클릭 피드백 추가 (hover/active)
- 대시보드 섹션 폰트 사이즈 일관성 확보 (제목 16px, 메타 14px)
- 관련회의록 카드 테두리 및 그림자 스타일 강화
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>