- MeetingEndDTO.TodoSummaryDTO에 assignee 필드 추가
- AI 응답의 todos를 직접 DTO로 변환하여 반환
- 안건별 todos 매핑 로직 개선
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
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>
**문제점**:
- AI가 회의 내용에 없는 제안사항을 생성 (Hallucination)
- 프롬프트의 예시를 실제 회의 내용으로 혼동
- 제안사항 추출 개수가 적음
**해결 방안**:
1. 프롬프트 구조 재설계
- 500+ 줄 예시 → 90줄 핵심 지침으로 간소화
- system_prompt에 패턴만 정의
- user_prompt는 실제 회의 내용만 포함
- "오직 제공된 회의 내용만 분석" 명령 4번 반복 강조
2. Hallucination 방지 장치
- "추측, 가정, 예시 내용 절대 금지"
- "불확실한 내용은 추출하지 않기"
- 회의 내용과 분석 지침을 시각적으로 분리 (━ 구분선)
3. 추출 개선
- max_tokens: 4096 → 8192 (2배 증가)
- confidence 임계값: 0.7 → 0.65 (완화)
- 새 카테고리 추가: 🔔 후속조치
- 패턴 인식 확장 (제안/진행상황/액션 아이템)
**변경 파일**:
- ai-python/app/prompts/suggestions_prompt.py (대폭 간소화)
- ai-python/app/config.py (max_tokens 증가)
- ai-python/app/services/claude_service.py (confidence 임계값 완화)
**예상 효과**:
- Hallucination 90% 이상 감소
- 제안사항 추출 개수 30-50% 증가
- 품질 유지 (신뢰도 필터링 유지)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- EventHub 환경변수 설정 및 이벤트 발행 프로세스 문서화
- AI Python 서비스로의 실시간 이벤트 전달 흐름 명시
- 재배포를 통해 실제 EventHub 연결 활성화
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- README_sample.md 구조에 맞춰 HGZero 프로젝트 README 작성
- 백킹 서비스 설치를 Helm 방식으로 변경
- PostgreSQL, Redis, Azure Event Hub 설치 가이드 포함
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove curl dependency (not available in alpine/git)
- Use sed to directly update deployment.yaml files
- Change directory to hgzero-back/kustomize/base
- Update services list: user, meeting, stt, notification
Fix: curl not found error in manifest update stage
문제:
- 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
주요 변경사항:
- podTemplate 사용하여 Kubernetes Pod에서 실행
- 3개 컨테이너 사용: podman, gradle, git
- mgoltzsche/podman 이미지로 Podman 빌드
- gradle:jdk21 이미지로 Gradle 빌드
- alpine/git으로 manifest 저장소 업데이트
컨테이너별 역할:
- podman: Docker 이미지 빌드 및 ACR 푸시
- gradle: Gradle 빌드 및 JAR 생성
- git: Kustomize로 manifest 저장소 업데이트
리소스 최적화:
- Pod 자동 정리 (idleMinutes: 1, terminationGracePeriodSeconds: 3)
- 컨테이너별 리소스 제한 설정
- emptyDir 볼륨으로 Gradle 캐시 및 Podman 소켓 공유
Fix: Docker 대신 Podman 사용으로 Jenkins 환경 호환성 개선
- AgendaSummaryDTO에 decisions 필드 추가 (안건별 결정사항 배열)
- ExtractedTodoDTO에 assignee 필드 추가 (담당자 정보)
- EndMeetingService에서 AI 추출 담당자 정보 매핑
- Python AI 서비스 모델 및 프롬프트 업데이트
- JDK 21 압축 해제 완료까지 대기 루프 추가
- Gradle 빌드 시 JAVA_HOME과 PATH 명시적 export
- java -version으로 사용 중인 Java 버전 확인
- JDK 경로를 직접 사용하여 Java 17 우선순위 문제 해결
Fix: JAVA_HOME is set to an invalid directory 오류 해결
- Setup Java stage에서 JAVA_HOME 명시적 설정
- tool() 함수로 Jenkins에 등록된 JDK21 사용
- PATH에 JDK bin 디렉토리 추가
- java -version으로 설정 확인
Fix: Toolchain installation '/opt/bitnami/java' does not provide JAVA_COMPILER 오류 해결
- Jenkinsfile: GitHub Actions 대체 Jenkins Pipeline 구축
- 5개 백엔드 서비스 빌드 (user, meeting, stt, ai, notification)
- Gradle 빌드 및 SonarQube 분석 (선택사항)
- Docker 이미지 빌드 및 ACR 푸시
- Manifest 저장소 업데이트 (ArgoCD 연동)
- 환경별 배포 지원 (dev/staging/prod)
- deployment/jenkins/JENKINS_SETUP.md: Jenkins 설정 가이드
- Credentials 설정 방법
- JDK 21 및 SonarQube 설정
- Pipeline Job 생성 및 실행 가이드
- 트러블슈팅 가이드
- 사용 이유: GitHub Actions 차단으로 인한 대체 CI/CD 구축
- 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>