92 Commits

Author SHA1 Message Date
djeon
aa2cbf54b4 for merge 2025-10-31 14:55:33 +09:00
djeon
761dddc466 fix: fix event hub error 2025-10-31 14:55:00 +09:00
cyjadela
82c6873450 Fix: 대시보드 조회 API 장소 해결 2025-10-31 14:06:55 +09:00
cyjadela
af53c80439 Fix: meeting 빌드 에러 해결 2025-10-31 13:36:05 +09:00
Cho Yoon Jin
3d6742505a
Merge pull request #64 from hwanny1128/fix/dashboard
Fix: 회의록 목록 조회 API 수정
2025-10-31 13:15:06 +09:00
cyjadela
44f02a2cc6 Fix: 회의록 목록 조회 API 수정 2025-10-31 13:14:18 +09:00
Minseo-Jo
c4bd8064ec 회의 종료 시 AI 응답 처리 개선
- MeetingEndDTO.TodoSummaryDTO에 assignee 필드 추가
- AI 응답의 todos를 직접 DTO로 변환하여 반환
- 안건별 todos 매핑 로직 개선

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 12:52:15 +09:00
Cho Yoon Jin
5515909206
Merge pull request #63 from hwanny1128/fix/dashboard
Fix: dashboard 대시보드 조회 API 수정
2025-10-31 12:13:14 +09:00
cyjadela
ec73def9d1 Fix: 대시보드 조회 내 회의록 로직 수정 2025-10-31 12:12:16 +09:00
cyjadela
1024fbd25d Fix: 회의록 목록 조회 수정 중 2025-10-31 11:48:44 +09:00
Cho Yoon Jin
db16306b06
Merge pull request #62 from hwanny1128/fix/dashboard
Fix: 대시보드 최근 회의 로직 수정
2025-10-31 11:10:25 +09:00
Minseo-Jo
b5159ef74e AI 제안사항 Hallucination 문제 해결 및 추출 개선
주요 변경사항:
1. AI 서비스 설정
   - claude_max_tokens: 8192 → 25000으로 증가 (회의록 통합을 위한 충분한 토큰 확보)
   - AI 서비스 타임아웃: 30초 → 60초로 증가

2. 프롬프트 개선 (consolidate_prompt.py)
   - JSON 생성 전문가 역할 추가
   - JSON 이스케이프 규칙 명시 (큰따옴표, 줄바꿈, 역슬래시)
   - Markdown 볼드체(**) 제거하여 JSON 파싱 오류 방지
   - 문자열 검증 지시사항 추가

3. JSON 파싱 개선 (claude_service.py)
   - 4단계 재시도 전략 구현:
     * 이스케이프되지 않은 개행 문자 자동 수정
     * strict=False 옵션으로 파싱
     * 잘린 응답 복구 시도
     * 제어 문자 제거 후 재시도
   - 디버깅 로깅 강화 (Input/Output Tokens, Stop Reason)
   - 파싱 실패 시 전체 응답을 파일로 저장

4. 회의 종료 로직 개선 (EndMeetingService.java)
   - 통합 회의록 생성 또는 조회 로직 추가 (userId=NULL)
   - Minutes 테이블에 전체 결정사항 저장
   - AgendaSection에 minutesId 정확히 매핑

5. 테스트 데이터 추가
   - AI 회의록 요약 테스트용 SQL 스크립트 작성
   - 3명 참석자, 3개 안건의 현실적인 회의 시나리오

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 11:09:22 +09:00
cyjadela
d647cbc4bb Fix: 대시보드 최근 회의 로직 수정 2025-10-31 11:08:35 +09:00
hjmoons
c00f1b03b9 Fix: PostgreSQL 예약어 'order' 컬럼명 이스케이프 처리
문제:
- PostgreSQL에서 order는 예약어
- INSERT 구문에서 'syntax error at or near "order"' 오류 발생

해결:
- @Column(name = "\"order\"") 로 수정
- SQL 생성 시 "order"로 이스케이프되어 예약어 충돌 방지

영향:
- MinutesSectionEntity INSERT/UPDATE 정상 동작
- 회의 메모 저장 기능 복구

File: meeting/src/main/java/com/unicorn/hgzero/meeting/infra/gateway/entity/MinutesSectionEntity.java:40
2025-10-30 18:54:40 +09:00
Minseo-Jo
7e3f7b9471 fix: AI 회의록 통합 - decisions 필드 및 Todo assignee 필드 추가
- AgendaSummaryDTO에 decisions 필드 추가 (안건별 결정사항 배열)
- ExtractedTodoDTO에 assignee 필드 추가 (담당자 정보)
- EndMeetingService에서 AI 추출 담당자 정보 매핑
- Python AI 서비스 모델 및 프롬프트 업데이트
2025-10-30 18:44:58 +09:00
djeon
e87f916657 fix: user id 저장 추가 (회의시작 API) 2025-10-30 18:43:54 +09:00
Minseo-Jo
0caa1ec3b6 Feat: AI 서비스 통합 및 회의록 기능 개선
- AI 서비스와 Meeting 서비스 통합 개선
  - AgendaSummaryDTO에 decisions 필드 추가 (안건별 결정사항 배열)
  - EndMeetingService에서 AI 서비스 타임아웃 처리 개선
  - AIServiceClient에 상세한 에러 로깅 추가

- 회의록 consolidate 프롬프트 개선
  - Todo 추출 로직 강화 (자연스러운 표현 인식)
  - 안건별 decisions 필드 추가 (대시보드 표시용)
  - 담당자 패턴 인식 개선

- Kubernetes 배포 설정 개선
  - meeting-service.yaml에 AI_SERVICE_URL 환경변수 추가
  - AI_SERVICE_TIMEOUT 설정 추가

- 데이터베이스 관리 SQL 스크립트 추가
  - check-agenda-sections.sql: 안건 섹션 확인
  - cleanup-test-data.sql: 테스트 데이터 정리
  - insert-test-data-final.sql: 최종 테스트 데이터

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 18:07:57 +09:00
djeon
eb8818494f Fix: EventHub 설정 조건 수정으로 실제 이벤트 발행 활성화
문제:
- @ConditionalOnExpression의 SpEL 표현식 오류로 EventHubConfig가 활성화되지 않음
- NoOpEventPublisher가 대신 사용되어 Event Hub로 메시지가 발행되지 않음

해결:
- @ConditionalOnProperty 사용으로 변경
- eventhub.connection-string 속성 존재 여부로 Bean 활성화 제어

영향:
- EventHub 설정이 있을 때 EventHubPublisher가 정상 활성화됨
- 회의 시작/종료, Todo 할당 등의 이벤트가 Event Hub로 발행됨

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 16:24:46 +09:00
Cho Yoon Jin
8f14b2d2dd
Merge pull request #36 from hwanny1128/feat/meeting
Chore: 회의록 수정 - AI 요약 정보 추가
2025-10-29 18:03:16 +09:00
cyjadela
78d72451fa Chore: 회의록 수정 - AI 요약 정보 추가 2025-10-29 17:58:26 +09:00
Minseo-Jo
c68df2f733 포트 설정 통일: ai-python 서비스 8087 포트로 변경
- ai-python/.env: PORT를 8086에서 8087로 변경
- ai-python/.env.example: PORT를 8086에서 8087로 변경
- meeting/application.yml: AI Service 설정 추가 (기본 포트 8087)
- develop/dev/ai-frontend-integration-guide.md: 문서 업데이트 (8087 포트 반영)

목적: 다른 개발자들의 테스트 환경 통일 및 혼란 방지
2025-10-29 17:45:28 +09:00
cyjadela
24c2507927 Fix: 테이블 변경에 따른 에러 해결 2025-10-29 16:49:02 +09:00
cyjadela
b302076e24 Merge branch 'main' of https://github.com/hwanny1128/HGZero into feat/meeting 2025-10-29 16:25:06 +09:00
cyjadela
7ca0200a1e Chore: 기존 회의록 수정 API 사용 X 2025-10-29 16:12:59 +09:00
cyjadela
f1e9565d5b Feat: 회의록 수정 API 개발 2025-10-29 16:06:32 +09:00
cyjadela
7e2094bcbc Chore: 회의록 상세조회 API - db 변경사항 적용 2025-10-29 15:32:00 +09:00
Minseo-Jo
77ad99bdc7 feat: AgendaSection todos JSON 파싱 로직 추가
- ObjectMapper를 사용하여 todos JSON 문자열을 파싱
- TodoJson DTO 클래스 추가
- parseTodosJson() 메서드 구현
- MeetingStatisticsResponse에서 실제 Todo 개수 계산
- 에러 처리 로직 추가 (파싱 실패 시 빈 리스트 반환)

JSON 구조: [{title, assignee, dueDate, description, priority}]

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 15:26:15 +09:00
Minseo-Jo
093b8751d5 fix: Meeting 서비스 컴파일 에러 수정
- MeetingAiController의 메서드 호출 오류 수정
  - getAgendaSectionsByMeeting() -> getAgendaSectionsByMeetingId()로 변경
  - AgendaSection의 todos, pendingItems가 JSON 문자열이므로 null로 처리
  - getSummary() 메서드가 없어 aiSummaryShort 사용
- GitHub Actions 빌드 에러 해결

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 15:22:22 +09:00
Minseo-Jo
6770dd4ad9 Merge feat/meeting-ai into main
회의 종료 API 및 AI 회의록 통합 기능을 main 브랜치에 병합

주요 기능:
- 회의 종료 시 AI 자동 요약 생성
- 안건별 논의사항/결정사항 자동 정리
- 주요 키워드 추출
- Todo 및 보류사항 자동 식별

충돌 해결:
- MinutesSectionEntity: id 필드명으로 통일
- AgendaSection 관련 파일들: feat/meeting-ai 버전 사용
- application.yml: AI Service 포트 8086 설정 유지

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 14:49:37 +09:00
Minseo-Jo
e30aa5c116 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>
2025-10-29 14:46:41 +09:00
cyjadela
d0aa6353da Feat: 회의 중 메모 저장 API 구현 2025-10-29 14:08:27 +09:00
cyjadela
764a620980 Chore: 회의록 상세 조회 API - AgendaSection 업데이트 반영 2025-10-29 13:26:20 +09:00
Minseo-Jo
96e09ae83d fix: AgendaSection opinions 필드 제거 및 DB 마이그레이션 스크립트 추가
- 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>
2025-10-29 11:19:16 +09:00
djeon
3e9dcb8981 fix: enable flyway 2025-10-29 10:51:41 +09:00
cyjadela
77f38abe48 Chore: 회의 시작 API 상태 조건 변경 2025-10-29 10:09:12 +09:00
djeon
01540bca91 push meeting mig sql 2025-10-29 10:05:15 +09:00
Minseo-Jo
621d4c16df 작업 중: Meeting AI 통합 개발 진행 상황 저장 2025-10-29 09:15:23 +09:00
djeon
a0f42bb22d for merge 2025-10-29 06:01:41 +09:00
djeon
44ae9c546f feat: rag용 회의록확정 event 발행 및 meeting 참석자 데이터 삭제 에러 개선 2025-10-29 05:51:01 +09:00
cyjadela
d003e801bb Chore: 회의록 상세 조회 API 실제 데이터 연동 2025-10-28 22:27:31 +09:00
cyjadela
6c005ec923 Feat: 대시보드 조회 API에 생성자 여부 추가 2025-10-28 20:33:27 +09:00
cyjadela
ad76059db6 Fix: minutes_id 충돌 해결 2025-10-28 20:30:41 +09:00
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
cyjadela
9fe3e4f9ae Chore: 회의 예약 API path 변경 2025-10-28 15:43:26 +09:00
cyjadela
ba4dfe2d99 Chore: 회의 종료 API 이벤트 발행 로직 추가 2025-10-28 14:52:50 +09:00
Minseo-Jo
79036128ec feat: Meeting Service AI 통합 API 개발 완료
## 구현 내용
- 참석자별 회의록 조회 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>
2025-10-28 14:22:59 +09:00
cyjadela
91c922fa89 Chore: 대시보드 조회 API todo 필드명 변경 2025-10-28 14:14:22 +09:00
cyjadela
cf9b388127 Feat: Todo 생성 API 구현 2025-10-28 13:36:02 +09:00
Minseo-Jo
92e4863fc7 feat: 회의종료 기능을 위한 DB 스키마 추가
## 변경 내용
- 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로 구분 가능)
- 중복 정보 제거로 데이터 일관성 향상
2025-10-28 11:21:32 +09:00
cyjadela
e09ef19d5e Chore: 회의록 상세조회 API 수정 2025-10-28 11:11:25 +09:00